L2TP VPN서버 구축
L2TP 의 장점은 아래 사이트에 자세히 비교가 되어있습니다.
http://kr.giganews.com/vyprvpn/compare-vpn-protocols.html
요약하자면, 보통의 공유기에 내장된 PPTP VPN 보다 보안성이 뛰어나면서 iOS 디바이스에 적용 가능한 유일한 프로토콜!
안드로이드나 PC같은 경우는 OpenVPN 이 더 나을수도 있습니다만 아이폰은... ㅠㅠ;;
L2TP가 설치되는 서버가 방화벽 아래에 있다면 반드시 아래의 포트를 열어 주셔야 합니다.
TCP
|
1701 |
UDP
|
4500 |
UDP
|
500 |
전체 설치 과정
1. 프로그램 설치 2. 설정 2.1 OpenSwan 설정 2.1.1 l2tp-psk.conf 설정 2.1.2 ipsec.conf 설정 2.1.3 ipsec.secrets 설정 2.2 xl2tpd 설정 2.2.1 xl2tpd.conf 설정 2.3 ppp 설정 2.3.1 options.xl2tpd 설정 2.3.2 chap-secrets 설정 3. 서비스 재시작 |
1. 프로그램 설치
apt-get install openswan xl2tpd ppp |
3개의 패키지를 설치 합니다.
2. 설정
2.1 OpenSwan 설정
2.1.1 l2tp-psk.conf 설정
/etc/ipsec.d/l2tp-psk.conf -------------------------
conn L2TP-PSK-NAT rightsubnet=vhost:%priv also=L2TP-PSK-noNAT
conn L2TP-PSK-noNAT authby=secret pfs=no auto=add keyingtries=3 rekey=no dpddelay=10 dpdtimeout=90 dpdaction=clear ikelifetime=8h keylife=1h type=transport left=192.168.0.100 leftprotoport=17/1701 right=%any rightprotoport=17/%any
|
- left=192.168.0.100 이 부분은 현재 자신이 할당받은 IP를 적어준다. (예 : eth0 에 할당되어 있는, 실제 인터넷에 연결된 IP주소)
2.1.2 ipsec.conf 설정
/etc/ipsec.conf ---------------
version 2.0
config setup dumpdir=/var/run/pluto/ nat_traversal=yes virtual_private=%v4:10.0.0.0/8,%v4:192.168.0.0/16,%v4:25.0.0.0/8,!%v4:10.0.1.0/24,%v6:fd00::/8,%v6:fe80::/10 oe=off protostack=netkey
include /etc/ipsec.d/l2tp-psk.conf |
2.1.3 ipsec.secrets 설정
/etc/ipsec.secrets ------------------
192.168.0.100 %any: PSK "secretcode" |
- 앞의 IP주소는 2.1.1 항목과 동일하게 설정, PSK 는 사전 공유된 비밀키 인데 임의로 복잡하게 설정하여 쉽게 알아내거나 유추하지 못하도록 설정 한다.
- VPN 연결 시, 접속하려는 모든 사용자는 이 PSK 코드를 알고 있어야 접속 가능하다.
2.2 xl2tpd 설정
2.2.1 xl2tpd.conf 설정
/etc/ipsec.secrets ------------------
[global]
[lns default] ip range = 10.7.0.2-10.7.0.20 local ip = 10.7.0.1 length bit = yes require chap = yes refuse pap = yes require authentication = yes pppoptfile = /etc/ppp/options.xl2tpd |
- iprange : VPN에 연결된 클라이언트가 할당받을 IP대역입니다.
- local ip : VPN서버 자신이 할당받을 IP 입니다.
2.3 ppp 설정
2.3.1 options.xl2tpd 설정
/etc/ppp/options.xl2tpd ----------------------
require-mschap-v2 ms-dns 168.126.63.1 asyncmap 0 auth crtscts lock hide-password modem debug name l2tpd proxyarp lcp-echo-interval 30 lcp-echo-failure 4
|
2.3.2 chap-secrets 설정
/etc/ppp/chap-secrets -----------------------
# Secrets for authentication using CHAP # client server secret IP addresses user1 l2tpd password1 * user2 l2tpd password2 *
|
- 사용자ID, 서버타입, 암호, IP주소 순으로 나열해서 적어주면된다.
- IP주소에 * 대신 10.7.0.3 이런식으로 할당해서 지정해 놓을수도 있다.
(이 경우, 동일 ID로 2번째 접속한 사람은 중복IP로 인하여, VPN네트워크가 정상적으로 동작하지 않는다.)
3. 서비스 재시작
sudo service xl2tpd start sudo service ipsec start |
- 이미 서비스가 시작되어 있다면, restart 명령어로 재시작 한다.
#. 인터넷 연결을 위해 체크할 사항들
NAT 설정
iptables -t nat -A POSTROUTING -s 10.7.0.0/24 -o eth0 -j MASQUERADE |
포워딩 설정
sysctl -w net.ipv4.ip_forward=1 |
- 리붓시 다시 설정이 필요합니다.
- 인터넷 연결이 안되어 본 명령어 적용시 현재 연결중인 VPN끊고 다시 연결 하셔야 합니다.
- 상세 정보는 아래 링크로 대체 합니다.
http://haebi.kr/entry/iptables를-사용한-인터넷-공유설정
http://haebi.kr/entry/ipv4forwarding-확인-및-설정
1. 아이폰에서 VPN설정 후 연결하여 테스트 진행.
2. VPN연결되면 상단에 VPN 마크가 표시됨.
3. 그런데 인터넷이 안되는 상황 발생...?
4. iptables MASQUERSDE 설정으로 VPN IP에 인터넷 공유가 필요 (아래 링크)
http://haebi.kr/entry/iptables를-사용한-인터넷-공유설정
5. 잘 안된다면 기존의 설정파일을 여기 설정으로 대체 하자!! (기존 파일이 필요할지도 모르니 백업은 알아서들 하시고~)
- [2015.01.12] iOS에서도 해당 어플 설치 시 OpenVPN이 됩니다.
- [2015.01.15] 인터넷 연결시 추가로 확인할 사항을 본 포스트에 추가 하였습니다.
참고 : http://blog.iolate.kr/122