CentOS 7 搭建 L2TP/IPsec VPN 服务器
一、前言
L2TP(Layer 2 Tunneling Protocol)结合 IPsec(Internet Protocol Security)可以在提供隧道功能的同时,确保数据传输的安全性,本文将详细介绍在 CentOS 7 系统上如何搭建一个安全稳定的 L2TP/IPsec VPN 服务器。
二、前置条件检查
1、操作系统:CentOS 7
2、公网 IP:确保服务器拥有公网 IP 地址
3、网络环境:允许必要的端口通过防火墙
三、安装相关软件
1. 安装 EPEL 源
EPEL(Extra Packages for Enterprise Linux)是一个由 Fedora 特殊兴趣小组维护的项目,为 RHEL/CentOS 及其衍生发行版提供额外的软件包,执行以下命令安装 EPEL 源:
sudo yum install y epelrelease
2. 安装 xl2tpd
xl2tpd
是xl2tpd
的一个分支,用于实现 L2TP 和PPP协议,执行以下命令进行安装:
sudo yum install y xl2tpd
3. 安装 libreswan
libreswan
是 OpenSWAN 的一个分支,实现了 IPsec 协议,执行以下命令进行安装:
sudo yum install y libreswan
四、配置 IPsec
1. 编辑 IPsec 配置文件
创建或编辑/etc/ipsec.conf
文件,添加以下内容以启用 NAT 遍历:
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
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=10.0.30.177 # 服务器的公网 IP 地址 leftprotoport=17/1701 right=%any rightprotoport=17/%any
3. 创建保存预共享密钥的文件
创建或编辑/etc/ipsec.d/ipsec.secrets
文件,添加以下内容:
: PSK "123456"
4. 设置 l2tp 的账号信息
创建或编辑/etc/ppp/chapsecrets
文件,添加 VPN 用户信息:
用户名 服务器 密码 客户端 IP 地址池 admin1 * 12345678 * admin2 * 12345678 * admin3 * 12345678
5. 修改内核参数以支持 IPsec
创建或编辑/etc/sysctl.conf
文件,添加以下内容:
net.ipv4.ip_forward = 1 net.ipv4.conf.all.accept_redirects = 0 net.ipv4.conf.all.rp_filter = 0 net.ipv4.conf.default.rp_filter = 0
使配置生效:
sudo sysctl p
6. 启动并验证 IPsec 服务
启动并设置开机自启 IPsec 服务:
sudo systemctl start ipsec sudo systemctl enable ipsec
验证 IPsec 配置是否正确:
sudo ipsec verify
五、配置 L2TP
1. 编辑 L2TP 配置文件
创建或编辑/etc/xl2tpd/xl2tpd.conf
文件,修改以下内容:
[global] ;ifconfig显示的ip不是公网ip listenaddr = 10.0.12.7 ipsec saref = yes ;修改分配的地址段 [lns default] ip range = 192.168.7.7192.168.7.77 local ip = 192.168.7.10
2. 修改安全配置
创建或编辑/etc/ppp/options.xl2tpd
文件,添加以下内容:
requiremschapv2 msdns 8.8.8.8 msdns 114.114.114.114 logfile /var/log/xl2tpd.log
3. 停止 firewalld 服务并禁用
执行以下命令停止并禁用firewalld
服务:
sudo systemctl stop firewalld sudo systemctl mask firewalld
4. 安装并配置 iptables 服务
安装iptablesservices
:
sudo yum install y iptablesservices
配置防火墙规则:
#注意 ens33要是自己的网卡名称 sudo iptables t nat A POSTROUTING s 192.168.7.10/24 o eth0 j MASQUERADE sudo iptables I FORWARD s 192.168.7.10/24 j ACCEPT sudo iptables I FORWARD d 192.168.7.10/24 j ACCEPT sudo iptables A INPUT p udp m policy dir in pol ipsec m udp dport 1701 j ACCEPT sudo iptables A INPUT p udp m udp dport 1701 j ACCEPT sudo iptables A INPUT p udp m udp dport 500 j ACCEPT sudo iptables A INPUT p udp m udp dport 4500 j ACCEPT sudo iptables A INPUT p esp j ACCEPT sudo iptables A INPUT m policy dir in pol ipsec j ACCEPT sudo iptables A FORWARD i ppp+ m state state NEW,RELATED,ESTABLISHED j ACCEPT sudo iptables A FORWARD m state state RELATED,ESTABLISHED j ACCEPT service iptables save
5. 启动并设置开机自启 L2TP 服务
启动并设置开机自启xl2tpd
服务:
sudo systemctl start xl2tpd sudo systemctl enable xl2tpd
六、常见问题与解答 (FAQs)
Q1:如何更改预共享密钥?
A1:预共享密钥定义在/etc/ipsec.d/ipsec.secrets
文件中,找到对应的条目,修改为新的密钥即可。
: PSK "newpassword"
保存文件后,重启 IPsec 服务使更改生效。
sudo systemctl restart ipsec
Q2:如何更改 VPN 用户的密码?
A2:VPN 用户信息定义在/etc/ppp/chapsecrets
文件中,找到对应的用户条目,修改密码即可。
admin1 * newpassword
保存文件后,无需重启服务,更改即时生效。