如你当前的 Alpine 系统虽然可以进入终端,但从 ping 1.1.1.1 和 ping 8.8.8.8 都 没有收到返回数据包,说明 网络不通。
例如这样
--by https://t.me/spiritlhl
servername:~# ping 1.1.1.1
PING 1.1.1.1 (1.1.1.1): 56 data bytes
^C
--- 1.1.1.1 ping statistics ---
3 packets transmitted, 0 packets received, 100% packet loss
servername:~# ping 8.8.8.8
PING 8.8.8.8 (8.8.8.8): 56 data bytes容器内执行:
ip a
ip r确认容器内 IP 和默认网关。
如果容器 IP 是 10.0.0.101/8,宿主机的网关是 10.0.0.1/8 在同一个网段,说明你容器用的是 10.0.0.0/8 网段。
你宿主机iptables正确写法如下:
iptables -t nat -A POSTROUTING -s 10.0.0.0/8 -o ens3 -j MASQUERADE并且确保开启 IP 转发:
sysctl -w net.ipv4.ip_forward=1再检查转发规则
宿主机执行:
iptables -L FORWARD -n -v确认默认策略是 ACCEPT,或者有允许容器网段和外网接口的转发规则
这样网络应该能正常连通公网了。
评论区