✅ 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-easyWireGuard 客户端访问互联网

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 的流量从 wg0ens192,确保 VPN 客户端可以上网。
  • 允许 docker0 网络和 wg0 互通。

3️⃣ 重启 iptables 规则

iptables -t nat -L -n -v  # 确认规则是否生效
systemctl restart networking  # 重启网络

4️⃣ 测试上网

WireGuard 客户端 上:

curl -I https://www.baidu.com  # 测试 HTTPS 访问

如果仍然不能访问外网,请确认:

  1. iptables -t nat -L -n -v 是否有正确的 NAT 规则。
  2. wg show 是否显示客户端已经连接。
  3. 客户端的 AllowedIPs = 0.0.0.0/0, ::/0 是否正确配置。

5️⃣ 持久化 iptables 规则

apt install iptables-persistent -y
netfilter-persistent save
如果觉得我的文章对你有用,请随意赞赏