iPhone VPN 연결을 위한 IPSEC 구성 – strongswan


기존에 iPhone의 VPN 연결을 위해서 OpenVpn, SoftEther 등을 통해서 많은 구성을 진행했다.

그러나 최종 결론은 Strongswan을 통한 ipsec 구성을 사용해서 iphone을 연결하는 것이다.

가장 심플하다.

 

구성 현황

내부적으로 구성된 시스템은 위와 같다.

Gateway가 있고, 내부는 private network로 구성되어 있다.

다른 예로 들면 공유기가 있고, 공유기로 500이나, 4500 port로 udp 패킷이 들어오면 vpn server로

port forwarding이 구성되어 있다.

 

원하는 요구 조건은 아래와 같다.

  1. iphone이 ipsec vpn 연결을 하면 dhcp 서버에서 자동으로 IP를 받아서 iphone에 할당
  2. iphone은 할당 받은 내부 ip를 통해 private ip가 할당된 시스템과 통신이 가능해야한다.
  3. vpn server를 통해서 외부로 통신이 가능해야한다.

 

Strongswan 설치

strongswan 설치는 아래 사이트를 통해서 설치를 진행한다.

https://wiki.strongswan.org/projects/strongswan/wiki/InstallationDocumentation

만약에 소스를 통해서 설치한다면 아래 설정을 권장한다.

 

iPhone을 위한 strongswan의 ipsec 설정

ipsec의 기본 설정 파일은 아래 2가지 이다.

  • /etc/strongswan/ipsec.conf
  • /etc/strongswan/ipsec.secrets

ipsec.conf 파일은 ipsec을 어떻게 구성할지에 대한 파일이며, ipsec.secrets은 vpn 연결을 인증하는 정보가 저장되는 파일이다.

 

ipsec.conf 파일은 reft 설정과 right 설정으로 구성된다.

  • reft – vpn 서버가 구동 중인 네트워크에 대한 설정
  • right – 연결될 클라이언트(iPhone)에 대한 설정

 

reft 설정

vpn server는 private network이 192.168.100.0/24로 연결될 것이라고 생각해서 192.168.100.0/24을 입력해야한다고

생각할지 모른다. 그러나 leftsubnet에 192.168.100.0/24이 설정이 가능한 경우는 Gateway 서버이다.

vpn server가 운영하는 서버가 Gateway 서버가 아니기 때문에 “0.0.0.0/0″을 넣는 것이 맞다.

실제로 vpn server가 운영하는 네트워크는 subnet이 연결된 것이 없기 때문이다.

그리고 gateway 내부에 방화벽을 운용하기 때문에 leftfirewall을 “yes”로 설정했다.

 

right 설정

연결할 Client의 정확한 IP가 없고 범용적으로 설정해야하기 때문에 right 연결에는 “%any”로 넣어 모든 IP가 접근이

가능하게 설정한다.

그리고 Client(iPhone)에 설정할 IP는 “%dhcp”를 설정해서 dhcp 서버에서 할당 받은 IP를 Client에게 할당한다.

만약 연결하는 Client(iPhone)에 특정 IP를 할당하고 싶다면 아래와 같이 IP를 입력하면 된다.

 

인증 설정

iPhone에 인증서 없이 “계정”, “암호”, “비밀”을 통해서 IPSec을 구성하고 싶다.

아래 그림은 iPhone에서 IPSec VPN을 설정하는 화면이다.

그래서 아래와 같이 인증을 ipsec.conf에 추가한다.

authby를 “xauthpsk”는 비밀을 xauth라는 인증방식으로 하겠다는 의미이다

 

그럼 최종적인 ipsec.conf 파일의 설정 내용은 아래와 같다.

 

그리고 인증 정보를 넣은 ipsec.secret는 아래와 같이 설정한다.

위와 같이 설정한다면 iPhone vpn 설정에 넣는 내용은 아래와 같다.

 

Strongswan을 통해서 iPhone에 VPN 연결도 쉽게 가능하다.