CentOS L2TP 配置指南
L2TP(Layer 2 Tunneling Protocol)是一种广泛使用的 VPN 协议,通常与 IPSec 结合使用以提供安全的远程访问,以下是如何在 CentOS 系统中配置 L2TP/IPSec 服务器的详细步骤:

1. 前置条件检查和环境配置
在开始之前,确保你的 CentOS 系统已更新到最新版本,可以使用以下命令更新系统:
- sudo yum y update
2. 安装必要的软件包
需要安装的软件包包括xl2tpd
、strongSwan
以及一些依赖工具,具体命令如下:
- sudo yum install y epelrelease
- sudo yum install y make gcc gmpdevel xmlto bison flex libpcap lsof vim man xl2tpd libreswan
3. 配置 IPsec
修改/etc/ipsec.conf
文件,允许通过 NAT 建立 L2TP 连接:

- sudo vim /etc/ipsec.conf
添加如下内容到文件中:
- nat_traversal=yes
- include /etc/ipsec.d/*.conf
创建并编辑/etc/ipsec.d/l2tp_psk.conf
文件,设置连接参数:
- sudo vim /etc/ipsec.d/l2tp_psk.conf
添加如下内容,并将left
参数设置为公网网卡的 IP 地址:
- 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
在/etc/ipsec.d/
目录下创建保存预共享密钥的文件ipsec.secrets
,格式如下:
- <your_public_IP> %any: PSK "test123"
重启 IPsec 服务并验证配置:
- sudo systemctl restart ipsec
- sudo ipsec verify
4. 配置 L2TP

修改/etc/sysctl.conf
文件,启用内核转发和其他网络配置:
- sudo vim /etc/sysctl.conf
添加到文件中:
- net.ipv4.ip_forward = 1
- net.ipv4.conf.all.rp_filter=0
- net.ipv4.conf.default.rp_filter=0
- net.ipv4.conf.all.arp_announce=2
- net.ipv4.conf.default.arp_announce=2
- net.ipv4.conf.all.promote_secondaries = 1
- net.ipv4.conf.default.promote_secondaries = 1
- net.ipv4.conf.all.accept_source_route = 0
- net.ipv4.conf.default.accept_source_route = 0
- net.ipv4.conf.all.accept_redirects = 0
- net.ipv4.conf.default.accept_redirects = 0
- net.ipv4.conf.lo.arp_announce=2
- net.ipv6.conf.all.disable_ipv6=0
- net.ipv6.conf.default.disable_ipv6=0
- net.ipv6.conf.lo.disable_ipv6=0
执行以下命令使更改生效:
- sudo sysctl p
修改/etc/xl2tpd/xl2tpd.conf
文件,设置监听地址和分配给客户端的 IP 地址范围:
- sudo vim /etc/xl2tpd/xl2tpd.conf
主要修改以下部分:
- [global]
- listenaddr <your_public_IP>
- ipsec saref = yes
- [lns default]
- ip_range = 192.168.1.128192.168.1.254
- local ip = 192.168.1.99
修改/etc/ppp/options.xl2tpd
文件,设置安全选项和 DNS 服务器:
- sudo vim /etc/ppp/options.xl2tpd
主要修改如下:
- requiremschapv2
- msdns 8.8.8.8
- msdns 8.8.4.4
5. 配置用户认证信息
在/etc/ppp/chapsecrets
文件中添加 L2TP 服务器的账户和密码:
- sudo vim /etc/ppp/chapsecrets
添加如下内容:
- 用户名 * 密码 * IP地址
- user * password
6. 启动并配置服务
启动并启用xl2tpd
服务:
- sudo systemctl start xl2tpd
- sudo systemctl enable xl2tpd
检查服务状态以确保其正常运行:
- sudo systemctl status xl2tpd
7. 配置防火墙规则
确保防火墙允许 L2TP 流量通过:
- sudo firewallcmd permanent direct addrule ipv4 filter INPUT 0 p gre j ACCEPT
- sudo firewallcmd permanent zone=public addmasquerade
- sudo firewallcmd reload
FAQs
Q1: 如何验证 L2TP/IPsec VPN 是否成功连接?
A1: 你可以通过以下步骤来验证 VPN 连接:尝试从客户端连接到新配置的 VPN 服务器,连接成功后,使用ipsec verify
命令检查 IPsec 连接状态,确认加密通道已建立,可以查看/var/log/xl2tpd.log
日志文件,确认是否有任何错误信息,如果一切正常,你应该能够看到客户端获取了正确的 IP 地址,并能成功访问受保护的网络资源。
Q2: 如果遇到连接问题,应如何排查和解决?
A2: 如果遇到连接问题,可以从以下几个方面进行排查:确认客户端的 VPN 配置是否正确,特别是预共享密钥和用户名密码是否匹配,检查服务器上的防火墙规则,确保允许 L2TP 流量通过,查看/var/log/xl2tpd.log
和/var/log/messages
日志文件,查找可能的错误信息或警告,使用ipsec verify
命令检查 IPsec 连接状态,确保加密通道已正确建立,如果问题仍未解决,可以尝试重启相关服务或者重新加载配置文件,确保所有更改已生效。