iOS VPN 정책이 바뀌면서 ipTime의 VPN 기능을 사용할 수 없게 되었다. iOS에서 VPN을 사용할 수 있도록 Raspberry Pi에 L2TP 서버 설정을 한다.
패키지 설치
$ sudo apt-get install openswan xl2tpd ppp lsof rng-tools
네트워크 설정
포트 포워딩
공유기에서 UDP 500, 4500 포트를 Raspberry PI로 포트포워딩 한다.
Raspbian 설정
우선 아래 명령들을 실행한다.
$ sudo -s
# iptables --table nat --append POSTROUTING --jump MASQUERADE
# echo "net.ipv4.ip_forward = 1" | tee -a /etc/sysctl.conf
# echo "net.ipv4.conf.all.accept_redirects = 0" | tee -a /etc/sysctl.conf
# echo "net.ipv4.conf.all.send_redirects = 0" | tee -a /etc/sysctl.conf
# for vpn in /proc/sys/net/ipv4/conf/*; do echo 0 > $vpn/accept_redirects; echo 0 > $vpn/send_redirects; done
# exit
설정이 잘 되어있는지 확인한다.
$ sudo sysctl -p
부팅시에도 설정이 동작하도록 /etc/rc.local 파일에 아래 내용을 추가한다.
for vpn in /proc/sys/net/ipv4/conf/*; do echo 0 > $vpn/accept_redirects; echo 0 > $vpn/send_redirects; done
iptables --table nat --append POSTROUTING --jump MASQUERADE
L2TP 설정
openswan 설정
예제 설정을 복사한다.
$ sudo cp /etc/ipsec.d/examples/l2tp-psk.conf /etc/ipsec.d/l2tp-psk.conf
/etc/ipsec.conf파일을 열어서 맨 마지막에 아래 줄을 추가한다.
include /etc/ipsec.d/l2tp-psk.conf
그리고 protostack 값을 찾아서 아래와 같이 바꾼다.
protostack=netkey
/etc/ipsec.d/l2tp-psk.conf 파일을 열어서 아래 값들을 바꾼다.
conn L2TP-PSK-noNAT
dpddelay=30
dpdtimeout=120
left=
leftprotoport=17/%any
forceencaps=yes
conn passthrough-for-non-l2tp
left=
leftnexthop=<공유기 내부 IP 주소>
/var/lib/openswan/ipsec.secrets.inc 파일을 편집에서 서버 접속시 사용할 비밀문자열을 지정한다.
192.168.1.112 %any: PSK "복잡한문자열"
설정에 문제가 없는지 확한다.
$ sudo ipsec verify
xl2tpd 설정
/etc/xl2tpd/xl2tpd.conf파일을 열어 아래 값들을 바꾼다.
[global]
ipsec saref = yes
[lns default]
ip range = <할당하고 싶은 ip 대역. 192.168.0.201-192.168.0.250>
length bit = yes
require chap = yes
refuse pap = yes
name = <적당한이름. MyVPN>
pppoptfile = /etc/ppp/options.l2tpd.lns
아래와 같은 내용으로 /etc/ppp/options.l2tpd.lns파일을 만든다.
ipcp-accept-local
ipcp-accept-remote
require-mschap-v2
ms-dns 8.8.8.8
ms-dns 8.8.4.4
asyncmap 0
auth
crtscts
lock
idle 1800
mtu 1200
mru 1200
modem
debug
name l2tpd
proxyarp
lcp-echo-interval 30
lcp-echo-failure 4
nodefaultroute
connect-delay 5000
/etc/ppp/chap-secrets 파일을 열어서 접속할 때 사용할 id, 비밀번호를 설정한다.
# Secrets for authentication using CHAP
# client server secret IP addresses
아이디 l2tpd 비밀번호 *
서비스 설정
$ sudo update-rc.d -f ipsec remove
$ sudo update-rc.d ipsec defaults
서비스 재시작
$ sudo /etc/init.d/xl2tpd restart
$ sudo /etc/init.d/ipsec restart