L2TP: 第二层隧道协议(英语:Layer Two Tunneling Protocol,缩写为L2TP)是一种虚拟隧道协议,通常用于虚拟专用网。L2TP协议自身不提供加密与可靠性验证的功能,可以和安全协议搭配使用,从而实现数据的加密传输。经常与L2TP协议搭配的加密协议是IPsec,当这两个协议搭配使用时,通常合称L2TP/IPsec。
Ubuntu 20.04.1验证L2TP
Server端
-
安装ppp
sudo apt install ppp
-
安装xl2tpd
sudo apt install xl2tpd
-
配置xl2tpd
xl2tpd配置文件位于
/etc/xl2tpd/xl2tpd.conf
,因为是server端,只关注lns部分,global部分用默认的值即可,一般修改:[lns default] ;ip分配配置 ip range = 192.168.0.2-192.168.0.20 ; * 分配的ip范围,即client或得到的ip范围 local ip = 192.168.0.1 ; * 自己本地ip ;鉴权相关配置 require chap = yes ; * 是否要求对端使用 CHAP 鉴权 refuse pap = yes ; * 是否禁用 PAP 鉴权 ; refuse chap = no ; * 是否禁用 CHAP 鉴权 ; refuse authentication = no ; * 是否禁用所有鉴权 require authentication = yes ; * 是否要求对端使用鉴权 ;ppp相关配置 ppp debug = yes ; * 是否打开ppp调试 pppoptfile = /etc/ppp/options.l2tpd.lns ; * ppp 选项文件
-
配置xl2tp对应的ppp
该配置文件路径在上面的的配置中已指定,为
/etc/ppp/options.l2tpd.lns
,在/etc/ppp/
目录下创建此文件,并做配置touch /etc/ppp/options.l2tpd.lns vim /etc/ppp/options.l2tpd.lns
内容为:
debug logfd 2 logfile /var/log/xl2tplns.log require-mschap-v2 require-mschap ms-dns 8.8.8.8 ms-dns 8.8.4.4 asyncmap 0 auth idle 1800 mtu 1200 mru 1200 hide-password name l2tpd proxyarp lcp-echo-interval 30 lcp-echo-failure 4
-
配置账号密码
和pptp相同,根据你配置的鉴权方式来选择哪个文件保存账号密码,这里使用的鉴权方式是chap,所以编辑
/etc/ppp/chap-secrets
# Secrets for authentication using CHAP # client server secret IP addresses test * test *
-
启动服务
sudo systemctl enable xl2tpd sudo systemctl start xl2tpd
由于这里不验证client端通过server端上网,所以没讨论如何设置转发和防火墙的设置。
-
扩展,设置转发和防火墙
开启转发
sudo vim /etc/sysctl.conf #找到对应参数,修改成如下: net.ipv4.ip_forward=1 #保存,使配置生效 sudo sysctl -p
配置防火墙
sudo iptables -I INPUT -p udp --dport 500 -j ACCEPT sudo iptables -I INPUT -p udp --dport 4500 -j ACCEPT sudo iptables -I INPUT -p udp -m udp --dport 1701 -j ACCEPT #NAT转发的这条信息根据自己之前的配置(localip,remoteip网段)修改,注意网卡名设置为你的wan口网卡名,Ubuntu高一点的版本一般是ens33 iptables -t nat -A POSTROUTING -j SNAT --to-source 192.168.0.254 -o ens33
重启服务
sudo systemctl restart xl2tpd
Client端
首先使用另一台ubuntu验证,安装相关的软件
sudo apt-get install xl2tpd network-manager-l2tp network-manager-l2tp-gnome
其他操作步骤类似于上一篇pptp的介绍,不重复。