Windows 上的持久靜態 ARP 條目,這可能嗎?
我目前在一台機器上執行配置為“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 條目。但是要小心添加條目,因為如果沒有修補程序,您可能無法刪除它們:
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
參數以從所有介面儲存中刪除該條目。