У меня есть машина с тремя сетевыми картами. Одна карта подключена к глобальной сети, а две другие карты подключены к одному коммутатору в одной подсети (192.168.1.0/24). То, что я хочу сделать, это отправить данные между двумя картами, но убедиться, что данные действительно проходят через коммутатор, а не оставаться внутренними по отношению к сетевому стеку Linux.

Когда я настраиваю две карты нормально и пытаюсь пропинговать одну из них, она работает, но Wireshark не показывает никакого трафика, поэтому он не идет в сеть.

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

Я попытался изменить настройки фильтра arp в ядре Linux, но безуспешно.

Какие-либо предложения? Спасибо!

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

1 ответ1

-1

Я новичок здесь, но у меня может быть ответ на этот вопрос.

Операционная система попытается распознать, что другая сетевая карта является локальным разработчиком. Я думаю, что вы можете использовать опцию « dev » для « ip route », чтобы вытеснить ее с другой сетевой карты.

Например, у меня есть IP-адрес:

45.32.160.129

И маршрут для этой подсети показывает устройство dev ens3

45.32.160.0/24 dev ens3 proto kernel scope link src 45.32.160.129

Но, скажем, у меня была другая сетевая карта ens4 на 45.32.161.4/24:

45.32.161.0/24 dev ens4 proto kernel scope link src 45.32.161.4

затем вы можете использовать опцию « dev » для « ip route », чтобы указать используемое устройство. Таким образом, вы можете указать, что другая сетевая карта использует себя для ip ens3 вместо нее, используя ens3 (сама), когда вы пытаетесь получить к ней доступ с локальной машины. Хитрость заключается в том, что вы также должны использовать политику маршрутизации. Поскольку у вас не может быть сетевой карты, попытайтесь получить доступ к себе и выйти из интерфейса других карт, потому что она никогда не найдет себя. Таким образом, вы должны указать для политики / источника маршрутизации, что он должен прыгать только через другую карту, когда эта карта пытается получить к ней доступ. Вот где вы должны указать исходное соответствие. Более того, вам нужно будет убедиться, что вы привязываетесь к правильному IP-адресу источника в выбранном вами сетевом программном обеспечении, которое вы пытаетесь использовать или тестировать. Это должно заставить его получить доступ к другой сетевой карте через коммутатор. Конечно, тогда вы сделали бы то же самое для другой карты, но наоборот.

Это может решить вашу проблему. Посмотрите справочную страницу « ip route » для определения приоритета маршрута и параметра « dev ». Затем посмотрите на соответствие правил, чтобы выполнить часть политики. Это должно выглядеть примерно так:

ip rule add from 45.32.161.4 lookup from1
ip rule add from 45.32.160.129 lookup from2

Затем добавьте противоположные маршруты:

ip route add 45.32.160.129 via 45.32.161.4 dev ens4 table from1
ip route add 45.32.161.4 via 45.32.160.129 dev ens3 table from2

И вам нужно, чтобы эти таблицы были созданы в /etc /iproute2

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .