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