2015. 1. 10. 10:27

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



Posted by 해비