L2TP/IPsec VPN 端口与防火墙配置说明
适用范围:本项目使用的 L2TP/IPsec(libreswan/strongswan + xl2tpd + ppp)脚本安装的 VPN 服务。
一、必须开放的端口与协议
从公网正常连接到 VPS 上的 L2TP/IPsec VPN,需要同时满足:
云厂商安全组 / 防火墙(阿里云、腾讯云等)放行:
UDP 500:IKE(IPsec 密钥交换)UDP 4500:IPsec NAT-T(穿透 NAT)UDP 1701:L2TP 隧道(通常在 IPsec 之上使用)- 协议 ESP(IP 协议号 50):IPsec 加密数据通道(有的云厂商归在
IPsec服务里统一放行)
服务器本机防火墙(firewalld / iptables / ufw 等)同样需要放行以上端口/协议,并开启 SNAT/MASQUERADE 以便内网地址出网。
说明:
- 大多数云厂商提供了内置的
IPsec服务类型,勾选后会自动放行 UDP 500、UDP 4500 和 ESP 协议;- 若安全组只支持按端口配置,至少要手动添加 UDP 500、4500、1701 三个端口规则,并确保没有额外策略拦截协议 ESP。
二、云厂商安全组建议配置
以常见云服务器为例,建议在安全组中添加如下入站规则(入方向):
| 协议 | 端口范围 | 来源 | 说明 |
|---|---|---|---|
| UDP | 500 | 0.0.0.0/0 | IKE,IPsec 密钥交换 |
| UDP | 4500 | 0.0.0.0/0 | IPsec NAT-T,穿透 NAT |
| UDP | 1701 | 0.0.0.0/0 | L2TP 隧道(在 IPsec 之上) |
| ESP | ALL | 0.0.0.0/0 | IPsec 加密数据(协议号 50) |
如果你只允许部分网段使用 VPN,可以把
0.0.0.0/0换成指定的出口公网 IP 或网段。
三、服务器本机防火墙示例
1. firewalld(CentOS/RHEL 默认)
# 开启 IPsec 服务(含 UDP 500/4500 + ESP 等)
firewall-cmd --permanent --add-service=ipsec
# 单独确保 L2TP 端口 1701/udp 放行
firewall-cmd --permanent --add-port=1701/udp
# 允许 VPN 客户端出网(SNAT)
firewall-cmd --permanent --add-masquerade
# 应用配置
firewall-cmd --reload
说明:
--add-service=ipsec通常会自动放行 UDP 500、4500 以及 IPsec 使用的 ESP 协议;- 如果你不确定,可再显式加上:
--add-port=500/udp、--add-port=4500/udp。
2. iptables 示例
# 放行 IPsec IKE/NAT-T 端口
iptables -A INPUT -p udp --dport 500 -j ACCEPT
iptables -A INPUT -p udp --dport 4500 -j ACCEPT
# 放行 L2TP 端口
iptables -A INPUT -p udp --dport 1701 -j ACCEPT
# 放行 ESP 协议(协议号 50)
iptables -A INPUT -p esp -j ACCEPT
# 允许 VPN 地址池出网(假设为 10.10.10.0/24,出口网卡为 eth0)
iptables -A FORWARD -s 10.10.10.0/24 -j ACCEPT
iptables -t nat -A POSTROUTING -s 10.10.10.0/24 -o eth0 -j MASQUERADE
# 持久化规则(不同系统命令可能稍有差异)
service iptables save
注意:
- 请将
10.10.10.0/24替换为你在/etc/xl2tpd/xl2tpd.conf中配置的ip range网段;- 将
eth0替换为实际对外网卡名(可用ip addr查看,如ens3、eth1等)。
3. ufw(Debian/Ubuntu 常用)
# 放行 IPsec IKE/NAT-T 端口
ufw allow 500/udp
ufw allow 4500/udp
# 放行 L2TP 端口
ufw allow 1701/udp
# (可选)开启转发和 SNAT,通常结合 /etc/ufw/before.rules 配置
# 示例:在 *nat 表中加一条 MASQUERADE 规则
# -A POSTROUTING -s 10.10.10.0/24 -o eth0 -j MASQUERADE
# 启用 ufw
ufw enable
四、和本项目安装脚本的对应关系
本项目内的安装脚本会:
- 安装并配置 IPsec(libreswan 或 strongswan)、xl2tpd、ppp;
- 修改
/etc/ipsec.conf、/etc/ipsec.secrets、/etc/xl2tpd/xl2tpd.conf、/etc/ppp/options.xl2tpd等; - 在 CentOS/RHEL 环境下,通常会自动执行类似:
firewall-cmd --permanent --add-service=ipsecfirewall-cmd --permanent --add-port=1701/udpfirewall-cmd --permanent --add-masquerade
但云厂商安全组部分需要你手工在控制台放行,否则即使服务器本机已经放开端口,外网也连不进来。
若你想了解完整安装流程,可参考同目录下的:
L2TP_IPSEC_CENTOS7.md:详细的 CentOS 7 部署步骤和防火墙示例。
五、快速自查清单
当客户端连不上时,建议按下面顺序排查:
- 确认云服务器安全组是否放行:UDP 500、4500、1701;是否有 IPsec/ESP 的额外限制;
- 确认服务器本机防火墙(firewalld/iptables/ufw)是否放行以上端口和 ESP;
- 确认内核转发已开启:
net.ipv4.ip_forward = 1; - 确认 VPN 服务状态正常:
systemctl status ipsec、systemctl status xl2tpd; - 查看系统日志(如
/var/log/messages、/var/log/syslog)排查错误信息。
如果你有指定云厂商(比如阿里云/腾讯云)需要对照具体控制台截图配置,我也可以再帮你补一版安全组示例。\n
作者:wuge 创建时间:2025-12-31 17:47
最后编辑:wuge 更新时间:2025-12-31 17:47
最后编辑:wuge 更新时间:2025-12-31 17:47