Принудительно трафик локальной сети через коммутатор
У меня есть машина с тремя сетевыми картами. Одна карта подключена к глобальной сети, а две другие карты подключены к одному и тому же коммутатору в одной подсети (192.168.1.0/24). То, что я хочу сделать, это отправить данные между двумя картами, но убедиться, что данные действительно проходят через коммутатор, а не оставаться внутренними по отношению к сетевому стеку Linux.
Когда я настраиваю две карты нормально и пытаюсь пропинговать одну из них, она работает, но Wireshark не показывает никакого трафика, поэтому он не идет в сеть.
Я попытался настроить статические маршруты к коммутатору, пытаясь заставить весь трафик проходить через коммутатор. Когда я делаю это, на пинг откликается сеть, и я получаю поток ARP-запросов без ответа, пытающихся найти другой адрес. Но любой адрес может пропинговать другой компьютер в подсети, и этот компьютер может пропинговать любой адрес.
Я попытался изменить настройки фильтра arp в ядре Linux, но безуспешно.
Какие-либо предложения? Спасибо!
Кроме того, бонусные баллы за настройку одного сетевого адаптера с IP-псевдонимами, чтобы сделать то же самое.
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