微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

macvlan 上的 Docker 容器无法 ping 外部互联网

如何解决macvlan 上的 Docker 容器无法 ping 外部互联网

我正在尝试设置在 RaspBerry Pi 4B 上的 macvlan 上运行的 pihole docker 实例。

我无法从我的容器 ping 外部互联网。

我设法减少了复制问题:

  1. 在启用混杂模式的 wlan0 上创建一个 macvlan。
  2. 启动一个 docker 容器并尝试 ping 外部世界。

详情: 我正在使用 wlan0 界面运行 raspBerry pi 4。我在 wlan0

上启用了混杂模式

我使用 docker network create -d macvlan --subnet=10.0.37.27/24 --gateway=10.0.37.1 --ip-range 10.0.37.65/29 -o parent=wlan0 --aux-address="pi4=10.0.37.69" macvlan0 创建了 macvlan 网络 - 这会在 macvlan0 下创建一个名为 wlan0 的子接口。这意味着容器将从 .65-.70 获得分配的 IP

然后我运行一个 busyBox 容器来 ping 我的 wlan0 物理 IP:docker run --net=macvlan0 busyBox ping 10.0.37.27。这有效。

如果我尝试 ping 1.1.1.1 甚至 10.0.37.1 处的网关,它会失败 我用 docker run --net=macvlan0 busyBox ip route get 1.1.1.1 验证了路由表是正确的,我得到了一个结果 1.1.1.1 via 10.0.37.1 dev eth0 src 10.0.37.64,这是完全合理的。

分析:

我不明白发生了什么。我可以从我的主机 ping 我的容器,也可以从我的容器 ping 我的主机(我设置了一个 macvlan-shim)。 我的 ip routeroute -n 显示了合理的路由表

然而,从外部 ping 失败。我很困惑。

pi4 上的 ifconfig

docker0: flags=4099<UP,broADCAST,MULTICAST>  mtu 1500
        inet 172.17.0.1  netmask 255.255.0.0  broadcast 172.17.255.255
        ether 02:42:c5:da:e3:84  txqueuelen 0  (Ethernet)
        RX packets 0  bytes 0 (0.0 B)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 0  bytes 0 (0.0 B)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

eth0: flags=4099<UP,MULTICAST>  mtu 1500
        ether dc:a6:32:08:56:eb  txqueuelen 1000  (Ethernet)
        RX packets 0  bytes 0 (0.0 B)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 0  bytes 0 (0.0 B)
        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
        inet6 ::1  prefixlen 128  scopeid 0x10<host>
        loop  txqueuelen 1000  (Local Loopback)
        RX packets 483666  bytes 87269371 (87.2 MB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 483666  bytes 87269371 (87.2 MB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

macvlan-shim: flags=4163<UP,RUNNING,MULTICAST>  mtu 1500
        inet 10.0.37.69  netmask 255.255.255.248  broadcast 0.0.0.0
        inet6 fe80::bcd6:6fff:fe61:4eaf  prefixlen 64  scopeid 0x20<link>
        ether be:d6:6f:61:4e:af  txqueuelen 1000  (Ethernet)
        RX packets 94178  bytes 21676941 (21.6 MB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 227298  bytes 9556744 (9.5 MB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

wlan0: flags=4419<UP,PROMISC,MULTICAST>  mtu 1500
        inet 10.0.37.27  netmask 255.255.255.0  broadcast 10.0.37.255
        inet6 fe80::dea6:32ff:fe08:56ec  prefixlen 64  scopeid 0x20<link>
        ether dc:a6:32:08:56:ec  txqueuelen 1000  (Ethernet)
        RX packets 401557  bytes 108910986 (108.9 MB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 719387  bytes 112456816 (112.4 MB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。