在CentOS 7 上部署 L2TP/IPSec 服務(wù)
安裝strongswan和xl2tpd(yum安裝需要啟用epel源)
yum?install?strongswan?xl2tpd
修改/etc/strongswan/ipsec.conf?文件,如下
config?setup
conn?%default
? ? ? ? ikelifetime=60m
? ? ? ? keylife=20m
? ? ? ? rekeymargin=3m
? ? ? ? keyingtries=1
conn?l2tp
? ? ? ? keyexchange=ikev1
? ? ? ? left=%defaultroute
? ? ? ? leftsubnet=0.0.0.0/0
? ? ? ? leftprotoport=17/1701
? ? ? ? authby=secret
? ? ? ? leftfirewall=no
? ? ? ? right=%any
? ? ? ? rightprotoport=17/%any
? ? ? ? type=transport
? ? ? ? auto=add
修改/etc/strongswan/ipsec.secrets?文件(沒有此文件就新建一個(gè))
#?ipsec.secrets?-?strongSwan?IPsec?secrets?file
:?PSK?'presharedkeys'
編輯/etc/xl2tpd/xl2tpd.conf文件的?[lns?default]?部分
[lns?default]
ip?range?=?172.16.0.100-172.16.0.199
local?ip?=?172.16.0.1
require?chap?=?yes
refuse?pap?=?yes
require?authentication?=?yes
name?=?LinuxVPNserver
ppp?debug?=?yes
pppoptfile?=?/etc/ppp/options.xl2tpd
ppp部分遣妥,這里只設(shè)定了chap驗(yàn)證部分
編輯/etc/ppp/options.xl2tpd
ms-dns??114.114.114.114
ms-dns??223.5.5.5
noccp
auth
crtscts
idle?600
mtu?1200
mru?1200
nodefaultroute
debug
lock
proxyarp
connect-delay?2500
編輯/etc/ppp/chap-secrets
#?Secrets?for?authentication?using?CHAP
#?client ? ? ? ? ? ? ? ?server ? ? ? ?secret ? ? ? ?IP?addresses
user ? ? ? ? ? ? ? ? ? ? * ? ? ? ? ? ? ? password ? ? ?*
設(shè)置防火墻挚歧,以iptables為例
iptables?-t?filter?-A?INPUT?-p?esp?-j?ACCEPT
iptables?-t?filter?-A?INPUT?-p?udp?--dport?500?-j?ACCEPT
iptables?-t?filter?-A?INPUT?-p?udp?--dport?1701?-j?ACCEPT
iptables?-t?filter?-A?INPUT?-p?udp?--dport?4500?-j?ACCEPT
iptables?-t?filter?-A?FORWARD?-s?172.16.0.0/24?-j?ACCEPT
iptables?-t?filter?-A?FORWARD?-d?172.16.0.0/24?-j?ACCEPT
iptables?-t?nat?-A?POSTROUTING?-s?172.16.0.0/24?-o?enp0s3?-j?MASQUERADE
開啟IP轉(zhuǎn)發(fā)凛篙,編輯?/etc/sysctl.conf
net.ipv4.ip_forward?=?1
執(zhí)行sysctl?-?p?使之生效
開啟服務(wù)
systemctl?start?strongswan.service
systemctl?start?xl2tpd.service
systemctl?enable?strongswan.service
systemctl?enable?xl2tpd.service
客戶端連接的時(shí)候選L2TP/IPSec?VPN?with?pre-shared?keys?浅缸,PSK(預(yù)共享密鑰)是/etc/strongswan/ipsec.secrets中的PSK赔嚎,用戶名和密碼在/etc/ppp/chap-secrets中
ipsec穿過nat很麻煩润讥,如果服務(wù)器在nat后转锈,可以只用l2tp,不啟用ipsec(strongswan)楚殿。只配置xl2tp和ppp撮慨,不配置ipsec。
iptables轉(zhuǎn)發(fā)過濾規(guī)則暫時(shí)沒時(shí)間試驗(yàn)脆粥,可以設(shè)為默認(rèn)允許轉(zhuǎn)發(fā)砌溺。?iptables?-t?filter?-P?FORWARD?ACCEPT
nat外網(wǎng)1701映射到內(nèi)網(wǎng)1701
客戶端連接的時(shí)候選l2tp,而不是?L2TP/IPSec?VPN?with?pre-shared?keys变隔。不需要PSK规伐,用戶名和密碼和原來一樣。
如果服務(wù)器有多個(gè)網(wǎng)卡匣缘,/etc/xl2tpd/xl2tpd.conf?的?[global]部分指明VPN使用的網(wǎng)卡楷力。
[global]
listen-addr?=?10.1.1.244
/etc/strongswan/ipsec.conf的conn部分把left改成VPN網(wǎng)卡的地址
…………
conn?l2tp
? ? ? ? keyexchange=ikev1
? ? ? ? left=10.1.1.244
…………