我遇到了以 Windows 平台作为 Docker 主机的 ubuntu 容器的 ARP 请求/响应问题。
实验是用非常基本的设置进行的。
以下网络模式是 Windows 中 docker 桌面安装的一部分。
D:\Docker\ubuntu>docker network ls
NETWORK ID NAME DRIVER SCOPE
8375175c22dc bridge bridge local
1b9942f6e958 host host local
f15c87f3e568 none null local
拉取最新的 ubuntu 镜像(来自 ubuntu:latest)并开始使用docker 运行命令
D:\Docker\ubuntu>docker run -i -t dockertest /bin/bash
root@4895113a218d:~#
ubuntu 容器正在桥接网络模式下运行,可以看到容器内有以下接口
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 172.17.0.2 netmask 255.255.0.0 broadcast 172.17.255.255
ether 02:42:ac:11:00:02 txqueuelen 0 (Ethernet)
RX packets 4129 bytes 5898871 (5.8 MB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 1674 bytes 95577 (95.5 KB)
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 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
然后我在 ubuntu 容器中安装了 nmap,并尝试使用 nping 命令向本地网络中的一个节点发送 ARP 请求。但是,即使可以从 Windows 主机访问该节点 (192.168.10.207),该节点也没有响应。
root@1fdc2acb5928:~# nping --arp-type ARP 192.168.10.207
Starting Nping 0.7.80 ( https://nmap.org/nping ) at 2022-03-21 12:39 UTC
SENT (0.0770s) ARP who has 192.168.10.207? Tell 172.17.0.2
SENT (1.0774s) ARP who has 192.168.10.207? Tell 172.17.0.2
SENT (2.0789s) ARP who has 192.168.10.207? Tell 172.17.0.2
SENT (3.0803s) ARP who has 192.168.10.207? Tell 172.17.0.2
SENT (4.0819s) ARP who has 192.168.10.207? Tell 172.17.0.2
Max rtt: N/A | Min rtt: N/A | Avg rtt: N/A
Raw packets sent: 5 (210B) | Rcvd: 0 (0B) | Lost: 5 (100.00%)
Nping done: 1 IP address pinged in 5.16 seconds
或者,我尝试使用 ping 命令,它工作正常。可能是它的第 3 层协议。
root@1fdc2acb5928:~# ping 192.168.10.207
PING 192.168.10.207 (192.168.10.207) 56(84) bytes of data.
64 bytes from 192.168.10.207: icmp_seq=1 ttl=37 time=8.00 ms
64 bytes from 192.168.10.207: icmp_seq=2 ttl=37 time=5.79 ms
64 bytes from 192.168.10.207: icmp_seq=3 ttl=37 time=5.97 ms
系统配置
- Docker 主机:Windows 10
- Docker 映像:ubuntu:latest
- 用于 ARP 验证的应用程序:nping(通过 nmap 包安装)
为什么在选择桥接网络模式的 ubuntu docker 容器中 ARP 不起作用?第 2 层协议在桥接网络模式下是否存在任何问题?
有人能帮我解决这个问题吗?