L2TP over IPSec 在 Centos7 上的配置与实现
L2TP(Layer 2 Tunneling Protocol)结合IPsec(Internet Protocol Security)可以在公共互联网中建立安全的VPN连接,本文将详细介绍如何在CentOS 7系统上搭建一个L2TP/IPsec服务器,包括前置条件检查、环境配置、软件安装等步骤。

一、前置条件检查
1、操作系统版本:确保操作系统为CentOS 7或更高版本,使用以下命令查看系统版本:
- cat /etc/centosrelease
2、网络配置:确保服务器具备固定的公网IP地址,并且该IP地址在防火墙规则中开放了必要的端口(如500、4500、1701和1723)。
3、软件依赖:安装前需要确保系统中包含EPEL源,以便安装xl2tpd和libreswan等软件包。
二、安装所需软件包
安装EPEL源并更新系统软件包:
- sudo yum install y epelrelease
- sudo yum update
安装xl2tpd和libreswan:
- sudo yum install y xl2tpd libreswan
三、配置IPsec
编辑/etc/sysctl.conf
文件,添加以下内容以启用IP转发:

- net.ipv4.ip_forward = 1
使更改生效:
- sudo sysctl p
编辑/etc/ipsec.conf
文件,添加以下内容:
- config setup
- nat_traversal=yes
- virtual_private=%v4:10.0.0.0/8,%v4:192.168.0.0/16,%v4:172.16.0.0/12,%v6::/0
- oe=off
- interfaces=%defaultroute
- conn L2TPPSKNAT
- rightsubnet=vhost:%priv
- also=L2TPPSKnoNAT
- conn L2TPPSKnoNAT
- authby=secret
- pfs=no
- auto=add
- keyingtries=3
- rekey=no
- ikelifetime=8h
- keylife=1h
- type=transport
- left=%defaultroute
- leftprotoport=17/1701
- right=%any
- rightprotoport=17/%any
编辑/etc/ipsec.secrets
文件,添加预共享密钥:
- : PSK "your_secret_password_here"
四、配置L2TP
编辑/etc/xl2tpd/xl2tpd.conf
文件,添加以下内容:
- [global]
- ipsec saref = yes
- [lns default]
- ip range = 10.10.0.210.10.0.100
- local ip = 10.10.0.1
- require chap = yes
- refuse pap = yes
- require authentication = yes
- name = LinuxVPNserver
- ppp debug = yes
- pppoptfile = /etc/ppp/options.l2tpd.client
- length bit = yes
- bps = 1000000
编辑/etc/ppp/options.l2tpd.client
文件,设置客户端选项:
- ipcpacceptlocal
- ipcpacceptremote
- msdns 8.8.8.8
- msdns 8.8.4.4
- auth
- mtu 1200
- mru 1000
- noccp
编辑/etc/ppp/chapsecrets
文件,添加用户名和密码:

- username pptpd password
五、启动并验证服务
启动并启用ipsec和xl2tpd服务:
- sudo systemctl start ipsec
- sudo systemctl enable ipsec
- sudo systemctl start xl2tpd
- sudo systemctl enable xl2tpd
验证ipsec状态:
- sudo ipsec verify
六、客户端配置示例
在Windows或其他支持L2TP/IPsec的客户端上,配置如下:
服务器地址:CentOS服务器的公网IP地址
用户名:在/etc/ppp/chapsecrets
文件中设置的用户名
密码:对应的用户密码
预共享密钥:在/etc/ipsec.secrets
文件中设置的PSK
完成以上配置后,客户端应能够通过L2TP/IPsec连接到CentOS VPN服务器。
七、多用户设置
如需添加更多用户,只需在/etc/ppp/chapsecrets
文件中添加相应的用户名和密码记录:
- username newuser password
并在/etc/ipsec.d/passwd
文件中添加对应的PSK条目:
- newuser:$1$somehashedpassword$morehashedvalues:xauthpsk
八、常见问题及解答(FAQs)
Q1: 如何更改L2TP/IPsec服务器的预共享密钥(PSK)?
A1: 可以通过修改/etc/ipsec.secrets
文件中的PSK值来更改预共享密钥,将原有的PSK替换为新的密钥:
- : PSK "new_secret_password_here"
修改完成后,重启ipsec服务使更改生效:
- sudo systemctl restart ipsec
Q2: 如何允许多个客户端同时连接到L2TP/IPsec服务器?
A2: 确保在/etc/ppp/chapsecrets
文件中为每个客户端添加独立的用户名和密码记录,根据需要调整/etc/xl2tpd/xl2tpd.conf
文件中的ip range
设置,以分配足够的IP地址给客户端,将IP范围扩大到10.10.0.210.10.0.200
可以容纳更多客户端,重新启动xl2tpd服务:
- sudo systemctl restart xl2tpd