Linux

有故障的列印機不響應 ARP 請求。如何從 Linux 路由器欺騙它?

  • February 12, 2018

我有這台愚蠢的列印機,它只會偶爾回復一次 ARP(相對很少,有時必須等待 5 分鐘才能建立連接)。但是,當我將其 MAC 手動添加到客戶端電腦上的 ARP 表時,它執行良好(立即響應 ICMP ping、列印等)。

一種解決方案可能是將其靜態添加到/etc/ethers每台客戶端電腦上。但這可能是錯誤的,因為未來新機器將無法了解它。

該本地網路由 Linux 路由器執行。

另一個解決方案是讓該路由器(10.77.4.1) 響應針對該列印機 (10.77.4.5) 的 ARP 請求。我閱讀了一些手冊,並認為在那個 Linux 路由器上執行此操作就足夠了:

$ sudo arp -i wlan0 -s 10.77.4.5 f4:81:39:86:73:cb pub

…即添加手冊(永久)和已發布條目,但事實證明pub,在快速Google™’ing 之後,該功能從未起作用?…

我也想過使用arpingarpoison廣播這台列印機的地址,但他們必須不斷地這樣做(比如每一秒),才能使東西可靠地工作。如果路由器只響應請求會更好。

我怎樣才能讓它做到這一點?


這是它的外觀:

# arping 10.77.4.5
ARPING 10.77.4.5
Timeout
Timeout
Timeout
Timeout
Timeout
Timeout
42 bytes from f4:81:39:86:73:cb (10.77.4.5): index=0 time=250.435 msec
Timeout
Timeout
Timeout
Timeout
Timeout
Timeout
Timeout
Timeout
Timeout
Timeout
Timeout
Timeout

……在引擎蓋下:

# tcpdump -i wlp8s0 -v arp
tcpdump: listening on wlp8s0, link-type EN10MB (Ethernet), capture size 262144 bytes
21:34:44.877417 ARP, Ethernet (len 6), IPv4 (len 4), Request who-has 10.77.4.5 tell 10.77.4.100, length 44
21:34:45.878547 ARP, Ethernet (len 6), IPv4 (len 4), Request who-has 10.77.4.5 tell 10.77.4.100, length 44
21:34:46.879713 ARP, Ethernet (len 6), IPv4 (len 4), Request who-has 10.77.4.5 tell 10.77.4.100, length 44
21:34:47.880887 ARP, Ethernet (len 6), IPv4 (len 4), Request who-has 10.77.4.5 tell 10.77.4.100, length 44
21:34:48.882064 ARP, Ethernet (len 6), IPv4 (len 4), Request who-has 10.77.4.5 tell 10.77.4.100, length 44
21:34:49.883216 ARP, Ethernet (len 6), IPv4 (len 4), Request who-has 10.77.4.5 tell 10.77.4.100, length 44
21:34:50.884338 ARP, Ethernet (len 6), IPv4 (len 4), Request who-has 10.77.4.5 tell 10.77.4.100, length 44
21:34:51.134742 ARP, Ethernet (len 6), IPv4 (len 4), Reply 10.77.4.5 is-at f4:81:39:86:73:cb (oui Unknown), length 28
21:34:51.928209 ARP, Ethernet (len 6), IPv4 (len 4), Request who-has 10.77.4.5 tell 10.77.4.100, length 44
21:34:52.886242 ARP, Ethernet (len 6), IPv4 (len 4), Request who-has 10.77.4.5 tell 10.77.4.100, length 44
21:34:53.886689 ARP, Ethernet (len 6), IPv4 (len 4), Request who-has 10.77.4.5 tell 10.77.4.100, length 44
21:34:54.887869 ARP, Ethernet (len 6), IPv4 (len 4), Request who-has 10.77.4.5 tell 10.77.4.100, length 44
21:34:55.889023 ARP, Ethernet (len 6), IPv4 (len 4), Request who-has 10.77.4.5 tell 10.77.4.100, length 44
21:34:56.890206 ARP, Ethernet (len 6), IPv4 (len 4), Request who-has 10.77.4.5 tell 10.77.4.100, length 44
21:34:57.891361 ARP, Ethernet (len 6), IPv4 (len 4), Request who-has 10.77.4.5 tell 10.77.4.100, length 44
21:34:58.892543 ARP, Ethernet (len 6), IPv4 (len 4), Request who-has 10.77.4.5 tell 10.77.4.100, length 44
21:34:59.893485 ARP, Ethernet (len 6), IPv4 (len 4), Request who-has 10.77.4.5 tell 10.77.4.100, length 44
21:35:00.894657 ARP, Ethernet (len 6), IPv4 (len 4), Request who-has 10.77.4.5 tell 10.77.4.100, length 44
21:35:01.895783 ARP, Ethernet (len 6), IPv4 (len 4), Request who-has 10.77.4.5 tell 10.77.4.100, length 44
21:35:02.896968 ARP, Ethernet (len 6), IPv4 (len 4), Request who-has 10.77.4.5 tell 10.77.4.100, length 44
21:35:03.898118 ARP, Ethernet (len 6), IPv4 (len 4), Request who-has 10.77.4.5 tell 10.77.4.100, length 44
21:35:04.899301 ARP, Ethernet (len 6), IPv4 (len 4), Request who-has 10.77.4.5 tell 10.77.4.100, length 44

我會以此為藉口設置 CUPS 伺服器,因為如果將來需要更換管理員或網路需要重構。

您不僅可以通過這種方式整合您的列印管理平面,還可以使用 CUPS 作為中央伺服器進行定址,讓您可以將任何 ARP 修復集中在單個伺服器上。可以使用來自 CUPS 的 IPP 或 IPPS 連接來表示使用各種連接類型的列印機,從而使客戶端連接管理更加容易。

我不確定這是否是您在此環境中唯一的列印機,但即使是 CUPS 仍然是解決問題的好方法。可以在此處找到有關安裝的一些詳細資訊:

https://help.ubuntu.com/lts/serverguide/cups.html

引用自:https://serverfault.com/questions/896767