본문 바로가기

Technical/Network

OpenVPN Access Server(1.3.5) 를 적용한 Site-to-Site VPN 접속 환경 구성


이전 글에서는 OpenVPN 패키지를 Linux Server에 설치하고 Server Configuration, 인증키 발급/배포, Client Configuration 및 인증키 복사를 통한 수작업에 의한 VPN 설정과 사용에 대해 정리하였다.

이번 Post에서는 OpenVPN-AS 솔루션을 활용해서 지난 시간에 언급하였던 Site-to-Site 접속까지 구현하고 테스트해 본다. 헷갈리지 말 것은 OpenVPN을 서버에서 운영하는 방법은 크게
 - OpenVPN Server
 - OpenVPN Access Server
의 2가지가 있으며, OpenVPN 환경으로 접속할 수 있는 Client측의 접속방법은
 - OpenVPN Community Client(for Windows/Linux)
 - OpenVPN Access Server Client
 - TunnelBlick(for Mac)
의 3가지 있다는 것(다시 강조하지만 Windows나 Linux 에서 자체 제공하는 PPTP, L2TP등의 VPN client는 적용이 되지 않으며, 동일 클라이언트 내에서는 2개의 OpenVPN Client 중에서 한가지만 설치하여 사용한다)

OpenVPN-AS는 OpenVPN을 운영자가 쉽게 설치하고 운영하도록 다음의 4가지 기능을 동시에 모두 제공하는 솔루션이다.
 - OpenVPN Server
 - Admin Web interface
 - Client Web interface
 - OpenVPN Client Downloads(from Client Web interface, pam 인증키, 서버 접속정보, 로그인 계정 자동 포함)

설치 운영 방법은 설치 대상 장비의 종류나 성격에 따라
Linux Distro(RHEL, Ubuntu, Fedora, CentOS, Debian)로 Bare-metal 또는 VM에 직접 설치 또는
Virtual Alliance(VMware, Hyper-V, Windows WHD) 로 OpenVPN.org에서 제공되는 VM image를 생성하여 사용하는 방법이 있다.

* 이 대목에서 질문하신 분이 있었다. 회사내에 OpenVPN-AS를 깔았지만 사무실 전체가 비공인IP를 쓰기때문에 이 방식을 사용할 수가 없는데 방법이 없느냐고...약간 귀찮지만 방법이 없지는 않다. 회사내에 전산실이나 네트워크관리자가 따로 있다면 커피 한잔에 해결해 주실지도 모르겠다.

 방법은, 외부에서 들어오는 인터넨 회선이 요즘은 거의 IP공유기일테니, 여기서 port forwarding을 설정하면 되겠다. 단, Firewall이 내부네트웍을 보호하고 있다면 사용하는 port를 Exception에 추가해 주어야 할 것이다. Port forwarding을 2개를 등록해야 할 텐데, 하나는 AS Client용 Web 접속을 위한 것(예: 외부port 44444->내부   vpnip:943)과, OpenVPN접속을 위한 것(예: 외부port 44445->내부 vpnip:443)을 공유기 설정을 통해 등록하면 된다.

 이 경우 반드시 접속 전에 OpenVPNTech\config 로 찾아들어 가서 ovpn 파일을 열고 remote a.b.c.d 부분의 ip를  공유기의 공인 ip주소로 고쳐놓아야 한다.

본 테스트에서는 실제 Network 환경을 에뮬레이션하기 위해
1대의 서버(A)와 1대의 클라이언트(B) 컴퓨터와 각각에 VMware(VMware7 on Windows7)를 설치한다.
A에는
 - VM1: Ubuntu 9.10(Ram 512, Cpu1, HDD 10G), 2개의 가상 NIC을 만들고, 모두 Bridging 으로 설정
 - VM2.VM3: VM1과 동일한 설정으로 하되 NIC은 한 개만 생성(Bridging)

