ОС: Linux
Мне нужен совет, как настроить таблицу маршрутизации. У меня есть коробка с двумя физическими сетевыми картами eth0 и eth1 с двумя связанными IP-адресами IP1 и IP2 (оба из одной подсети). Мне нужно настроить маршрут, который заставит все сообщения с IP1 на IP3 (из той же подсети) проходить через IP2. У меня есть программа захвата сырых сокетов, прослушивающая IP2 (это не для злонамеренного использования).
Я настроил таблицу маршрутизации как
Destination Gateway Genmask Flags Metric Ref Use Iface IP3 IP2 255.255.255.255 UGH 0 0 0 eth1
Если я попытаюсь указать eth0 при добавлении вышеуказанного правила, я получаю сообщение об ошибке «SIOCADDRT: Сеть недоступна». Я понимаю из справочной страницы маршрута, что если указанный GW является локальным интерфейсом, то он будет использоваться в качестве исходящего интерфейса.
После настройки этого правила, если я выполняю трассировку (-i eth0), пакет сначала отправляется на шлюз по умолчанию, а затем на IP3.
Как мне заставить пакет, исходящий от eth0 к IP3, сначала прийти на IP2. Не могу внести изменения в таблицу маршрутизации шлюза.
Пожалуйста, предложите.
Если я правильно вас понял, вам нужна маршрутизация на основе политик, в частности маршрутизация на основе источника. Вот простой как сделать именно это.
Идея состоит в том, что традиционная маршрутизация делает свой выбор маршрутизации, глядя на поле адреса назначения в IP-заголовке и сравнивая его со своей таблицей маршрутизации. Маршрутизация на основе политик может смотреть на другие поля или даже другие элементы, такие как порты TCP. В случае маршрутизации на основе источника он смотрит на поле адреса источника в заголовке IP.