Trong mạng gia đình của tôi (10.0.0.0/24) tôi muốn triển khai một máy in mạng mà không cần đặt cáp từ bộ chuyển đổi sang nó. Vì vậy, tôi đã sử dụng Raspberry Pi, kết nối qua Wifi với mạng không dây của tôi và kết nối cổng Ethernet với máy in. Mục tiêu là có một cái gì đó giống như một cây cầu Wifi-Ethernet ở đây ...
RPi Ethernet IP (eth0): 10.0.0.32
RPi Wifi IP (wlan0): 10.0.0.31
Printer IP: 10.0.0.30
Sau khi chơi xung quanh với tcpdump tôi phát hiện ra rằng RPi đang trả lời các Yêu cầu ARP từ Bộ định tuyến (10.0.0.1), chỉ khi tôi có
net.ipv4.ip_forward = 1
net.ipv4.conf.all.proxy_arp = 1
kích hoạt. Những gì tôi có thể hiểu được đọc các trang web. Tôi đã thử nghiệm điều này với các lệnh đơn giản từ bộ định tuyến đến IP của máy in.
Bây giờ, khi tôi xóa ARP Cache trên bộ định tuyến mà không mở tcpdump trên RPi, bằng cách nào đó, ARP Responses đã ngừng hoạt động. Vì vậy, tôi đã tự hỏi tại sao nó bắt đầu hoạt động trở lại, ngay khi tôi bắt đầu tcpdump trên Pi. Hóa ra, tcpdump đang đưa Giao diện WiFi của Raspberry Pi sang chế độ lăng nhăng. Để hoạt động chính xác, tôi đặt Giao diện WiFi của Pi ở chế độ lăng nhăng vĩnh viễn
ip link set wlan0 promisc on
và mọi thứ hiện đang hoạt động tốt, nhưng vì tôi có Cảm giác rằng giải pháp này "có mùi" nên tôi muốn biết những gì đang diễn ra ở đây và tại sao proxy_arp không đủ?
Ngoài ra, vì tôi có hai giao diện mạng ở đây, hoạt động trên cùng một mạng con, tôi đã đảm bảo với một số chính sách tuyến đường, chỉ lưu lượng truy cập đến máy in được định tuyến qua eth0.
localhost ~ # ip rule show
0: from all lookup local
32764: not from all to 10.0.0.30 lookup main
32765: from all to 10.0.0.30 lookup print
32766: from all lookup main
32767: from all lookup default
localhost ~ # ip route show table print
10.0.0.30 dev eth0 scope link