ARP 在 docker 容器中不起作用

ARP 在 docker 容器中不起作用

我遇到了以 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 层协议在桥接网络模式下是否存在任何问题?

有人能帮我解决这个问题吗?

相关内容