1、环境支持
#返回结果为yes就表示通过。
modprobe ppp-compress-18 && echo yes
#File descriptor in bad state。表示通过
cat /dev/net/tun
2、安装
#更新yum安装源
yum install -y epel-release
#安装
yum install -y libreswan xl2tpd
3、配置
vim /etc/ipsec.d/vpn.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
ikelifetime=8h
keylife=1h
type=transport
left=【此处填写外网IP如:1.1.1.1】
leftprotoport=17/1701
right=%any
rightprotoport=17/%any
在/etc/ipsec.d/
中有个默认的配置文件,不过是 IPv6 的,可以删除或者改个名字让其无效(这一步可做可不做):
mv v6neighbor-hole.conf v6neighbor-hole.conf_bak
vim /etc/ipsec.d/vpn.secrets
【此处填写外网IP如:1.1.1.1】 %any: PSK "【此处填写密码】"
systemctl enable ipsec
systemctl restart ipsec
ipsec verify
sysctl -a |grep -e 'send_redirects'
sysctl -a |grep -e 'accept_redirects'
vim changeRedirects.sh
#!/bin/bash
for each in /proc/sys/net/ipv4/conf/*
do
echo 0 > $each/send_redirects
echo 0 > $each/accept_redirects
done
chmod +x changeRedirects.sh
./changeRedirects.sh
#开启 IPv4 的 ip_forward,这个选项用于做 IP 包的转发:
sysctl net.ipv4.ip_forward=1
ipsec verify
vim /etc/xl2tpd/xl2tpd.conf
#这里可以保持默认不修改
ip range = 192.168.1.128-192.168.1.254
local ip = 192.168.1.99
#查看dns地址
cat /etc/resolv.conf
vim /etc/ppp/options.xl2tpd
# 修改 ms-dns,可以修改为其他合适的 dns 地址
ms-dns 114.114.114.114
nameserver 77.88.8.8
nameserver 77.88.8.1
nameserver 2a02:6b8::feed:0ff
# 增加 require-mschap-v2 选项,否则 windows 无法连接
require-mschap-v2
#添加账号密码
vim /etc/ppp/chap-secrets
account * password *
systemctl enable xl2tpd
systemctl restart xl2tpd
如果需要查看 xl2tpd 的日志,可以不使用上面的启动方法,直接使用:
xl2tpd -D
iptables配置
#打开 500,4500,1701 三个端口的 udp 通信
iptables -t filter -A INPUT -p udp -m multiport --dports 500,4500,1701 -j ACCEPT
#打开转发时的地址伪装
iptables -t nat -A POSTROUTING -j MASQUERADE
#允许已经建立的链接的包进入服务器
iptables -t filter -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
firewall-cmd配置
#打开 500,4500,1701 三个端口的 udp 通信
firewall-cmd --zone=public --add-port=500/udp --permanent
firewall-cmd --zone=public --add-port=4500/udp --permanent
firewall-cmd --zone=public --add-port=1701/udp --permanent
#打开转发时的地址伪装
firewall-cmd --permanent --zone=public --add-masquerade
#查看是否生效
firewall-cmd --list-ports
firewall-cmd --list-all
#重启 firewalld
firewall-cmd --reload
4、win10客户端
问题
L2TP连接尝试失败,因为安全层在初始化与远程计算机的协商时遇到一个处理错误。
解决方法
更改适配器选项
对VPN网络点右键 -> 允许使用这些协议,前面全勾选自动不勾选
修改注册表
Windows + r( 即开始运行) 在框中输入 regedit , 打开注册表
\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\RasMan\Parameters
添加或修改三项值
AllowL2TPWeakCrypto 1
AllowPPTPWeakCrypto 1
ProhibitIpSec 1