

一次因为光猫桥接后路由器接口变化导致docker内容器无法联网问题的解决
source link: https://hellodk.cn/post/525
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

一次因为光猫桥接后路由器接口变化导致docker内容器无法联网问题的解决
2021-05-24 15:06:45 update
实际上这有可能是 docker 的一个bug,重启了宿主机之后也需要重启一下 dockerd 容器才可以联网。不过也有可能是开机自启脚本有问题,但是前者的可能性更大。/etc/init.d/dockerd restart
重启一下 dockerd 就好啦
2021-04-24 19:52:15 update
写这篇文章的过程中我脑海中就一直在发问,为什么有 dns 的问题,明明已经返回了正确的 ip 了,但就是 icmp 包没有返回,全都丢失,这为什么是 dnsmasq 的问题呢,为什么要监听 eth4 的 ip? 没有必要呀,docker中的容器将 dns query 发给 软路由的 lan 口,lan有到wan的路由通路,dnsmasq 根本就不需要监听 eth4 的ip 了。事实证明是因为 wan 那边原本是通过光猫 拨号 这边 dhcp 获取的ip,前两天改成了光猫桥接 这边 wan(也就是 eth4)通过 PPPoE 拨号上网的,dockerd 需要重启才能获得网络,我没有重启dockerd 导致没网的。
讨论见这个帖子:ping 域名返回了ip 但是ping不通是为什么?
实际上对于本文的标题,解决方法很简单,重启 dockerd 就好了
以下是原文:
我说昨晚微信没有收到 server酱 的一个推送,平常都是准时准点的,但是昨晚并没有推送消息到微信,我还以为docker容器(代称容器A,就是发现容器A无法联网,才知道所有容器都没法联网了,影响很大)挂掉了 或者 docker daemon 挂掉了。刚通过日志确认,应该是容器无法访问网络了的原因。日志如下图
还有这段日志
2021-04-23 20:50:08 ERROR : org.apache.http.conn.HttpHostConnectException: Connect to sc.ftqq.com:443 [sc.ftqq.com/220.181.136.120] failed: Connection refused (Connection refused),
由于此时这个容器没有网络,所以我们也不能安装 ping
工具包测试,我们使用其他自带 ping
工具的镜像/容器 测试。
# 此时在openwrt中,进入 emby 这个镜像的容器中 ping 测试看看
docker exec -it emby /bin/ash
# 执行完上面的命令就已经进入了 emby 的容器,emby 是容器的名称(你也可以使用容器id)
# ping baidu.com -c 4
PING baidu.com (220.181.38.148): 56 data bytes
--- baidu.com ping statistics ---
4 packets transmitted, 0 packets received, 100% packet loss
没有 ICMP 包返回,说明网络不通。
想想和之前有何不同?那肯定是光猫改了桥接啊😂️,现在我的软路由的 eth0 到 eth4 接口有所变化,上面的ping返回了ip地址但是没有 icmp 包返回。问题还是出在dns 上?
看看目前软路由和光猫连接的 eth4 接口信息
# ifconfig eth4
eth4 Link encap:Ethernet HWaddr 00:E0:70:2A:3F:59
inet addr:192.168.1.254 Bcast:192.168.1.255 Mask:255.255.255.0
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:13129963 errors:0 dropped:18497 overruns:0 frame:0
TX packets:20642219 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:9423348725 (8.7 GiB) TX bytes:23961982092 (22.3 GiB)
因为设置了软路由 eth4(wan, PPPoE 拨号的接口)直通光猫 192.168.1.1,所以设置了 eth4 的ip地址是 192.168.1.254。见这篇文章:光猫桥接模式下使用openwrt路由器访问光猫配置教程
从容器中 traceroute 10.10.10.1
或者 192.168.1.254
再到 192.168.1.1
都是通的,说明这里路由表没问题,问题还是出在docker的宿主机(也就是 openwrt)dns 的监听。
查看一下 /etc/dnsmasq.conf
resolv-file=/etc/resolv.dnsmasq.conf
strict-order
listen-address=127.0.0.1,10.10.10.1,172.10.10.1,192.168.20.1
addn-hosts=/etc/dnsmasq.hosts
将 listen-address 中添加 eth4 的 IP,因为这个接口是wan,通向光猫然后直到 Internet 的接口,修改好之后是
resolv-file=/etc/resolv.dnsmasq.conf
strict-order
listen-address=127.0.0.1,10.10.10.1,172.10.10.1,192.168.20.1,192.168.1.254
addn-hosts=/etc/dnsmasq.hosts
改好了之后重启 dnsmasq
和 dockerd
/etc/init.d/dnsmasq restart
/etc/init.d/dockerd restart
再进入容器A,这个容器使用 debian 系的软件包管理方式,默认没有安装 ping
ifconfig
等程序,我们自己安装一下确认吧(此时已经修复好了容器的网络了)
# 更新一下软件源列表
apt-get update
# 安装 ifconfig
apt-get install net-tools
# 安装 ping
apt-get install iputils-ping
ifconfig 一下看看
# ifconfig
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 172.10.10.0 netmask 255.255.0.0 broadcast 172.10.255.255
ether 02:42:ac:0a:0a:00 txqueuelen 0 (Ethernet)
RX packets 7019 bytes 9321265 (8.8 MiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 5005 bytes 366618 (358.0 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536
inet 127.0.0.1 netmask 255.0.0.0
loop txqueuelen 1000 (Local Loopback)
RX packets 28 bytes 2098 (2.0 KiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 28 bytes 2098 (2.0 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
容器A 的 ip 是 172.10.10.0,容器使用的网络网关地址是 172.10.10.1,这个地址在 dnsmasq 的监听列表中,没问题~
ping 一下看看
# ping baidu.com -c 4
PING baidu.com (220.181.38.148) 56(84) bytes of data.
64 bytes from 220.181.38.148 (220.181.38.148): icmp_seq=1 ttl=49 time=22.8 ms
64 bytes from 220.181.38.148 (220.181.38.148): icmp_seq=2 ttl=49 time=22.5 ms
64 bytes from 220.181.38.148 (220.181.38.148): icmp_seq=3 ttl=49 time=22.9 ms
64 bytes from 220.181.38.148 (220.181.38.148): icmp_seq=4 ttl=49 time=23.2 ms
--- baidu.com ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 6ms
rtt min/avg/max/mdev = 22.511/22.846/23.174/0.299 ms
ok 好耶,解决了
本文的记录或分享结束,end.
Recommend
-
18
最近在折腾软路由,想把光猫改桥接,总结了一下步骤。以下在中兴ZXHN F460光猫上通过测试,其他型号不敢保证。 1,保存LOID LOID是你的运营商分配给你的识别码,在对光猫动手动脚之前需要先保存下来等会注册时用,使用光猫上自带的用户名...
-
8
【点滴记录】移动光猫+小米路由器开启IPv6网络访问 - 赵苦瓜のBlog 今天是植树节,要保护环境呀 ...
-
16
第一部分 获取超级管理员账户并备份光猫信息 首先可能要获取一下超级管理员账户。普通账户在光猫上面的贴纸上,一般用户名是 user。 现在的光猫一般自带 2.4GHz wifi 能力,wifi 的密码和 192.168.1.1 管理页面的
-
12
padavan 老毛子路由器固件 5G WiFi/2.4G WiFi 设置无线桥接/无线中继(AP)教程 本文介绍了三种给 padavan 设置无线桥接/无线中继(AP)的方式。如果你和本文中的 userA 一样的需求,我还是推荐你使用
-
4
2021-05-15 11:51:43 update 如果新建 ToModem 这个接口的时候设置了 255.255.255.0的掩码,并且接口 ip 地址...
-
19
招数学习 电信光猫ZXHN F450改桥接模式 2020-05-31 http://192.168.1.1:8080/bridge_route.gch 前提是你知道你的宽带账号和密码 方法就是http://192.16...
-
7
V2EX › 问与答 2023 年了,光猫还需要桥接么? yi...
-
6
为了改桥接,我决定破解中兴 F450G V2 光猫 2023-03-16...
-
9
之前设置: 光猫是路由模式,光猫拨号,小米 ax3600 设置有线桥接 现在设置: 让电信师傅改了,光猫桥接。小米 ax3600 上拨号。 现在问题: 小米 ax3600 只有 4 个网线口,都被占用。 我的音箱(sonos five)...
-
6
V2EX › 宽带症候群 光猫桥接模式下,必须是路由器来完成拨号吗?
About Joyk
Aggregate valuable and interesting links.
Joyk means Joy of geeK