Windows 上的持久静态 ARP 条目,可能吗?

dmw*_*dmw 4 networking linux windows-xp arp

我目前正在运行配置为“ndis-bridged”网络模式的coLinux,其无线网卡或驱动程序似乎无法或不愿意接受非广播第 2 层流量,或者不是以无线卡的主 MAC 地址为目的地的流量。

找出问题所在后,我尝试将 coLinux 接口配置为与主机具有相同的 MAC 地址。神奇的是,网络开始发挥作用。不幸的是,只有一个问题仍然存在:主机无法与 coLinux 实例通信,即使 LAN 的其余部分可以。

我发现通过向主机添加一个用于 coLinux 实例的 IP 地址的静态 ARP 条目,我可以在桥接模式下实现完全连接,即使无线网卡/驱动程序不想一起玩。

尽管这个设置有点hackishness,我还是想保留它有几个原因,主要是coLinux 实例的IO 性能。这给我带来了一个问题:在主机上保留 ARP 条目。

我在网上搜索过,但一直无法找到与/etc/arpUNIX等效的 WinNT 。这样的文件存在吗?我怀疑在注册表中的某个地方,但可惜,到目前为止,我的搜索没有结果。

我唯一的选择是在启动时运行一个批处理文件,以使用arp命令行工具重新创建 ARP 条目,但具有讽刺意味的是,这似乎很黑。:)

谢谢。

goo*_*ogy 10

netsh interface ipv4 add neighbors "Local Area Connection" 10.1.1.1 12-34-56-78-9a-bc
Run Code Online (Sandbox Code Playgroud)

这将创建一个静态 arp 条目,该条目在重新启动后仍然存在。但是请小心添加条目,因为如果没有修补程序,您可能无法删除它们:

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


Dus*_*gas 9

netsh不再是 Windows 系统上网络接口管理的首选方法。如果可能,您应该使用 Windows Powershell 或 Powershell Core。首先,您需要找出您希望 ARP 缓存条目应用到的接口的接口索引:

\n
Get-NetAdapter\n
Run Code Online (Sandbox Code Playgroud)\n

返回:

\n
Name      InterfaceDescription                    ifIndex Status       MacAddress         LinkSpeed\n----      --------------------                    ------- ------       ----------         ---------\nWi-Fi     Intel(R) Dual Band Wireless-AC 8260          18 Disconnected 12-34-56-AB-CD-EF     6 Mbps\nEthernet  Intel(R) Ethernet Connection (2) I219-\xe2\x80\xa6       9 Up           78-90-12-GH-IJ-KL     1 Gbps\n
Run Code Online (Sandbox Code Playgroud)\n

这是您的网络适配器的列表。记下ifIndex相关网络适配器的属性。对于我来说,我使用的是以太网适配器,因此我将ifIndex在示例中使用 9。

\n

要为该接口创建静态 ARP 缓存条目:

\n
New-NetNeighbor -InterfaceIndex 9 -IPAddress '192.168.0.10' -LinkLayerAddress '0000120000ff' -State Permanent\n
Run Code Online (Sandbox Code Playgroud)\n

返回:

\n
ifIndex IPAddress      LinkLayerAddress      State       PolicyStore\n------- ---------      ----------------      -----       -----------\n9       192.168.0.10   00-00-12-00-00-ff     Permanent   PersistentStore\n
Run Code Online (Sandbox Code Playgroud)\n

这将设置在重新启动后仍保留的持久 ARP 缓存条目。您可以重新启动,然后通过运行以下命令进行双重检查:

\n
Get-NetNeighbor -InterfaceIndex 9 -IPAddress 192.168.0.10\n
Run Code Online (Sandbox Code Playgroud)\n

返回:

\n
ifIndex IPAddress     LinkLayerAddress   State      PolicyStore\n------- ---------     ----------------   -----      -----------\n9       192.168.0.10  00-00-12-00-00-FF  Permanent  ActiveStore\n
Run Code Online (Sandbox Code Playgroud)\n

您可以通过运行以下命令删除我们刚刚创建的条目:

\n
Remove-NetNeighbor -InterfaceIndex 9 -IPAddress '192.168.0.10'\n
Run Code Online (Sandbox Code Playgroud)\n

系统将提示您确认两次,一次是为了从活动存储中删除该条目,另一次是为了永久存储。确认“是”以完全删除该条目。您可以省略该-InterfaceIndex参数以从所有接口存储中删除该条目。

\n