Tôi cần tra cứu địa chỉ MAC trong mạng cục bộ và tôi đang sử dụng Linux. Những gì tôi làm là gửi yêu cầu ARP bằng libnet, nhưng sau khi tôi gửi 3 yêu cầu, bộ nhớ cache vẫn không cập nhật. Tôi sử dụng wireshark để bắt các gói dữ liệu. Từ wireshark, tôi đã nhận được 3 replay ARP, sau mỗi yêu cầu ARP của tôi. Có ai biết làm thế nào đến bộ nhớ cache ARP sẽ không cập nhật?sử dụng libnet để gửi yêu cầu ARP, nhưng bộ nhớ cache arp sẽ không cập nhật sau khi nhận được trả lời ARP
5
A
Trả lời
4
Nhân Linux không chấp nhận ARP không được yêu cầu theo mặc định. Do yêu cầu được gửi bởi ứng dụng không gian người dùng của bạn chứ không phải bởi hạt nhân, hạt nhân sẽ thấy câu trả lời là "không được yêu cầu".
Bạn có thể thay đổi mặc định này trong /proc/sys/net/ipv4/conf/*/arp_accept
(trên cơ sở mỗi thiết bị hoặc trên tất cả các thiết bị).
Cảm ơn bạn đã trả lời nhanh !!! Bây giờ tôi thấy. Tuy nhiên, có cách nào khác để làm điều đó khác sau đó thay đổi/proc/sys/net/ipv4/conf/*/arp_accept? bởi ioctl? – Aitjcize
Tại sao bạn cần một cách khác? Có chuyện gì vậy? Bạn có thể sử dụng "tất cả" thay vì * nếu bạn không biết giao diện nào được đặt. – camh
@Aitjcize: '/ proc/sys /' là một giao diện cho sysctl, tuy nhiên nó là giao diện * ưa thích * trên Linux. Bạn có thể thay đổi nó một cách lập trình với một 'fopen() đơn giản; fprintf(); chuỗi fclose(); – caf