xianlubird / mydocker

<<自己动手写docker>> 源码
Apache License 2.0
1.98k stars 560 forks source link

6.5版本问题 #52

Open supAllen opened 5 years ago

supAllen commented 5 years ago

容器不能ping通,而且域名服务器那么配也有问题,不起作用,书中的测试都有问题,并且我使用的是个人热点开的Wi-Fi,然后在Mac Ubuntu14.04虚拟机上会在配置完网桥后出现网络连接不上

supAllen commented 5 years ago

补充一下,用其他Wi-Fi也不行~

supAllen commented 5 years ago

在nginx测试用例中,始终报/proc/{pid}/...不存在,然后我用ps命令查看,发现是正在运行的进程的pid和之前获取的PID不是一个,所以导致了那个错误,但是不知如何修改。。。求大佬指教!

HhTtLllL commented 4 years ago

你好,我也遇到这个问题. 内核版本: 4.15.0

情况描述: 容器内可以ping通宿主机, 在容器内不能ping通公网,容器之间也不能平通.

处理方法: --使用 tcpdump 抓包

tcpdump 同时抓取 网桥设备(testbridge),和 虚拟网卡(wlo1) 发现 testbridge 和 wlo1 设备的的数据包中的 src ip 没有转化

分析: testbridge 中的数据包的 src ip 没有转化是正常的. 但是 问题出在了 wlo1 的数据包中的 src ip 没有转化. 这也就解释了为什么无法ping通. 发出去的包的 src ip 没有转化为宿主机中 wlo1 给宿主机分配的IP, 所以数据包是没有办法回来的. 也就是说 源地址转化 这行代码没有 起到对应的作用. 然后我手动将这行代码改为 宿主机的IP, 然后就 ping 通了. 容器之间相互可以 ping 通,容器内也可以ping 通公网

总结: MASQUERADE 不起作用, 需要手动设置 源ip.

我也很困惑, 为什么 MASQUERADE不起作用. 希望有大佬能讲讲

yaoice commented 4 years ago

你好,我也遇到这个问题. 内核版本: 4.15.0

情况描述: 容器内可以ping通宿主机, 在容器内不能ping通公网,容器之间也不能平通.

处理方法: --使用 tcpdump 抓包

tcpdump 同时抓取 网桥设备(testbridge),和 虚拟网卡(wlo1) 发现 testbridge 和 wlo1 设备的的数据包中的 src ip 没有转化

分析: testbridge 中的数据包的 src ip 没有转化是正常的. 但是 问题出在了 wlo1 的数据包中的 src ip 没有转化. 这也就解释了为什么无法ping通. 发出去的包的 src ip 没有转化为宿主机中 wlo1 给宿主机分配的IP, 所以数据包是没有办法回来的. 也就是说 源地址转化 这行代码没有 起到对应的作用. 然后我手动将这行代码改为 宿主机的IP, 然后就 ping 通了. 容器之间相互可以 ping 通,容器内也可以ping 通公网

总结: MASQUERADE 不起作用, 需要手动设置 源ip.

我也很困惑, 为什么 MASQUERADE不起作用. 希望有大佬能讲讲

你好,我也遇到这个问题. 内核版本: 4.15.0

情况描述: 容器内可以ping通宿主机, 在容器内不能ping通公网,容器之间也不能平通.

处理方法: --使用 tcpdump 抓包

tcpdump 同时抓取 网桥设备(testbridge),和 虚拟网卡(wlo1) 发现 testbridge 和 wlo1 设备的的数据包中的 src ip 没有转化

分析: testbridge 中的数据包的 src ip 没有转化是正常的. 但是 问题出在了 wlo1 的数据包中的 src ip 没有转化. 这也就解释了为什么无法ping通. 发出去的包的 src ip 没有转化为宿主机中 wlo1 给宿主机分配的IP, 所以数据包是没有办法回来的. 也就是说 源地址转化 这行代码没有 起到对应的作用. 然后我手动将这行代码改为 宿主机的IP, 然后就 ping 通了. 容器之间相互可以 ping 通,容器内也可以ping 通公网

总结: MASQUERADE 不起作用, 需要手动设置 源ip.

我也很困惑, 为什么 MASQUERADE不起作用. 希望有大佬能讲讲

看下你的环境iptables FORWARD链默认策略是什么,用这个查看iptables-save -t filter; 如果是DROP的话,试下这个iptables -P FORWARD ACCEPT,然后再看下网络通不

HhTtLllL commented 3 years ago

你好,我也遇到这个问题. 内核版本: 4.15.0 情况描述: 容器内可以ping通宿主机, 在容器内不能ping通公网,容器之间也不能平通. 处理方法: --使用 tcpdump 抓包 tcpdump 同时抓取 网桥设备(testbridge),和 虚拟网卡(wlo1) 发现 testbridge 和 wlo1 设备的的数据包中的 src ip 没有转化 分析: testbridge 中的数据包的 src ip 没有转化是正常的. 但是 问题出在了 wlo1 的数据包中的 src ip 没有转化. 这也就解释了为什么无法ping通. 发出去的包的 src ip 没有转化为宿主机中 wlo1 给宿主机分配的IP, 所以数据包是没有办法回来的. 也就是说 源地址转化 这行代码没有 起到对应的作用. 然后我手动将这行代码改为 宿主机的IP, 然后就 ping 通了. 容器之间相互可以 ping 通,容器内也可以ping 通公网 总结: MASQUERADE 不起作用, 需要手动设置 源ip. 我也很困惑, 为什么 MASQUERADE不起作用. 希望有大佬能讲讲

你好,我也遇到这个问题. 内核版本: 4.15.0 情况描述: 容器内可以ping通宿主机, 在容器内不能ping通公网,容器之间也不能平通. 处理方法: --使用 tcpdump 抓包 tcpdump 同时抓取 网桥设备(testbridge),和 虚拟网卡(wlo1) 发现 testbridge 和 wlo1 设备的的数据包中的 src ip 没有转化 分析: testbridge 中的数据包的 src ip 没有转化是正常的. 但是 问题出在了 wlo1 的数据包中的 src ip 没有转化. 这也就解释了为什么无法ping通. 发出去的包的 src ip 没有转化为宿主机中 wlo1 给宿主机分配的IP, 所以数据包是没有办法回来的. 也就是说 源地址转化 这行代码没有 起到对应的作用. 然后我手动将这行代码改为 宿主机的IP, 然后就 ping 通了. 容器之间相互可以 ping 通,容器内也可以ping 通公网 总结: MASQUERADE 不起作用, 需要手动设置 源ip. 我也很困惑, 为什么 MASQUERADE不起作用. 希望有大佬能讲讲

看下你的环境iptables FORWARD链默认策略是什么,用这个查看iptables-save -t filter; 如果是DROP的话,试下这个iptables -P FORWARD ACCEPT,然后再看下网络通不

ok了。网络通了。 之前对iptables 不太了解。 感谢大佬。