Рейтинг:0

Связь на сетевом уровне с несколькими хостами с одинаковым IP-адресом, но разными MAC-адресами

флаг cn

Из-за досадной (неправильной) проблемы с конфигурацией у меня есть ~ 100 хостов, из которых адреса IPv6 / IPv4 (даже локальные адреса IPv6) одинаковы и которые на данный момент я не могу изменить. Однако все хосты имеют уникальные и известные MAC-адреса и находятся в одном широковещательном домене. Можно ли общаться с хостами индивидуально и одновременно на уровне IP, самостоятельно создавая соответствующий кадр Ethernet, который использует известный MAC-адрес, а не MAC-адрес, полученный через ARP/...? Все (встроенные) хосты используют сетевой стек Linux.

Существуют ли оболочки для существующих программ, таких как curl, которые позволили бы мне даже поддерживать отдельное TCP-соединение с каждым хостом, позволяя мне одновременно общаться с ними через HTTP в приведенной выше ситуации? Мне кажется, что в теории это должно быть возможно.

Effie avatar
флаг ne
как вы можете различить их, основываясь только на IP-адресе и вышеприведенном заголовке?
Zac67 avatar
флаг ru
Сопоставьте каждый за раз на статический ARP и измените его IP-адреса на что-то уникальное. Возможно, вы захотите рассмотреть DHCP.
Рейтинг:1
флаг do

Как @AlexD указано, вы должны вручную связать на вашем локальном компьютере общий IP-адрес азбука с желаемым MAC-адресом хх-хх-хх-хх-хх-хх каждого конкретного удаленного хоста, чтобы вы могли подключиться к нему.

В Windows можно использовать арп команда в окне командной оболочки с повышенными привилегиями:

arp -s a.b.c.d xx-xx-xx-xx-xx-xx

Эта ассоциация является постоянной до тех пор, пока не будет удалена с помощью arp -d a.b.c.d (как указано арп-?).

Команды и параметры -с/-д в Linux такие же, выполняются в оболочке с корень привилегии или с префиксом судо, но влияют только на резидентный ARP-кеш, поэтому при перезапуске забываются (мужчина арп Рекомендовано).

Изменить: как @Zac67 заявлено, что может быть только одна пара IP/MAC для каждого хоста в локальной сети. Это связано с тем, что локальный трафик выполняется с использованием только последнего известного MAC-адреса (найденного с помощью запроса ARP или поиска в таблице ARP) для данного IP-адреса. Если есть другие машины с таким же IP, они не будут распознаны.

Это изменится только в том случае, если:

  1. [Ассоциация была статической (сделанной администратором с помощью команды arp)] Пара снова изменена администратором или забыта при перезапуске этой машины, если она не является постоянной (тогда она изменится на динамическую). Или же,

  2. [Поиск был динамическим по протоколу ARP.] Через некоторое время результат будет помечен как устаревший и при следующем подключении будет спровоцирован новый поиск в локальной сети. Тогда какой-нибудь другой хост может выиграть гонку за предоставление своего MAC-адреса.

Ручное сопряжение имеет более высокий приоритет, чем автоматическое.

Это сводится к следующему: у нас может быть только одна пара IP/MAC для хоста назначения, чтобы иметь успешную связь. Если в локальной сети есть несколько пар из-за ошибки конфигурации или вредоносных программ/хакерских действий, и мы используем автоматическое обнаружение ARP, у нас будут периодические проблемы или хуже.

Конечно, динамический метод с уникальными IP-адресами предпочтительнее; это означает меньше хлопот для администратора... ;)

Zac67 avatar
флаг ru
Следует добавить, что статический ARP работает одновременно с одним хостом, одновременные соединения с несколькими хостами, как правило, невозможны.
Рейтинг:0
флаг jp

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

Рейтинг:0
флаг ru

То, что вы просите, возможно только гипотетически, если вы создали свой собственный стек IP.

Если вы используете IP-адреса, стек IP использует динамический или статический ARP для определения требуемого MAC-адреса для каждого IP-адреса. В любой момент времени может быть только одно сопоставление. Приложение не может указать или принудительно указать конкретное сопоставление для любого подключения к сокету. Подробности см. в ответе @Fjor.

Если вы создали свой собственный стек IP-адресов с API-интерфейсом, позволяющим отображать IP-адреса на MAC-адреса для каждого сокета, вы можете делать то, что просите.

Ответить или комментировать

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