Назад | Перейти на главную страницу

Возможны ли постоянные статические записи ARP в Windows?

Я сейчас бегу coLinux настроен в сетевом режиме «ndis-bridged» на машине, чья беспроводная сетевая карта или драйвер кажется неспособным или не желающим принимать нешироковещательный трафик уровня 2 или трафик, не предназначенный для основного MAC-адреса беспроводной карты.

Выяснив, что это проблема, я попытался настроить интерфейс coLinux так, чтобы он имел тот же MAC-адрес, что и хост-машина. Волшебным образом сеть заработала. К сожалению, остается только одна проблема: хост-машина не может взаимодействовать с экземпляром coLinux, хотя остальная часть локальной сети может.

Я понял, что, добавив статическую запись ARP к хосту для IP-адреса (ов) экземпляра coLinux, я смогу обеспечить полное соединение в мостовом режиме, даже если беспроводная карта / драйвер не хотели подыгрывать.

Несмотря на хакерство этой настройки, я хотел бы сохранить ее по нескольким причинам, в первую очередь из-за производительности ввода-вывода для экземпляра coLinux. Это подводит меня к проблеме: сохранение записей ARP на хост-машине.

Я искал в Интернете, но не смог найти эквивалент WinNT /etc/arp из UNIX. Такой файл существует? Я подозревал где-то в реестре, но, увы, поиски пока безрезультатны.

Моя единственная альтернатива - запустить командный файл при запуске, чтобы воссоздать записи ARP с помощью arp инструмент командной строки, но это, по иронии судьбы, кажется хакерским. :)

Спасибо.

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 свойство для рассматриваемого сетевого адаптера. Что касается меня, я использую свой адаптер Ethernet, поэтому я буду использовать 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'

Вам будет предложено подтверждение дважды: один раз для удаления записи из активного хранилища и один раз для постоянного хранилища. Подтвердить да to для обоих, чтобы полностью удалить запись. Вы можете опустить -InterfaceIndex параметр, чтобы удалить запись из всех хранилищ интерфейсов.

В Windows нет встроенного механизма для постоянных записей ARP. Лучше всего использовать сценарий запуска, чтобы указать необходимые статические записи ARP при каждой загрузке.

Вы должны иметь возможность использовать команду arp -s, чтобы добавить статическую запись в таблицу ARP.

arp -s 157.55.85.212 00-aa-00-62-c6-09 .... Добавляет статическую запись.

Проблема с драйверами NDIS заключается в том, что они добавляют дополнительный уровень между ОС и сетевой картой, что затрудняет работу на уровне Layer2 (особенно с беспроводными картами). Глядя на сайт coLinux (http://colinux.wikia.com/wiki/Network#Recommended_Setup) они рекомендуют использовать 2 виртуальных интерфейса: один для coLinux для связи с локальной сетью, а другой для coLinux для связи с хостом. Вы рассматривали эту конфигурацию?

Есть команда arp -s в Windows для этого, но будьте осторожны, я думаю, что из Vista он больше не работает (просто протестировал его в Win10 с помощью административной командной строки). arp не показывает ошибки, но после arp -a запись не отображается.
Единственный способ, как написал @goofology, - через netsh. Несколько лет назад эта проблема стоила мне некоторого времени, я пробовал ее на нескольких компьютерах. [не могу комментировать ответ Конора с arp -s предложение, поэтому я делаю это как ответ для всех, кто пытается сделать это через arp -s]