Направить весь трафик с одного интерфейса на шлюз по умолчанию с другим IP-адресом

Направить весь трафик с одного интерфейса на шлюз по умолчанию с другим IP-адресом

Ситуация:

eth0 - сеть по умолчанию с доступом в Интернет IP: 192.168.2.1 Шлюз по умолчанию: 192.168.2.254

eth0:1 192.168.2.2 Виртуальный NIC, то же самое, что и eth0, но другой IP. Тот же кабель Этот IP имеет другой доступ в Интернет

eth1: 192.168.0.1

eth2: 192.168.1.1

Весь трафик с eth1 и eth2 направляется на 192.168.2.254 с использованием 192.168.2.1

Мне нужно направить весь трафик, идущий с eth2 на 192.168.2.254, но используя вторичный IP 192.168.2.2

Я перепробовал много разных конфигураций, но безуспешно.

решение1

То, что вам нужно, называется маршрутизацией политики источника. Инструкции по настройке маршрутизации политики источника можно найти здесьздесь, в Linux Advanced Routing & Traffic Control HOWTO.

Суть в том, что вы хотите добавить в свою систему новую таблицу маршрутизации с именем, например, INET2 (эти команды должны быть запущены от имени пользователя root):

эхо 200 INET2 >> /etc/iproute2/rt_tables

Затем вам нужно добавить исходное правило в основную таблицу маршрутизации IP (предполагаю, что это сеть /24):

добавить правило ip из таблицы 192.168.1.0/24 INET2

Далее вам нужно назначить маршрут по умолчанию для таблицы INET2 (вы не упомянули шлюз по умолчанию для вашего второго соединения, поэтому я предполагаю здесь):

добавить маршрут ip по умолчанию через 192.168.2.253 dev eth0:1 table INET2

Наконец, вам необходимо очистить кэш маршрутов в системе:

ip route очистить кэш

Правила, созданные таким образом, являются эфемерными и исчезнут при перезапуске системы (хотя таблица INET2 сохранится), поэтому вам нужно будет поместить правила в скрипт запуска для сетевого интерфейса. Как именно это сделать, зависит от вашего конкретного дистрибутива Linux и на самом деле является другим вопросом.

Связанный контент