B에는
 - Remote 테스트용 클라이언트를 설치할 VM을 대충(Windows XP) 만들고 NIC은 한 개(Bridging)를 생성, 클라이언트측 Local 접속 IP 1개를 할당한다.


전체적인 개념을 도식화 하면 위의 그림과 같다.

1. OpenVPN-AS download & 설치
 http://www.openvpn.net/index.php/access-server/download-openvpn-as.html 에서 download
 dpkg -i openvpn-as-1.3.5-Ubuntu9.amd_64.deb
 * Admin web 접속계정은 편의를 위해 root 로 하자
 * 설치시 License Key를 물어오는데 Skip하고 나중에 등록하자

2. 설치 완료 후 https://localhost:943/admin 으로 Firefox 등을 통해 접속한다. 서버인증키 때문에 경고가 뜨는데 무시하고 접속한다(Firefox에서는 Exception으로 등록). 로그인 화면에서 root와 암호를 입력하면, 이후의 모든 설정은 Web을 통하여 관리가 가능하다.



3. OpenVPN 설정
OpenVPN AS 다운로드시 Sign-in을 하였을 것이다. http://www.openvpn.org 에서 로그인하면 License 를 조회 또는 이메일로 받을 수 있다. 여기서 License Key(2 User용 무료 License)를 복사하고, Configuration 메뉴의 License 를 클릭하여 New License Key에 Paste하고 버튼 클릭

서버측 네트워크를 맨 위의 그림을 참조하여 사용 환경에 맞게 설정한 후, User Permissions 메뉴를 선택하여 Client 접속을 위한 계정을 지정한다. 필요하면 Linux 시스템의 account를 추가하고 vpn 전용의 계정을 생성해 두고, Username 에 등록한 후, Allow Auto-login을 적당히 지정해 준다.

VPN Mode는 내부 Routing을 해야 하므로 Layer 3(routing/NAT) 을 선택하고 저장, VPN Setting 메뉴에서는 위의 그림에서 처럼 OpenVPN서버측의 Local network은 10.5.5.0/24 로 설정하고, Client에 제공할 IP 대역은 10.8.0.0/24로 설정한다(10.0.0.0/8, 172.16.0.0/12, 192.168.0.0/16 범위의 RFC1918 비공인IP대역중에서 네트워크 설계시에 적당히 선정해서 사용하자).

Routing 부분에서 VPN 서버측 Local network에 접속가능하게 설정한다.
 - Should VPN client have access to ....  => Yes, using NAT
 - Specify the private subnets to which... => 10.5.5.0/24
 - Should client internet traffic be routed...=> Yes를 선택하면 Client의 모든 인터넷 접속을 VPN 서버측 네트워크로
                                                               포워딩하므로 Client측 보안성이 최대화된다.
 - Should client be allowed to access...  => Yes

Save Setting 하고, Status Overview 메뉴를 클릭하여 OpenVPN을 Start 한다.

4. 클라이언트 PC에서 https://openvpn설치서버의공인ip:943 로 접속한다. 역시 서버인증키 경고가 뜨는데
무시하고 접속한다.


Default 또는 AutoLogin 중에서 하나를 선택하고, OpenVPN_Installer.exe 를 다운로드하여 설치한다(기존에 OpenVPN Server 용 Client가 설치되어 있다면 uninstall 후 진행하여야 한다).

다음, client.ovpn 파일을 다운로드 받는다. OpenVPN Server 버전과 달리 이 ovpn 파일에는 모든 인증키와 접속 정보가 자동으로 저장되어 여러 모로 사용이 편리하다.

이제 OpenVPN Client가 자동으로 접속을 시도하고 아래 그림처럼 접속아이콘이 바뀌면 성공적으로 OpenVPN AS 서버에 접속이 성공한 것이다.


이제 맨위의 그림대로 OpenVPN 서버측에 ping으로 접속 가능 여부를 확인해보자


<End>