L2TP VPN on CentOS7

지난번의 Strongswan 을 사용한 IPsec VPN을 Scratch로 만들기에 이어서, 이번에는 L2TP VPN 구성에 대해서, 정리 해볼려고 합니다. github 에 올라와 있는 setup script 를 사용할것입니다.

지난 2016년도에 iPhone에서 PPP 기반의 VPN의 지원이 없어지면서, L2TP, IPSec 만 사용할 수 있도록 했었고, 2018년도에 IPtime 공유기를 만드는 업체에서 Firmware update 하면서 5~10user 정도의 L2TP VPN지원이 추가되면서, 사용할 수 있지만, 집에 Custom NAS 같은 장비가 있다면, 공유기 대비 좀더 빠른성능으로 VPN환경을 사용할 수 있을것입니다. 구글링 해보면, Container 기반으로도 VPN을 만들어 사용할 수 있을듯 합니다. 우선 아래와 같이 git hub 에 있는 코드를 가져 옵니다.

[root@vpn ~]# git clone https://github.com/hwdsl2/setup-ipsec-vpn
Cloning into 'setup-ipsec-vpn'...
remote: Enumerating objects: 93, done.
remote: Counting objects: 100% (93/93), done.
remote: Compressing objects: 100% (51/51), done.
remote: Total 2128 (delta 58), reused 76 (delta 42), pack-reused 2035
Receiving objects: 100% (2128/2128), 1.27 MiB | 641.00 KiB/s, done.
Resolving deltas: 100% (1452/1452), done.

[root@vpn ~]# ls
anaconda-ks.cfg  setup-ipsec-vpn
[root@vpn ~]# cd setup-ipsec-vpn/
[root@vpn setup-ipsec-vpn]# vim vpnsetup_centos.sh

설정 스크립트를 열어서 아래의 내용을 편집 해줍니다.

YOUR_IPSEC_PSK='공유키 비번'
YOUR_USERNAME='사용자 ID'
YOUR_PASSWORD='사용자 PW'
...
...
...
...
L2TP_NET=${VPN_L2TP_NET:-'192.168.42.0/24'} <-- L2TP Client 연결시 사용할 네트워크
L2TP_LOCAL=${VPN_L2TP_LOCAL:-'192.168.42.1'} <-- VPN Local Gateway
L2TP_POOL=${VPN_L2TP_POOL:-'192.168.42.2-192.168.42.32'} <-- L2TP Client IP영역
XAUTH_NET=${VPN_XAUTH_NET:-'192.168.43.0/24'} <-- IPsec Client 연결시 사용할 네트워크
XAUTH_POOL=${VPN_XAUTH_POOL:-'192.168.43.2-192.168.43.32'} <-- IPsec Client IP
DNS_SRV1=${VPN_DNS_SRV1:-'8.8.8.8'}
DNS_SRV2=${VPN_DNS_SRV2:-'8.8.4.4'}

참고로 위의 경우에는 C class 를 모두 사용하였지만, IP Range는 1~32만 할당 하였는데, Subnet을 더 작게 쪼개서 설정할수도 있다. 아래의 Table을 참고 하면 됩니다.

Subnet 255.255.255.0 (24) -->  1~254
Subnet 255.255.255.128 (25) -->  1~126
Subnet 255.255.255.192 (26) -->  1~62
Subnet 255.255.255.224 (27) -->  1~30

편집을 완료 하였다면, terminal 에서 해당 script 를 바로 실행 하면 됩니다. 그리고 완료되면 아래와 같이 나옵니다.

[root@vpn setup-ipsec-vpn]# ./vpnsetup_centos.sh 

## VPN setup in progress... Please be patient.


## Installing packages required for setup...

Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
 * base: mirror.kakao.com
 * epel: mirror.premi.st
 * extras: mirror.kakao.com
 * updates: ftp.iij.ad.jp
...
...
...
## Enabling services on boot...


## Starting services...


================================================

IPsec VPN server is now ready for use!

Connect to your new VPN with these details:

Server IP: "You're Public IP"
IPsec PSK: "Public Key"
Username: "User ID"
Password: "User PW"

Write these down. You'll need them to connect!

Important notes:   https://git.io/vpnnotes
Setup VPN clients: https://git.io/vpnclients

================================================

지난번 Scratch 방식으로 IPsec VPN 을 만들었던것 대비, 아주 간단하게 만들수가 있습니다. 이후에 VPN 운영하면서, PSK 혹은 User 관리는 아래의 파일을 수정 하면 되겠습니다.

/etc/ipsec.secrets --> PSK 설정 , 변경시 데몬 혹은 VM 리부팅 해줘야 반영 됩니다.
/etc/ppp/chap-secrets --> 사용자 목록 관리 , L2TP 사용자 목록
/etc/ipsec.d/passwd --> 사용자 목록 관리 , Cisco IPSec 사용자 목록
** passed 부문에 hash 로 변경해서, 사용자 추가 필요
** openssl passwd -1 'your_vpn_password_1' 

추후 VPN Upgrade가 필요할경우에는 아래의 스크립트를 사용하면 됩니다.

[root@vpn setup-ipsec-vpn]# ipsec --version
Linux Libreswan 3.27 (netkey) on 3.10.0-862.14.4.el7.x86_64
[root@vpn setup-ipsec-vpn]# wget https://git.io/vpnupgrade-centos -O vpnupgrade.sh
--2018-10-11 14:25:48--  https://git.io/vpnupgrade-centos
Resolving git.io (git.io)... 34.199.255.1, 34.196.237.103, 52.20.145.121, ...
Connecting to git.io (git.io)|34.199.255.1|:443... connected.
HTTP request sent, awaiting response... 302 Found
Location: https://raw.githubusercontent.com/hwdsl2/setup-ipsec-vpn/master/extras/vpnupgrade_centos.sh [following]
--2018-10-11 14:25:50--  https://raw.githubusercontent.com/hwdsl2/setup-ipsec-vpn/master/extras/vpnupgrade_centos.sh
Resolving raw.githubusercontent.com (raw.githubusercontent.com)... 151.101.0.133, 151.101.64.133, 151.101.128.133, ...
Connecting to raw.githubusercontent.com (raw.githubusercontent.com)|151.101.0.133|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 8767 (8.6K) [text/plain]
Saving to: ‘vpnupgrade.sh’

100%[======================================>] 8,767       --.-K/s   in 0s      

2018-10-11 14:25:50 (65.5 MB/s) - ‘vpnupgrade.sh’ saved [8767/8767]
[root@vpn setup-ipsec-vpn]# chmod 755 vpnupgrade.sh 
[root@vpn setup-ipsec-vpn]# ./vpnupgrade.sh

공유기 아래에 해당 VPN 서버를 만들었다면, 공유기에서 해당  VM으로  Port Forward 를 해주면 됩니다.

isakmp          500/tcp
isakmp          500/udp
ipsec-nat-t     4500/tcp                # IPsec NAT-Traversal
ipsec-nat-t     4500/udp                # IPsec NAT-Traversal
l2tp            1701/tcp        l2f
l2tp            1701/udp        l2f

Reference Site

댓글 남기기

이메일은 공개되지 않습니다. 필수 입력창은 * 로 표시되어 있습니다