1

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

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

我设法减少了复制问题:

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

详细信息:我正在使用该wlan0界面运行树莓派 4。我启用了混杂模式wlan0

我创建了 macvlan 网络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- 这会创建一个名为macvlan0under的子接口wlan0。这意味着容器将从 .65-.70 获得分配的 IP

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

如果我尝试 ping1.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,BROADCAST,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,BROADCAST,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,BROADCAST,RUNNING,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
4

0 回答 0