아이폰으로 집의 네트워크에 VPN으로 접속하려면?

3 minute read

나중에 다시 할 수도 있는 재설치를 위해 기록으로 남겨둔다.

예전에 사용하던 IPTIME 공유기를 가지고 있었다면, 일단 우선적으로 공유기에서 제공하는 VPN 기능을 검토했을 것이다. (그랬으면 쉬웠을텐데..다시 살까?)

일단, 현재 집에서 사용하는 공유기는 Netgear 공유기이다. 이 모델에는 VPN 기능이 제공되지 않는다.

따라서, 검색/ 정보 수집을 통해 PPTPD, OpenVPN, OpenSwan 등을 조사했으며, 공유기 내부에서도 잘 동작한다고 알려진 OpenVPN을 설치하기로 하였다.

우선, OpenVPN에 대한 설치파일/세부 정보는 openvpn.net으로부터 확인할 수 있다. 최초 설치 시도는 CentOS VM상에 yum install을 통해 설치/실행하는 것을 진행하였으나, OpenVPN-AS(Access Server)가 설치가 쉽다는 내용을 접하고, OpenVPN-AS로 급선회하였다.

OpenVPN Server와 달리, AS의 경우 설치 과정이 매우 간단했다. 해당 RPM 설치 후, 모든 설정을 관리자웹 상에서 설정해 주기만 하면 될 뿐만 아니라, 사이트내에 각 기능별 설명들이 기본적으로 표기가 되어 있어서 도움이 되었다. (OpenVPN 서버의 경우, 기본 값들이 무슨 기능을 하는지 주석이 달려있기는 하지만, 다소 설명이 부족하다는 느낌을 받았다.)

  1. 집 네트워크 구성

PC1 -+          | PC2 -+—-+ 공유기 +—-+ ISP 공유기 +—-+ 인터넷 +—-+ 아이폰          | PC3 -+

예전에 케이블 인터넷을 사용했을 경우, ISP 공유기 대신 케이블 모뎀이 위치했고, 내 공유기 설정에서 포트포워딩을 설정해주는 것만으로 집 내부 PC들에 접근이 가능했으나, 이사 후 ISP 제공 공유기가 앞단에 더 존재하게 되어 ISP 공유기 설정도 함께 변경해 줘야만 내부 접근이 가능하게 되었다. (DMZ로 설정하거나, 다른 룰을 추가하거나)

  1. VPN 연결 개요 위의 환경 구성을 바탕으로, VPN을 다음과 같이 환경을 구성하였다.

     +——————————- VPN Tunnel ——————————–+ Linux     –+ (VPNGW)  | NIC#1(e)  | NIC#2      |                 | PC1       –+—-+ 공유기 +—-+ ISP 공유기 +—-+ 인터넷 +—-+ 아이폰 NIC#3      |      NIC#5(e)            NIC#7(e)                                 NIC#9                 |      NIC#6                 NIC#8 PC2       –+ NIC#4

  • e : external

집 내부 공유기 내부에서의 PC들간은 별도의 설정이 없어도 공유기에 연결한 것만으로 NIC#6를 통해 NIC#2, NIC#3, NIC#4끼리 통신할 것이다.

내부에서 외부로 접속하고자 한다면, NIC#5를 거쳐 나갈 것이다. 다만, 위의 경우와 같이 2개의 공유기를 거쳐야 한다면, NIC#5로부터 #8, #7을 거쳐 외부로 나갈 것이다.

Linux를 VPNGW로 삼고, 외부에서 이 Linux를 VPNGW로 접속하여 PC1,2로 연결하도록 하는 것이 목표이다.

  1. OpenVPN-AS 설치 www.openvpn.net에 접속하여, OpenVPN-AS(Access Server)를 다운로드한다. 내 경우는 CentOS용 RPM을 다운로드하였고, 설치하였다.

passwd openvpn

을 실행하여, openvpn 계정의 비밀번호를 변경한다. 그러면, 추후 OpenVPN관리자 계정의 비밀번호로 사용할 수 있게 된다.

설치는 일반 OpenVPN 서버 설치 과정에 비해 OpenVPN-AS 설치 과정이 훨씬 간단했다. (easy-rsa를 사용한 server, client 인증서 생성 등의 과정을 별도로 할 필요가 없다.)

정상적으로 설치가 되었다면, https://vpngw의 비공인 IP:943으로 접속하면, OpenVPN-AS의 관리 페이지가 뜬다. 이 때, 인증서를 신뢰할 수 없다고 뜨면 무시하기를 눌러서 진행하자.

1) 서버용관리 - https://주소:943/admin 2) 클라이언트 - https://주소:943

서버용 페이지에 접속하여 살펴보면, 좌측의 큰 메뉴 기준으로 Status/Configuration/ User Management/Authentication/Tools 메뉴가 존재한다.

이 메뉴들 중, 실제로 내용 수정을 한 페이지 기준으로 기록한다.

  • Status : 별도 수정 항목 없음
  • Configuration
  • License : 기본 라이센스 (2명)
  • Server Network Settings
  • Hostname or IP Address : 내 집에서 달고 나가는 공인 IP (공유기 관리웹에서 확인하거나, 내 IP를 확인해 주는 사이트 등을 통해 확인 가능)
  • Interface and IP Address : NIC#2의 주소 기록
  • VPN Mode : Layer 3 (routing/NAT)
  • VPN Settings
  • Dynamic IP Address Network : Network Address 디폴트값 그대로 사용 (ex - 172.27.224.0)
  • Routing : using NAT
  • Specify private subnet : NIC#2, #3, #4용 (ex - 192.168.1.0/24)

나머지 값들은 기본 값을 그대로 사용해도 된다.

이렇게 서버를 설정하고 나서, 클라이언트의 원활한 설정을 위해 집 내부망에서 아이폰으로 https://주소:943으로 접속해보자. 그러면, 클라이언트를 다운로드할 수 있는 링크가 출력되고, 아이폰의 경우 결국 AppStore에서 OpenVPN 클라이언트를 다운로드할 수 있도록 연결된다.

클라이언트에서 접속한 웹 페이지로부터 하단의 링크를 클릭하면, 직접 profile을 다운로드 할 수 있다. 다운로드한 파일을 OpenVPN 클라이언트에서 열기를 지정해주면, 결국 이 설정 파일은 OpenVPN 클라이언트에 import 되면서, 자동으로 프로파일이 추가된다. (만약, OpenVPN-AS버전이 아니라 Community Edition으로 직접 수동 설치를 진행했다면, 인증서 파일 및 클라이언트 설정파일을 복사/수정하여 client.ovpn 파일을 만들어 주었어야 했을 것이며, opvn 파일 및 인증서 등을 itunes를 사용하여 동기화 해주거나, 이메일로 직접 전송해서 import시켜야 했을 것이다.)

이후, 아이폰의 네트워크를 3G/LTE 등 외부망으로 선택하고, OpenVPN 클라이언트를 통해 접속시도하면, 성공적으로 VPN 접속이 이뤄지는 것을 확인할 수 있다.

IP를 확인해보면, 터널IP를 새로 받은 것을 확인할 수 있으며, telnet 클라이언트를 이용하여 내부망에 있는 PC로 ping을 날려도 정상적으로 동작하는 것을 확인할 수 있다.

Leave a Comment