Ситуация:
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 и на самом деле является другим вопросом.