[问题已解决|后续] docker 容器能 PING 通 IP 但 PING 不通域名问题的排查经历分享
编辑好了…… v 站不让我发,就分享这个链接了,写在了博文中
前情提要: https://www.v2ex.com/t/769968
[已解决] 记一次 docker 容器内能 ping 通 ip 但 ping 不通域名问题的排查经过 https://hellodk.cn/post/496
编辑好了…… v 站不让我发,就分享这个链接了,写在了博文中
前情提要: https://www.v2ex.com/t/769968
[已解决] 记一次 docker 容器内能 ping 通 ip 但 ping 不通域名问题的排查经过 https://hellodk.cn/post/496
理论上说配置了 iptables: true,docker 会自动加防火墙规则的
1. 没有配置 udp 转发
2. 自建 dns 没有接受来自 docker 网卡的查询
还有就是 wsl 每次重启也会随机分配 IP,偶尔也会分配到 172.1X 2X 3X 得地址段上,也是个坑,得注意.
@Sasasu #3 是的总结的很好 问题就两个 一个 iptables 一个自建 dns 没有监听来自 docker 网卡的查询请求
@CallMeReznov #4 所以能自定义 cidr 的 subnet ip-range gateway 这些的 可以自定义 免得冲突
总之交给谁查询 中间环节还是要重点关注了 (经验+1
“`
$ docker network create
–driver=bridge
–subnet=172.28.0.0/16
–ip-range=172.28.5.0/24
–gateway=172.28.5.254
mynetwork
“`
来自 https://docs.docker.com/engine/reference/commandline/network_create/#specify-advanced-options
–driver 指定使用的驱动 有四种可选项 Driver to manage the Network (default “bridge”)
–subnet 子网的规划,使用 cidr 格式,上面网络 172.28.0.0,掩码 16 。官方解释是 Subnet in CIDR format that represents a network segment
–ip-range 这个网络划分范围要比上面的子网要小,然后分配的容器使用这些 ip 地址。官方这个参数解释是 Allocate container ip from a sub-range
–gateway 指定该网络的网关地址 IPv4 or IPv6 Gateway for the master subnet
上面的 –ip-range 定义了 172.28.5.0/24 这个网络给使用这个 network 的容器使用,这些容器的 ip 分配将从 172.28.5.1/24 开始,最多分配到 172.28.5.253/24,所以用户创建的这个 user-defined network 最多能分配给 253 个 docker 容器。172.28.5.0 是这个网络,网关是 172.28.5.254 ,172.28.5.255 是广播地址
docker 自己实现的 bridge 网络中,容器中的接口和在宿主机上生成的虚拟网络接口 广播地址都是 0.0.0.0,zero network,代表本机上的所有 ipv4 地址