我正在尝试设置一个在 Raspberry Pi 4B 上的 macvlan 上运行的 pihole docker 实例。
我无法从我的容器 ping 外部互联网。
我设法减少了复制问题:
wlan0
在 上创建一个启用混杂模式的 macvlan 。- 启动一个 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
- 这会创建一个名为macvlan0
under的子接口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 route
和route -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