如何找到导致arp请求的进程?

Pin*_*Yin 9 networking arp

当我在网关中运行 tcpdump 时,我收到了很多来自网关本身的 arp 请求。我想知道为什么会发生这种情况。如何找到导致这些 arp 请求的进程?

$ tcpdump -n arp 
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on eth0, link-type EN10MB (Ethernet), capture size 96 bytes
16:51:03.662114 ARP, Request who-has 211.123.123.251 tell 211.123.123.242, length 28
16:51:03.954113 ARP, Request who-has 211.123.123.246 tell 211.123.123.242, length 28
16:51:04.002111 ARP, Request who-has 211.123.123.254 tell 211.123.123.242, length 28
16:51:04.518111 ARP, Request who-has 211.123.123.248 tell 211.123.123.242, length 28
16:51:04.954113 ARP, Request who-has 211.123.123.246 tell 211.123.123.242, length 28
16:51:05.002110 ARP, Request who-has 211.123.123.254 tell 211.123.123.242, length 28
16:51:05.518110 ARP, Request who-has 211.123.123.248 tell 211.123.123.242, length 28
16:51:06.002112 ARP, Request who-has 211.123.123.254 tell 211.123.123.242, length 28
16:51:06.210111 ARP, Request who-has 211.123.123.252 tell 211.123.123.242, length 28
16:51:06.518114 ARP, Request who-has 211.123.123.248 tell 211.123.123.242, length 28
16:51:07.114111 ARP, Request who-has 211.123.123.246 tell 211.123.123.242, length 28
16:51:07.210111 ARP, Request who-has 211.123.123.252 tell 211.123.123.242, length 28
16:51:07.314112 ARP, Request who-has 211.123.123.249 tell 211.123.123.242, length 28
Run Code Online (Sandbox Code Playgroud)

以下是门配置:

$ ip addr
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UNKNOWN qlen 1000
    link/ether 6c:f0:49:a8:05:4c brd ff:ff:ff:ff:ff:ff
    inet 211.123.123.242/28 brd 211.123.123.255 scope global eth0
    inet6 fe80::6ef0:49ff:fea8:54c/64 scope link 
       valid_lft forever preferred_lft forever
Run Code Online (Sandbox Code Playgroud)

在该子网中,只有211.123.123.242(网关ip)可用,其他ip(如211.123.123.246)不可用。

更新:

我可以看到这些不可用 ip 的流量,我认为这就是这些 arp 的原因。虽然我无法弄清楚为什么会发生这些流量。可能是 isp 提供商的配置错误。

$ tcpdump host 211.103.252.245
23:50:11.414705 IP 59.34.131.5.7099 > 211.123.123.245.17701: Flags [S.], seq 3745049197, ack 1625918577, win 8760, options [mss 1460], length 0
23:50:12.991258 IP 75.126.1.222.80 > 211.123.123.245.1078: Flags [S.], seq 651817046, ack 152032452, win 17473, length 0
Run Code Online (Sandbox Code Playgroud)

peh*_*hrs 8

当您运行 DHCP 服务器时,此行为非常常见。服务器探测租用范围内的地址以查看哪些地址是空闲的。还有其他网络监控解决方案使用 ARP 来跟踪网络上正在使用的地址。

据我所知,在类 Unix 系统中没有系统可以查看哪个程序发起 arp 请求。您可能会使用 strace/ktrace/dtrace 来查找系统调用。

最后我不会太担心。大量的 ARP 数据包会导致问题,但只有在达到 1000pps 范围时才会出现问题。每秒几包没什么可担心的。


emt*_*unc 6

路由器上的 ARP 请求是预期行为。使用 ARP 请求是为了让路由器知道网络上特定路由的下一跳地址。它的基本工作是将 IP 地址映射到 MAC 地址。

从您上面提供的示例来看,它看起来不像是过度使用 ARP。


Mea*_*roM 1

ARP请求正常。该协议用于了解某些具有 MAC 的机器在哪里。然后通过 ARP 建立 IP。ARP 作为 ARP 模块内置于内核中。检查这个这个