'OpenVPN'에 해당되는 글 4

  1. 2009.11.18 OpenVPN 클라이언트 인증서 생성
  2. 2009.07.21 OpenVPN 접속 오류
  3. 2009.07.20 SSH 서버 접근이 안되는 경우가 있음.
  4. 2009.05.14 OpenVPN

OpenVPN 클라이언트 인증서 생성

> vars.bat //이거 안해서 에러 발생
> build-key.bat pantarei
...

OpenVPN 접속 오류

OpenVPN 설치후 서버로 접속은 되었는데 ping 이 되지 않는다.
로그에 이런 에러가 보인다.

Fri Jul 17 14:24:49 2009 Notified TAP-Win32 driver to set a DHCP IP/netmask of 10.8.0.6/255.255.255.252 on interface {4B2B8225-026B-407D-8142-19DB91EAAFD3} [DHCP-serv: 10.8.0.5, lease-time: 31536000]
Fri Jul 17 14:24:49 2009 Successful ARP Flush on interface [17] {4B2B8225-026B-407D-8142-19DB91EAAFD3}
Fri Jul 17 14:24:49 2009 TEST ROUTES: 1/1 succeeded len=1 ret=1 a=0 u/d=up
Fri Jul 17 14:24:49 2009 route ADD 10.8.0.1 MASK 255.255.255.255 10.8.0.5
Fri Jul 17 14:24:49 2009 ROUTE: route addition failed using CreateIpForwardEntry: 하나 이상의 인수가 올바르지 않습니다.   [if_index=17]
Fri Jul 17 14:24:49 2009 Route addition via IPAPI failed
Fri Jul 17 14:24:49 2009 Initialization Sequence Completed

Windows 2008 에서 openvpn-2.0.9-install.exe 으로 설치한 경우임.
openvpn-2.1_rc19-install.exe 로 설치할 것.

SSH 서버 접근이 안되는 경우가 있음.

기업체마다 보안문제때문에 내부 네트워크에 접속하는데 문제가 많다.
외부에서 접속할 수 있는 공인아이피를 할당해 주지 않고, 포트를 열어주지도 않는다.
그래서 원격접속 프로그램을 사용하기도 하고, SSH 터널링을 이용하기도 한다.

Z건설사의 SSH 서버를 더이상 이용할 수가 없어서 OpenVPN을 이용하려는데 회사 SSH서버로 접근이 안된다.
22번 포트로 나가는 것은 되는데 10022번 포트로 나가는 것은 그룹방화벽에서 막아둔거 같다.
  1. 테스트서버에서 10022번 포트로 접속가능하게 해달라.
  2. 우리쪽 포트를 22번으로 변경한다.
  3. 프록시서버나 설정을 사용할 순 없을까?
시간이 없으므로 2번 방법을 사용하기로 한다.

- 고객사 내부에서 22번 포트로 접근은 가능하므로 회사방화벽에서 22번을 오픈하고 이 포트와 SSH서버 포트(10022)로 연결을 하면 어떨까?
물론 22번 포트는 고객사에서만 접근가능하도록 하고.

2014-05-12
담당자에게 문의한 결과 현재 회사 방화벽에서는 포트포워딩이 안됨.
Windows 포트 포워딩으로 처리하거나 별도의 프로그램을 사용한다.

OpenVPN

- 설치는 간단

