✅ Docker搭建wg-easy不能访问局域网网段的问题
宿主机IP 10.10.10.162
, Docker IP容器172.17.0.3
,Docker容器里wg分配ip段192.168.3.0/24
1️⃣ 确保 IP 转发已开启
echo "net.ipv4.ip_forward=1" >> /etc/sysctl.conf
sysctl -p
2️⃣ 更新 iptables
规则
🚀 让 WireGuard 客户端 能访问互联网
iptables -t nat -A POSTROUTING -s 192.168.3.0/24 -o ens192 -j MASQUERADE
iptables -A FORWARD -i wg0 -o ens192 -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A FORWARD -i ens192 -o wg0 -j ACCEPT
🔹 作用:
- 这会将
192.168.3.0/24
(WireGuard 客户端)通过ens192
NAT 出去,让 VPN 客户端可以使用10.10.10.162
的网络上网。
🚀 让 wg-easy
容器 (172.17.0.3
) 能够上网
iptables -t nat -A POSTROUTING -s 172.17.0.0/16 -o ens192 -j MASQUERADE
🔹 作用:
- 这让
wg-easy
及其 Docker 容器可以正确 NAT 到ens192
,从而能上网。
🚀 允许 wg-easy
和 WireGuard
客户端访问互联网
iptables -A FORWARD -i wg0 -o ens192 -j ACCEPT
iptables -A FORWARD -i ens192 -o wg0 -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A FORWARD -i docker0 -o wg0 -j ACCEPT
iptables -A FORWARD -i wg0 -o docker0 -m state --state RELATED,ESTABLISHED -j ACCEPT
🔹 作用:
- 允许 WireGuard 的流量从
wg0
到ens192
,确保 VPN 客户端可以上网。 - 允许
docker0
网络和wg0
互通。
3️⃣ 重启 iptables
规则
iptables -t nat -L -n -v # 确认规则是否生效
systemctl restart networking # 重启网络
4️⃣ 测试上网
在 WireGuard 客户端 上:
curl -I https://www.baidu.com # 测试 HTTPS 访问
如果仍然不能访问外网,请确认:
iptables -t nat -L -n -v
是否有正确的 NAT 规则。wg show
是否显示客户端已经连接。- 客户端的
AllowedIPs = 0.0.0.0/0, ::/0
是否正确配置。
5️⃣ 持久化 iptables
规则
apt install iptables-persistent -y
netfilter-persistent save