Networking

Windows 上的持久靜態 ARP 條目,這可能嗎?

  • July 11, 2020

我目前在一台機器上執行配置為“ndis-bridged”網路模式的coLinux ,其無線網卡或驅動程序似乎無法或不願接受非廣播第 2 層流量,或者不是發往無線卡主 MAC 地址的流量。

在確定這是問題所在後,我嘗試將 coLinux 介面配置為與主機具有相同的 MAC 地址。神奇的是,網路開始發揮作用。不幸的是,只剩下一個問題:主機無法與 coLinux 實例通信,儘管 LAN 的其餘部分可以。

我發現通過為 coLinux 實例的 IP 地址添加一個靜態 ARP 條目到主機,我可以在橋接模式下完成完全連接,即使無線網卡/驅動程序不想一起玩。

儘管這個設置很老套,但出於幾個原因,我還是想保留它,其中主要是 coLinux 實例的 IO 性能。這給我帶來了一個問題:在主機上保留 ARP 條目。

我在網上搜尋過,但無法/etc/arp從 UNIX 中找到等效的 WinNT。這樣的文件存在嗎?我懷疑在系統資料庫中的某個地方,但可惜的是,到目前為止我的搜尋都沒有結果。

我唯一的選擇是在啟動時執行一個批處理文件,以使用arp命令行工具重新創建 ARP 條目,但具有諷刺意味的是,這似乎是 hackish。:)

謝謝。

netsh interface ipv4 add neighbors "Local Area Connection" 10.1.1.1 12-34-56-78-9a-bc

這將創建一個在重新啟動後仍然存在的靜態 arp 條目。但是要小心添加條目,因為如果沒有修補程序,您可能無法刪除它們:

https://support.microsoft.com/en-us/kb/2718830

netsh不再是 Windows 系統上網路介面管理的首選方法。如果可能,您應該使用 Windows Powershell 或 Powershell Core。首先,您需要找出您希望 ARP 記憶體條目應用於的介面的介面索引:

Get-NetAdapter

返回:

Name      InterfaceDescription                    ifIndex Status       MacAddress         LinkSpeed
----      --------------------                    ------- ------       ----------         ---------
Wi-Fi     Intel(R) Dual Band Wireless-AC 8260          18 Disconnected 12-34-56-AB-CD-EF     6 Mbps
Ethernet  Intel(R) Ethernet Connection (2) I219-…       9 Up           78-90-12-GH-IJ-KL     1 Gbps

這是您的網路適配器的列表。記下ifIndex相關網路適配器的屬性。對我來說,我正在使用我的乙太網適配器,所以我將ifIndex在我的範例中使用 9。

要為該介面創建靜態 ARP 記憶體條目:

New-NetNeighbor -InterfaceIndex 9 -IPAddress '192.168.0.10' -LinkLayerAddress '0000120000ff' -State Permanent

返回:

ifIndex IPAddress      LinkLayerAddress      State       PolicyStore
------- ---------      ----------------      -----       -----------
9       192.168.0.10   00-00-12-00-00-ff     Permanent   PersistentStore

這將設置在重新啟動後仍然存在的持久 ARP 記憶體條目。您可以重新啟動,然後通過執行以下命令進行仔細檢查:

Get-NetNeighbor -InterfaceIndex 9 -IPAddress 192.168.0.10

返回:

ifIndex IPAddress     LinkLayerAddress   State      PolicyStore
------- ---------     ----------------   -----      -----------
9       192.168.0.10  00-00-12-00-00-FF  Permanent  ActiveStore

您可以通過執行以下命令刪除我們剛剛創建的條目:

Remove-NetNeighbor -InterfaceIndex 9 -IPAddress '192.168.0.10'

系統將提示您確認兩次,一次是從活動儲存中刪除條目,一次是永久儲存。對兩者都確認,以完全刪除該條目。您可以省略該-InterfaceIndex參數以從所有介面儲存中刪除該條目。

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