在CentOS上搭建L2TP/IPsec VPN环境,可以为用户提供安全的远程访问解决方案,下面将详细介绍如何在CentOS系统上部署L2TP/IPsec VPN,包括安装所需的软件包、配置IPsec和xl2tpd服务、设置预共享密钥以及用户管理等步骤。

一、安装所需软件包
首先需要安装必要的软件包,包括libreswan、xl2tpd等,可以通过以下命令进行安装:

sudo yum install y epelrelease sudo yum install y make gcc gmpdevel xmlto bison flex xmlto libpcapdevel lsof vimenhanced man sudo yum install y xl2tpd libreswan
二、配置IPsec
1、修改IPsec配置文件:编辑/etc/ipsec.conf文件,添加以下内容以支持NAT穿透:
nat_traversal=yes
2、创建IPsec与L2TP关联的配置文件:由于默认情况下该文件不存在,需要手动创建并编辑/etc/ipsec.d/l2tp_psk.conf文件:
conn L2TPPSKNAT
rightsubnet=vhost:%priv
also=L2TPPSKnoNAT
conn L2TPPSKnoNAT
authby=secret
pfs=no
auto=add
keyingtries=3
dpddelay=30
dpdtimeout=120
dpdaction=clear
rekey=no
ikelifetime=8h
keylife=1h
type=transport
left=<your_public_ip>
leftprotoport=17/1701
right=%any
rightprotoport=17/%any 将<your_public_ip>替换为服务器的实际公网IP地址。
3、配置预共享密钥:编辑/etc/ipsec.d/ipsec.secrets文件,添加以下内容:
<your_public_ip> %any: PSK "your_preshared_key"
将<your_public_ip>替换为服务器的实际公网IP地址,并将your_preshared_key替换为实际的预共享密钥。
4、修改内核参数:编辑/etc/sysctl.conf文件,确保以下参数被设置为合适的值:

vm.swappiness = 0 net.ipv4.ip_forward = 1 net.ipv4.neigh.default.gc_stale_time=120 net.ipv4.conf.all.rp_filter=0 net.ipv4.conf.default.rp_filter=0 net.ipv4.conf.default.arp_announce = 2 net.ipv4.conf.all.arp_announce=2 net.ipv4.tcp_max_tw_buckets = 5000 net.ipv4.tcp_syncookies = 1 net.ipv4.tcp_max_syn_backlog = 1024 net.ipv4.tcp_synack_retries = 2 net.ipv4.conf.lo.arp_announce=2 net.ipv4.conf.default.accept_redirects = 0 net.ipv4.conf.default.send_redirects = 0 net.ipv4.conf.default.accept_source_route = 0
保存后运行sysctl p使配置生效。
三、配置xl2tpd
1、修改服务配置文件:编辑/etc/xl2tpd/xl2tpd.conf文件,根据需要调整配置,
[lns default] listen_addr = <your_local_ip> services = l2tp
将<your_local_ip>替换为服务器的实际内网IP地址。
2、配置用户认证:编辑/etc/ppp/chapsecrets文件,添加VPN用户信息:
username password
使用openssl passwd 1 'password'生成MD5加密的密码字符串替换上述password部分。
四、启动并测试服务
1、重启服务:执行以下命令重启IPsec和xl2tpd服务:
sudo systemctl restart ipsec sudo systemctl restart xl2tpd
2、检查服务状态:确保两个服务都已成功启动并正在运行。
3、连接测试:使用客户端设备(如Windows 10)尝试连接到新配置的L2TP/IPsec VPN,输入之前设置的用户名、密码以及预共享密钥。
五、多用户支持
如需添加更多用户,只需在/etc/ppp/chapsecrets文件中按相同格式追加条目即可,每个用户的密码同样需要使用openssl passwd 1命令生成MD5加密字符串。
六、FAQs
1、Q: 如何更改VPN服务器的IP地址?
A: 在/etc/ipsec.d/l2tp_psk.conf文件中修改left=<your_public_ip>行,将<your_public_ip>替换为新的公网IP地址,同时更新/etc/ppp/chapsecrets中的相关条目,如果使用了特定的IP绑定。
2、Q: 忘记预共享密钥怎么办?
A: 如果忘记了预共享密钥,需要重新配置IPsec服务,删除或注释掉现有的/etc/ipsec.d/ipsec.secrets中相关的预共享密钥条目,然后添加新的条目,之后重启IPsec服务以应用更改,这将导致所有使用旧预共享密钥的连接失效,直到它们也被更新为止。
