У меня есть система Linux с 3 выделенными сетевыми картами, и все 3 находятся в одной подсети со следующими IP-адресами
ETH0: 192.168.1.10
ETH1: 192.168.1.11
ETH2: 192.168.1.12
Я настроил три таблицы маршрутизации и соответствующие IP-маршруты и правила для изоляции трафика 3 портов. Ниже показано то же самое для 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 подключен, когда я пингую IP-адреса ETH1 и ETH2, я получаю ответ от ETH0. В другом вопросе,Ghost ping в системе Linux с несколькими сетевыми картамиЯ выяснил, что это вызвано тем, что таблица ARP заполнена одним и тем же MAC-адресом для всех трех портов.
Я установил arp_ignore и arp_announce, как указано здесьUbuntu Linux — несколько сетевых карт, одна и та же локальная сеть… Ответы ARP всегда отправляются через одну сетевую карту& Я вижу записи ARP на ПК, содержащие правильные MAC-адреса.
Однако я все еще вижу, что только один порт становится "портом по умолчанию" в этом случае. Это можно легко увидеть, когда, скажем, ETH1 и ETH2 уже подключены, и кабель для ETH0 теперь подключен, но ETH0 подключен к изолированному коммутатору (который не имеет подключения к подсети). Теперь ETH0 становится портом по умолчанию, и из-за изоляции пинги к ETH1 и ETH2 также не проходят.
Есть ли способ по-настоящему изолировать трафик на трех портах?