У меня есть конфигурация, в которой у меня есть два хоста (A и B), подключенных между ними. У каждого хоста есть 4-портовая карта сетевого интерфейса (NIC). Когда я настраиваю все восемь интерфейсов так, чтобы они принадлежали одной подсети, и я пингую
, например, с порта 1 хоста A на порт 1 хоста B, это не работает. Захват трафика через эти интерфейсы показывает, что запросы ARP генерируются, но нет ответов.
При изменении конфигурации так, чтобы каждый порт принадлежал другой подсети (допустим, порт 1 обоих сетевых адаптеров принадлежит 192.168.100.0/24
, а порт 2 обоих сетевых адаптеров принадлежит 192.168.101.0) / 24
) и я пинг
снова, это работает.
При поиске в Google я нашел следующую ссылку . В соответствии с этим проблема может заключаться в том, что «в Linux IP-адрес принадлежит хосту и не связан с интерфейсом». Итак, я предполагаю, что когда хост B получает пинг
и пытается ответить, он не знает, через какой интерфейс он должен быть отправлен обратно.
Тем не менее, я не до конца понял, что на самом деле означает это утверждение.Может ли кто-нибудь помочь мне понять это и почему на запросы ARP тоже не отвечают (я думал, что MAC-адреса связаны с интерфейсами)?
Формулировка «в Linux IP-адрес принадлежит хосту и не связан с интерфейсом» не совсем верна.Фактически, в Linux IP-адрес связан с интерфейсом, но стек TCP / IP ядра отвечает на любой известный IP-адрес на любой интерфейс. Итак, если у вас есть, например, два интерфейса: 10.0.0.1, подключенный к сети 10.0.0.0/16, и 192.168.0.1, подключенный к сети 192.168.0.0/16, то если вы пингуетесь 10.0.0.1 с любого устройства в сети 192.168.0.0 / 16 (конечно, при условии, что маршрутизация настроена так, что она направляет эти пакеты на 192.168.0.1), вы получите ответ от интерфейса 192.168.0.1, утверждающий, что он от 10.0.0.1, даже если переадресация IP не включена в ядре.
Следовательно, если два интерфейса подключены к одной и той же подсети, вы никогда не узнаете, какой из них ответит. То же самое относится к запросам ARP, поскольку запросы ARP отправляются широковещательной рассылкой на все интерфейсы в подсети с вопросом «у кого есть IP-адрес a.b.c.d?». Любой интерфейс распознает этот адрес как свой собственный и может ответить.