Назад | Перейти на главную страницу

Маршрут между двумя виртуальными интерфейсами на одной сетевой карте Linux

У меня есть машина с Ubuntu, которая является моим брандмауэром

В аппарате есть 2 карты NIC. eth0 и eth1. eth1 подключен к модему, который дает ему IP-адрес 10.10.1.X

eth1 требуется для предоставления DHCP на 192.168.2.X и наличия другого IP-адреса от коммутатора, который подключен к маршрутизатору, который предоставляет DHCP на 192.168.1.X

В настоящее время эта машина имеет следующие IP-адреса

eth0 - 10.10.0.4
eth1 - 192.168.2.1 (DHCP Server, Gateway)
eth1:0 - 102.168.1.103

Я пытаюсь выполнить следующее

Если машина подключена к eth1 через коммутатор, она должна иметь возможность пинговать 192.168.1.10, который

 [Modem+Router 10.1.1.0/24]
   |
   |
   |
 (eth0)                  |----- [ Server 192.168.1.10]
 Ubuntu                  |
Firewall (eth1) ----- [Switch]-----[Modem+Router 192.168.1.0/24]
         (eth1:0)--------| \
                            \
                             \--------[EndPoint 192.168.2.4]   

Моя основная проблема заключается в том, что я получаю пакеты из 2.4, которые предназначены для Интернета, и я могу правильно их маршрутизировать с помощью IpTables. Принимая во внимание, что если пакет прибывает для 1.10, я должен отправить его обратно на коммутатор с соответствующими установленными параметрами.

Я пробовал следующее

Ваша конфигурация обычно должна работать из коробки. Маршрутизация в принципе поддерживается кодом маршрутизации Linux и не имеет ничего общего с Netfilter. «iptables» - это утилита пользовательского пространства для настройки ядра Netfilter framework, которая выполняет фильтрацию и модификацию пакетов (изменение и преобразование адресов), но не выполняет никакой маршрутизации. Поэтому неверно говорить «Я маршрутизирую с помощью iptables».

Мосты - это тоже разные вещи, и они не должны вам здесь помогать. Мостовое соединение интерфейсов с псевдонимами, вероятно, должно создать петлю и, таким образом, нарушить работу сети в этом сегменте Ethernet.

Вам нужны маршруты в обе стороны, например, ip route add 192.168.2.0/24 via 192.168.1.103 на хостах в сети 192.168.1.0/24 и настроить 192.168.2.1 в качестве шлюза по умолчанию на хостах в сети 192.168.2.0/24.

Если вы жестко настроили брандмауэр на брандмауэре, вам необходимо включить пересылку трафика с eth1 на eth1: 1 и обратно:

iptables -A FORWARD -i eth1 -o eth1:0 -j ACCEPT
iptables -A FORWARD -o eth1 -i eth1:0 -j ACCEPT

Или вам может понадобиться только одно первое правило, если вы уже настроили брандмауэр с отслеживанием состояния с iptables -A FORWARD -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT или с -m состоянием (устарело).

Специальная конфигурация iptables необходима только в том случае, если вы хотите замаскировать этот трафик, чтобы хосты в 192.168.1.0/24 не знали, что вы подключаетесь из сети 192.168.2.0/24. Тогда вам не нужны дополнительные маршруты на стороне .1.0 / 24, но нужно правило NAT и правило включения пересылки:

iptables -t nat -A POSTROUTING -o eth1:1 -s 192.168.2.0/24 -o 192.168.1.0/24 -j SNAT --to-source 192.168.1.103
iptables -A FORWARD -i eth1 -o eth1:0 -j ACCEPT