У меня есть система Linux с 3 выделенными сетевыми адаптерами, и все 3 находятся в одной подсети со следующими IP-адресами
ETH0: 192.168.1.10
ETH1: 192.168.1.11
ETH2: 192.168.1.12
Я установил три таблицы маршрутизации и соответствующие IP-маршруты и правила, чтобы изолировать трафик трех портов. Ниже показано то же самое для ETH1. ETH0 и ETH2 также имеют похожие записи.
default via 192.168.1.1 dev eth1
192.168.1.0/24 dev eth1 src 192.168.1.11
32752: from all to 192.168.1.11/24 lookup 1
32753: from 192.168.1.11/24 lookup 1
Если ETH1 и ETH2 отключены, а ETH0 подключен, когда я пингую ETH1 и ETH2 IP, я получаю ответ от ETH0. В другом вопросе, Призрачный пинг в системе Linux с несколькими сетевыми картами Я выяснил, что это вызвано тем, что таблица ARP заполнена одним и тем же MAC-адресом для всех 3 портов.
Я установил arp_ignore и arp_announce, как указано здесь Ubuntu Linux - несколько сетевых карт, одна и та же локальная сеть… ARP-ответы всегда отправляются с одной сетевой карты. & Я вижу записи ARP на ПК, содержащие правильные MAC-адреса.
Однако я все еще вижу, что только один порт становится "по умолчанию" в этом случае. Это очень легко увидеть, если, скажем, ETH1 и ETH2 уже подключены, а кабель для ETH0 теперь подключен, но ETH0 подключен к изолированному коммутатору (который не имеет подключения к подсети). Теперь ETH0 становится значением по умолчанию, и из-за изоляции пинги к ETH1 и ETH2 также не работают.
Есть ли способ по-настоящему изолировать трафик на трех портах?