- 서버가 될 장비에서 키 생성
  1. C:\Program Files\OpenVPN\easy-rsa\openssl.cnf.sample 을 복사해서 openssl.cnf 로 파일명을 바꾼다.
  2. C:\Program Files\OpenVPN\easy-rsa\vars.bat.sample 을 복사해서 vars.bat 로 파일명을 바꾼다. KEY_* 관련 변수를 설정한다.
  3. C:\Program Files\OpenVPN\sample-config\server.ovpn 을 복사해서 C:\Program Files\OpenVPN\config\server.ovpn 에 둔다. 클라이언트는 client.ovpn 파일을 사용한다. 
  4. C:\Program Files\OpenVPN\easy-rsa> vars
    C:\Program Files\OpenVPN\easy-rsa> clean-all
    C:\Program Files\OpenVPN\easy-rsa> build-ca //keys 디렉토리 아래에 ca.crt 와 ca.key 생성된다.
    C:\Program Files\OpenVPN\easy-rsa> build-key-server server //Common Name 을 물어 오면 server 를 입력한다. server.crt 와 server.key 가 생성된다.
    C:\Program Files\OpenVPN\easy-rsa> build-dh //dh1024.pem 가 생성된다. 
  5. //클라이언트에서 사용할 열쇠들을 생성시켜야 하는데 이는 서버에서 (또는 ca.key 가 있는 서버에서) 만든다.
    C:\Program Files\OpenVPN\easy-rsa> build-key openvpn1 //Common Name 은 openvpn1 을 입력한다. 각각 클라이언트마다 서로 다른 Common Name 을 주어야 한다.
    혼선을 피하기 위해 Country Name 과 Common Name 을 제외하고는 동일한 이름으로 한다.

- Configuration - server.ovpn
//../easy-rsa/keys/ca.crt 나 "C:\\Program Files\\OpenVPN\\easy-rsa\\keys\\ca.crt" 처럼 파일 위치만 정확하게 넣어주면 된다.
ca ca.crt //*.ovpn 파일과 같은 디렉토리에 있는 경우
cert server.crt
key server.key
...
dh "C:\\Program Files\\OpenVPN\\easy-rsa\\keys\\dh1024.pem"

- Configuration - client.ovpn
remote 10.20.30.123 1194
...
ca ca.crt
cert openvpn1.crt
key openvpn1.key

- Run
OpenVPN 서버가 방화벽 내부에 들어 있을 경우 UDP/1194 번을 열어 주어야 한다.
Mon Jul 20 07:32:41 2009 11.22.33.44:16959 Control Channel: TLSv1, cipher TLSv1/SSLv3 DHE-RSA-AES256-SHA, 1024 bit RSA
Mon Jul 20 07:32:41 2009 11.22.33.44:16959 [xxxx_test] Peer Connection Initiated with 11.22.33.44:16959
Mon Jul 20 07:32:41 2009 xxxx_test/11.22.33.44:16959 MULTI: Learn: 10.8.0.10 -> xxxx_test/11.22.33.44:16959
Mon Jul 20 07:32:41 2009 xxxx_test/11.22.33.44:16959 MULTI: primary virtual IP for xxxx_test/11.22.33.44:16959: 10.8.0.10
Mon Jul 20 07:32:42 2009 xxxx_test/11.22.33.44:16959 PUSH: Received control message: 'PUSH_REQUEST'
Mon Jul 20 07:32:42 2009 xxxx_test/11.22.33.44:16959 SENT CONTROL [xxxx_test]: 'PUSH_REPLY,route 10.8.0.1,ping 10,ping-restart 120,ifconfig 10.8.0.10 10.8.0.9' (status=1)

- server 측 추가적인 설정
  • client-to-client : 서버에 접속된 다른 클라이언트를 볼 수 있게 한다.
    10.8.0.1 과 10.8.0.10 은 연결 가능, 10.8.0.1 과 10.8.0.12 은 연결 가능, 하지만 10.8.0.10 과 10.8.0.12 는 연결할 수 없다.
    이 옵션을 사용하면 가능해진다.
  • duplicate-cn : 같은 키를 가진 클라이언트의 접속을 허용한다.
    openvpn1 키를 가진 클라이언트가 다른 곳에서 접속하면 연결이 끊어진다.
  • server 항목은 잘 안됨(192.168.0.0 으로 routing 을 추가했는데 cpu 사용량이 100을 채우네.) hp 가 192.168.0.0 에 속해 있어서 그런지....

- client 측 추가적인 설정
  • resolv-retry : infinite 로 설정되어 있으면 계속 접속 시도를 하므로 서버를 나중에 실행시켜도 접속된다.

- 참고