一、部署环境说明
•系统:CentOS Stream 9
•VPS:Contabo
•外网网卡:eth0
•VPN网卡:wg0
•VPN内网段:10.7.0.0/24
•监听端口:51820/UDP
•核心修复:IP转发 + Iptables NAT + MSS分片锁死 + MTU适配,彻底解决握手成功无法上网问题
二、系统内核永久配置(必须)
编辑内核参数:vi /etc/sysctl.conf
写入:
Plain Text
net.ipv4.ip_forward = 1
net.ipv6.conf.all.forwarding = 1
生效命令:
Plain Text
sysctl -p
校验:sysctl net.ipv4.ip_forward 输出 1 即为正常
三、服务端完整配置 /etc/wireguard/wg0.conf
解决:NAT转发、流量出站、大包丢包、重启规则自动加载/清理
Plain Text
[Interface]
PrivateKey = 【服务器私钥】
Address = 10.7.0.1/24, fddd:2c4:2c4:2c4::1/64
ListenPort = 51820
MTU = 1420
开机加载转发/NAT/MSS修复规则
PostUp = iptables -t nat -A POSTROUTING -s 10.7.0.0/24 -o eth0 -j MASQUERADE
PostUp = iptables -A FORWARD -s 10.7.0.0/24 -j ACCEPT
PostUp = iptables -A FORWARD -d 10.7.0.0/24 -j ACCEPT
PostUp = iptables -A FORWARD -p tcp --tcp-flags SYN,RST SYN -s 10.7.0.0/24 -j TCPMSS --set-mss 1380
关机自动清理规则
PostDown = iptables -t nat -D POSTROUTING -s 10.7.0.0/24 -o eth0 -j MASQUERADE
PostDown = iptables -D FORWARD -s 10.7.0.0/24 -j ACCEPT
PostDown = iptables -D FORWARD -d 10.7.0.0/24 -j ACCEPT
PostDown = iptables -D FORWARD -p tcp --tcp-flags SYN,RST SYN -s 10.7.0.0/24 -j TCPMSS --set-mss 1380
手机客户端 phone
[Peer]
PublicKey = HAq+Q2AOEHsZM6XkqyvvUeREdxRMyv4PylzP5yxfSDA=
PresharedKey = KkY0rAppGgFulyLz8TEogGRyA5ES6eE9HoB5A1H1mgg=
AllowedIPs = 10.7.0.2/32, fddd:2c4:2c4:2c4::2/128
权限与启停命令
Plain Text
chmod 600 /etc/wireguard/wg0.conf
wg-quick down wg0
wg-quick up wg0
systemctl enable wg-quick@wg0
四、Firewalld 防火墙最终配置
放弃复杂zone策略,仅保留最简稳定规则
Plain Text
firewall-cmd --permanent --zone=public --add-port=51820/udp
firewall-cmd --permanent --zone=public --add-masquerade
firewall-cmd --permanent --zone=trusted --add-interface=wg0
firewall-cmd --reload
五、手机客户端完整配置 phone.conf(可直接扫码)
关键优化:强制MTU1420 + 双DNS + 保活,彻底解决大陆网络卡死问题
Plain Text
[Interface]
Address = 10.7.0.2/24, fddd:2c4:2c4:2c4::2/64
DNS = 1.1.1.1, 8.8.8.8
PrivateKey = cCXFimmgBR1zqahN6aw01ljBaDWDH9gnhs1GsskIP3k=
MTU = 1420
[Peer]
PublicKey = ph+pScd0EiswPsFuxCyFvdhUMInGD7Cyl5L2+HmHs2E=
PresharedKey = KkY0rAppGgFulyLz8TEogGRyA5ES6eE9HoB5A1H1mgg=
AllowedIPs = 0.0.0.0/0, ::/0
Endpoint = 62.171.191.214:51820
PersistentKeepalive = 25
二维码生成命令
Plain Text
qrencode -t ansiutf8 /root/phone.conf
六、手机正确使用流程(必看)
1.打开 WireGuard APP,删除旧隧道
2.服务器重新生成二维码
3.手机扫码导入全新配置
4.开启隧道,正常全网代理上网
七、日常运维 & 排错命令大全
Plain Text
查看连接状态
wg show
重启服务
wg-quick down wg0 && wg-quick up wg0
查看NAT规则
iptables -t nat -L POSTROUTING -n
抓包排查
tcpdump -i wg0 host 1.1.1.1
tcpdump -i eth0 host 1.1.1.1
外网连通测试
curl -I 1.1.1.1
八、问题根治总结(本次踩坑全部解决)
•❌ 原问题:握手成功、无法上网、1.1.1.1 不通
•✅ 根因1:CentOS9 firewalld 跨区域转发bug
•✅ 根因2:缺少TCP MSS分片限制,大包丢包
•✅ 根因3:客户端无MTU参数,Contabo VPS网络不兼容
•✅ 最终方案:iptables 硬转发 + MSS锁死 + 两端MTU1420,零bug稳定运行
推荐阅读:
评论一下?