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

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

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

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

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

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

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

Благодарю.

5 ответов

Решение
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-NetIPInterface

Который возвращает список ваших интерфейсов и, в частности, свойство под названием ifIndex, В моем случае мой основной интерфейс имеет индекс 12, поэтому я буду использовать его для следующих команд.

Чтобы создать статическую запись кэша ARP для этого интерфейса:

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

Который возвращает:

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

Это установит постоянные записи кэша ARP, которые переживут перезагрузку. Вы можете перезагрузиться, а затем перепроверить, выполнив это:

Get-NetNeighbor -InterfaceIndex 12 -IPAddress 192.168.0.10

Который должен вернуть ту же запись, которую вы видели до перезагрузки.

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

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

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

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

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

Другие вопросы по тегам