1. 项目概述与目标
目标:在
香港VPS上部署L2TP/IPSec VPN,提供内网客户端出海和路由转发功能。
需求点:支持NAT、路由策略和基础DDoS防护。
使用场景:公司分支接入、个人隐私上网、某些服务的出口代理。
约束条件:VPS带宽为1Gbps,公网IP示例为203.0.113.45(示例地址)。
输出成果:可同时支持10~200个并发客户端,示例配置保证单连接峰值吞吐达80~100Mbps(视VPS规格)。
维护周期:建议每月检查内核参数和防火墙策略,并启用日志轮转与备份。
2. 环境准备与VPS基础配置
VPS型号示例:2vCPU / 4GB RAM / 80GB SSD,带宽1Gbps,公网IP 203.0.113.45。
系统建议:Ubuntu 22.04 或 CentOS 8(本文以Ubuntu为例)。
必要软件:strongswan (IPSec)、xl2tpd (L2TP)、ppp、iptables/nftables、iproute2。
基础设置:设置时区、关闭不必要服务、配置静态IP、更新内核与安全补丁。
启用内核转发:sysctl -w net.ipv4.ip_forward=1(可写入 /etc/sysctl.conf 持久化)。
建议开启:conntrack_max=262144、tcp_syncookies=1、net.netfilter.nf_conntrack_max=131072 等内核参数。
3. 安装与配置IPSec+XL2TP关键文件示例
安装命令(示例):apt update && apt install -y strongswan xl2tpd ppp iptables。
/etc/ipsec.conf 示例:conn L2TP-PSK-vpn,左=203.0.113.45,右=%any,ike=aes256-sha1-modp1024,esp=aes256-sha1。
/etc/ipsec.secrets 示例:203.0.113.45 : PSK "MyStrongPSK123"。
/etc/xl2tpd/xl2tpd.conf 示例:ip range = 10.8.0.2-10.8.0.254,local ip = 10.8.0.1。
/etc/ppp/options.xl2tpd 示例:ms-dns 8.8.8.8,auth,mtu 1400,mru 1400,noipdefault,debug。
4. 路由转发与NAT策略(含表格展示)
说明:把VPN客户端网段 10.8.0.0/24 的流量经 VPS 出口 eth0 转发到公网。
启用NAT示例规则(iptables):iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o eth0 -j MASQUERADE。
允许转发规则:iptables -A FORWARD -s 10.8.0.0/24 -o eth0 -j ACCEPT;iptables -A FORWARD -d 10.8.0.0/24 -m state --state ESTABLISHED,RELATED -i eth0 -j ACCEPT。
持久化:使用iptables-save > /etc/iptables.rules,并在启动脚本中恢复。
端口/协议映射参考表(居中显示):
| 服务 |
来源/目标 |
协议 |
VPS端口 |
| L2TP/IPSec |
Any → VPS |
UDP |
500, 4500, 1701 |
| SSH 管理 |
Admin → VPS |
TCP |
22 |
| VPN 客户端网段 |
10.8.0.0/24 → Internet |
ALL |
MASQUERADE |
5. DDoS防护与CDN/网络注意事项
L2TP/IPSec 使用 UDP 500/4500/1701,CDN(如 Cloudflare)对这类 UDP 代理支持有限,通常无法直接通过通用CDN转发VPN流量。
建议使用具备 UDP 回源或 Spectrum 类产品的服务商,或部署在有 DDoS 屏蔽的香港机房。
基础防护规则:限制单IP并发 connection(iptables -m connlimit),并对新连接做速率限制(-m recent 或 -m limit)。
示例防护命令:iptables -A INPUT -p udp --dport 500 -m limit --limit 20/min -j ACCEPT;其他超过速率的 DROP。
可结合BGP/托管DDoS服务、流量清洗和黑洞路由策略,保证高峰攻击时的可用性。
6. 真实案例与性能实测
案例:某公司在香港机房部署一台2vCPU/4GB VPS(公网IP 203.0.113.45),用于分支出海和内网资源访问。
配置数据:IPSec PSK + user/pass,客户端子网 10.8.0.0/24,NAT 出口 eth0,mtu 1400。
测试结果:并发30用户时,平均吞吐 85Mbps,延迟到香港节点 28ms,CPU 使用率峰值 22%。
问题与优化:发现 MTU 导致部分网站加载慢,调低 MTU 至 1400 后改善;对大量并发连接添加 conntrack 增容(nf_conntrack_max=262144)。
备份建议:保存 /etc/ipsec.conf、/etc/ipsec.secrets、/etc/xl2tpd、iptables 及 sysctl 配置到版本控制或安全存储。
7. 常见故障排查与运维建议
无法建立连接:检查 UDP 500/4500/1701 是否被IDC或上游防火墙阻断。
验证IPSec:使用 ipsec statusall / journalctl -u strongswan 查看协商日志与错误码。
路由问题:确认 ip_forward 已启用,且 iptables nat 规则生效(iptables -t nat -L -n -v)。
性能问题:观察 CPU/内存/conntrack 使用,必要时提升 VPS 规格或拆分出口服务。
日志与监控:开启 conntrack、iptables 统计与 strongswan 日志,结合Grafana/Prometheus 监控连接数与吞吐。
来源:一步步图解香港vps搭建l2tp并配置路由转发与NAT策略