5
我需要在本地网络中查找MAC地址,并使用Linux。我所做的是用libnet发送ARP请求,但在发送3个请求后,缓存仍然不会更新。我使用wireshark来捕获数据包。从wireshark,我的每个ARP请求后,我确实得到了3个ARP重放。有谁知道ARP缓存怎么会不更新?使用libnet发送ARP请求,但在获得ARP应答后arp缓存不会更新
我需要在本地网络中查找MAC地址,并使用Linux。我所做的是用libnet发送ARP请求,但在发送3个请求后,缓存仍然不会更新。我使用wireshark来捕获数据包。从wireshark,我的每个ARP请求后,我确实得到了3个ARP重放。有谁知道ARP缓存怎么会不更新?使用libnet发送ARP请求,但在获得ARP应答后arp缓存不会更新
默认情况下,Linux内核不接受未经请求的ARP。由于请求是由用户空间应用程序发送的,而不是由内核发送的,内核将该回复视为“主动提供”。
您可以在/proc/sys/net/ipv4/conf/*/arp_accept
(无论是基于设备还是所有设备)更改此默认设置。
感谢您的快速回复!现在我明白了。但是,还有另一种方法可以改变/ proc/sys/net/ipv4/conf/*/arp_accept吗?通过ioctl? – Aitjcize 2010-07-29 06:26:02
为什么你需要另一种方式?这种方式有什么问题?如果您不知道将其设置为何种界面,则可以使用“全部”而不是*。 – camh 2010-07-29 10:18:46
@Aitjcize:'/ proc/sys /'是sysctl的接口,但它是Linux上的* preferred *接口。你可以用一个简单的'fopen();编程方式改变它。 fprintf中(); fclose();'序列。 – caf 2010-07-29 13:32:58