arp 命令如何解析主机名?

arp 命令如何解析主机名?

当我运行 arp 命令时,我得到以下信息:

mark@mark-P8Z77-I-0:~$ arp
Address                  HWtype  HWaddress           Flags Mask            Iface
192.168.1.128            ether   08:86:3b:c8:d8:09   C                     eth0
192.168.1.4              ether   e0:91:f5:7c:7c:34   C                     eth0
192.168.1.110            ether   9c:d3:6d:b1:d3:49   C                     eth0
192.168.1.101            ether   94:10:3e:48:60:0d   C                     eth0
mark-N3050T              ether   d0:17:c2:ad:ff:58   C                     eth0
192.168.1.117            ether   b8:27:eb:ad:2e:72   C                     eth0
192.168.1.129                    (incomplete)                              eth0
192.168.1.103            ether   ec:1a:59:cb:42:25   C                     eth0
192.168.1.111            ether   54:4a:16:02:54:a8   C                     eth0
192.168.1.127            ether   84:ba:3b:05:6d:45   C                     eth0
192.168.1.106            ether   a4:77:33:2b:29:40   C                     eth0
192.168.1.122            ether   00:18:dd:04:6a:cc   C                     eth0
mark-N53Jf               ether   48:5d:60:71:7f:be   C                     eth0
gateway                  ether   28:c6:8e:20:a8:e5   C                     eth0

报告中出现的所有三个主机名也可以使用ping hostname arp 表进行 ping 操作,/proc/net/arp 仅包含 ip 地址:

mark@mark-P8Z77-I-0:~$ cat /proc/net/arp
IP address       HW type     Flags       HW address            Mask     Device
192.168.1.128    0x1         0x2         08:86:3b:c8:d8:09     *        eth0
192.168.1.4      0x1         0x2         e0:91:f5:7c:7c:34     *        eth0
192.168.1.110    0x1         0x2         9c:d3:6d:b1:d3:49     *        eth0
192.168.1.101    0x1         0x2         94:10:3e:48:60:0d     *        eth0
192.168.1.138    0x1         0x2         d0:17:c2:ad:ff:58     *        eth0
192.168.1.117    0x1         0x2         b8:27:eb:ad:2e:72     *        eth0
192.168.1.129    0x1         0x0         00:00:00:00:00:00     *        eth0
192.168.1.103    0x1         0x2         ec:1a:59:cb:42:25     *        eth0
192.168.1.111    0x1         0x2         54:4a:16:02:54:a8     *        eth0
192.168.1.127    0x1         0x2         84:ba:3b:05:6d:45     *        eth0
192.168.1.106    0x1         0x2         a4:77:33:2b:29:40     *        eth0
192.168.1.122    0x1         0x2         00:18:dd:04:6a:cc     *        eth0
192.168.1.121    0x1         0x2         48:5d:60:71:7f:be     *        eth0
192.168.1.1      0x1         0x2         28:c6:8e:20:a8:e5     *        eth0

arp 命令和 ping 使用什么服务来解析主机名?

我试过好几种,但最接近的是 avahi-browse。但是它报告的网络上主机名比 arp 报告多,而且所有主机名都附加.local在名称后面。

此外,arp 报告的三个主机名中有两个是远程 ubuntu 系统。我不记得在这些系统上执行过任何特殊配置来允许这种行为。“网关”主机名由路由器提供。连接的系统之一是 raspian 系统。

我该如何配置 Raspian 以实现此行为?主机名如何传输?

我应该使用什么命令来解析这些主机名?

最后说明:主机名似乎根据数据的陈旧程度而变化,但我还没有完全调查清楚这一点。我只知道我需要从给定的(ubuntu)主机 ping 才能捕获其他系统的主机名。我还没有确定哪些查询最能快速填充这些信息。

在查看了截至美国东部时间 12 月 18 日晚上 8 点的评论后,我可以分享以下信息:主持人说道/etc/nsswitch.conf

hosts:          files mdns4_minimal [NOTFOUND=return] resolve [!UNAVAIL=return] dns mdns4 myhostname

没有列出远程主机/etc/hosts

avahi-resolve-address解决如下问题:

192.168.1.1    Failed to resolve: Timeout reached (is "gateway")
192.168.1.117 raspberrypi.local    (shows in arp report as 192.168.1.117)
192.168.1.138 mark-3050T.local    (shows in arp as mark-3050T)
192.168.1.130 is currently offline but is similar to 192.168.1.130

虽然 mark-N3050T 被 arp 报告,但 ping 失败。 ping mark-N3050T.local失败但ping 192.168.1.138成功 ping 网关成功。 ping raspberrypi.local即使 raspberrypi 没有被 arp 报告,也能成功

当我写我的原始帖子时,它ping mark-N3050T会起作用,因此会发生一些老化,从而删除此主机名。我找不到将刷新主机名的命令。arp 和 ping 之间的区别在于 arp 将 IP 地址解析为主机名,而 ping 执行相反的操作。但是,我希望答案是对称的。

我这样做只是为了增加我对 LAN 网络工作原理的了解。我非常感谢任何愿意帮助我的人。

答案1

具体顺序如下:

  • 首先arp从中获取数据(缓存) ,Linux 通过伪文件系统的文件向用户空间/proc/net/arp公开其 ARP 缓存。内核不存储任何域名,只存储 IP 地址;这类似于使用procfs/proc/net/arparp -n

  • 现在,当您想要arp获取主机名时,arp只需按照glibcnsswitch配置进行操作,准确地说/etc/nsswitch.conf,将尝试使用该文件中提到的序列来获取主机名,例如hosts: files mdns4 dns,在这种情况下arp将:

    • 检查/etc/hosts文件
    • 然后mdns(多播 DNS)
    • 通用 DNS

    需要注意的是,如果您.local在域名末尾看到,那么它(大概)已被解析mdns(除非您实际上有这样的 TLD)。

答案2

地址解析协议 (ARP) 向网络中的所有主机广播 ARP 请求数据包,表示

Source=MAC-ADDRESS B
Destination=????    
who-has IP A Tell IP B

其中 IP A 是您要查找的 IP,IP B 是您的 IP 地址,如果接收计算机的 IP 地址匹配,它会向您的计算机发送单播 ARP 答复,其中包含

Source=MAC-ADDRESS A
Destination=MAC-ADDRESS B    
IP A is-at MAC-Address A

这就是全部 arp 剂量

相关内容