我目前正在跑步协同Linux在“ndis-bridged”网络模式下配置,在一台机器上,其无线网卡或驱动程序似乎无法或不愿意接受非广播第 2 层流量,或不是发往无线网卡主 MAC 地址的流量。
弄清楚了这个问题之后,我尝试将 coLinux 接口配置为与主机具有相同的 MAC 地址。神奇的是,网络开始正常工作。不幸的是,只剩下一个问题:主机无法与 coLinux 实例通信,尽管 LAN 的其余部分可以通信。
我发现,通过向主机添加 coLinux 实例 IP 地址的静态 ARP 条目,我可以在桥接模式下实现完全连接,即使无线网卡/驱动程序不想一起使用。
尽管这种设置有点儿不合理,但出于一些原因,我还是想保留它,其中主要原因是 coLinux 实例的 IO 性能。这给我带来了一个问题:在主机上保留 ARP 条目。
我搜索了网络,但无法找到/etc/arp
UNIX 的 WinNT 等效文件。这样的文件存在吗?我怀疑是在注册表的某个地方,但遗憾的是,我的搜索到目前为止毫无结果。
我唯一的选择是在启动时运行批处理文件,使用arp
命令行工具重新创建 ARP 条目,但具有讽刺意味的是,这似乎是黑客行为。:)
谢谢。
答案1
netsh interface ipv4 add neighbors "Local Area Connection" 10.1.1.1 12-34-56-78-9a-bc
这将创建一个在重启后仍然存在的静态 arp 条目。但是添加条目时要小心,因为如果没有修补程序,您可能无法删除它们:
答案2
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
参数以从所有接口存储中删除该条目。
答案3
您应该能够使用 arp -s 命令向 ARP 表添加静态条目
arp -s 157.55.85.212 00-aa-00-62-c6-09 .... 添加静态条目。
答案4
NDIS 驱动程序的问题在于它们在操作系统和网卡之间添加了一个额外的层,使得在第二层工作变得困难(尤其是无线网卡)。在查看 coLinux 网站时(http://colinux.wikia.com/wiki/Network#Recommended_Setup)他们建议使用 2 个虚拟接口:一个用于 coLinux 与 LAN 通信,另一个用于 coLinux 与主机通信。您考虑过这种配置吗?