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

Доступ к двум изолированным подсетям из Linux-бокса

У меня есть Linux-бокс с двумя сетевыми адаптерами, каждый из которых подключен к другой локальной сети:

LAN A: 192.168.1.0 255.255.255.0
LAN B: 192.168.2.0 255.255.255.0

Роутеры бывают:

RouterA: 192.168.1.1
RouterB: 192.168.2.1

Точки беспроводного доступа:

WAP-B1: 192.168.2.3
WAP-B2: 192.168.2.4

Сетевые карты Linux:

NIC A: 192.168.1.2 (eth0) default gateway 192.168.1.1, metric 100
NIC B: 192.168.2.2 (eth1) metric 101

Вот диаграмма ASCII:

+-------+                                                           +-------+ 
| ISP A |                                                           | ISP B |
+-------+                                                           +-------+ 
    |                                                                   |
+---------+      +-------+      +-----------+      +-------+      +-----------+ 
| RouterA | <--> | LAN A | <--> | Linux Box | <--> | LAN B | <--> | RouterB-1 |
+---------+      +-------+      +-----------+      +-------+      +-----------+ 
                                                                    |        |
                                                            +--------+      +--------+
                                                            | WAP-B1 |      | WAP-B2 |
                                                            +--------+      +--------+ 

Я хочу, чтобы весь интернет-трафик проходил через LAN A и ISP A. Я подключаю этот Linux только к LAN B, чтобы я мог выполнять администрирование на устройствах в LAN-B, особенно RouterB и WAP-B1, WAP-B2. Поэтому я хочу, чтобы через сетевой адаптер B (eth1) маршрутизировались только адреса 192.168.2.0/24. Я хочу, чтобы весь остальной трафик маршрутизировался через NIC A. Я не хочу, чтобы хосты в обеих LAN могли подключаться друг к другу (или пинговать друг друга и т. Д.). Я хочу, чтобы LAN A и LAN B оставались изолированными.

Я подключил сетевые кабели, и вроде все работает. Я предполагаю, что метрики маршрутизации были установлены в порядке, в котором я подключал кабели. Однако я хотел бы знать, как правильно настроить правила маршрутизации, чтобы обеспечить сохранение рабочей конфигурации.

ОБНОВЛЕНИЕ: в ответ на комментарий вот вывод route -n

Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         192.168.1.1     0.0.0.0         UG    100    0        0 eth0
0.0.0.0         192.168.2.1     0.0.0.0         UG    101    0        0 eth1
192.168.1.0     0.0.0.0         255.255.255.0   U     100    0        0 eth0
192.168.2.0     0.0.0.0         255.255.255.0   U     101    0        0 eth1

Я предположил, что это таблица маршрутизации правильная. (Это всего лишь предположение.)

Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         192.168.1.1     0.0.0.0         UG    100    0        0 eth0
192.168.2.0     192.168.2.1     255.255.255.0   UG    101    0        0 eth1
192.168.1.0     192.168.1.1     255.255.255.0   U     100    0        0 eth0

В NetworkManager> IPv4> Routes я проверил «игнорировать автоматически полученные маршруты» и добавил этот статический маршрут: 192.168.2.0, сетевая маска: 255.255.255.0, шлюз: 192.168.2.1, метрика: 101.

Вот таблица маршрутизации, созданная в результате этих изменений.

Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         192.168.1.1     0.0.0.0         UG    100    0        0 eth0
192.168.2.0     192.168.2.1     255.255.255.0   UG    101    0        0 eth1
192.168.2.0     0.0.0.0         255.255.255.0   U     101    0        0 eth1
192.168.1.0     192.168.1.1     255.255.255.0   U     100    0        0 eth0

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

ОБНОВЛЕНИЕ: я использую Arch Linux и NetworkManager. Однако я бы предпочел ответ, основанный на таких командах, как ip address и ip route.

ОБНОВЛЕНИЕ 2: Благодаря @vahaответ, вот желаемая таблица маршрутизации:

Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         192.168.1.1     0.0.0.0         UG    100    0        0 eth0
192.168.1.0     0.0.0.0         255.255.255.0   U     100    0        0 eth0
192.168.2.0     0.0.0.0         255.255.255.0   U     101    0        0 eth1

Я не понял, как создать постоянную конфигурацию, которая гарантирует эту таблицу маршрутизации при перезагрузке.

Однако я могу установить эти маршруты вручную, выполнив следующие действия:

  1. В NetworkManager> IPv4> Routes отметьте «игнорировать автоматически полученные маршруты» для обоих интерфейсов.

  2. $ sudo ip route add default via 192.168.1.1 metric 100 dev eth0

  3. $ sudo ip route delete default via 192.168.2.1 dev eth1

Другие варианты, такие как отключение проверки «игнорировать автоматически полученные маршруты» для eth0, не работали. Например, когда я игнорировал только автоматически полученные маршруты для eth1, при загрузке моя система использовала 192.168.2.1 в качестве gw по умолчанию. Это неожиданный и сбивающий с толку результат.

Мой последний вопрос: как настроить мою систему так, чтобы после перезагрузки это были маршруты по умолчанию?

Давайте рассмотрим ваши опасения в два этапа:

ШАГ 1

Поэтому я хочу, чтобы через сетевой адаптер B (eth1) маршрутизировались только адреса 192.168.2.0/24. Я хочу, чтобы весь остальной трафик проходил через NIC A.

Таблица маршрутизации по умолчанию (таблица, которую вы настраивали вручную) предоставляет правила маршрутизации, которые вы ищете.

Вот подробное объяснение:

192.168.2.0     0.0.0.0         255.255.255.0   U     101    0        0 eth1

говорит, что подсеть 192.168.2.0/24 является локальной сетью и в шлюзе нет необходимости. Любой пакет, нацеленный на адрес в этой сети, будет доставлен по назначению напрямую без перехода.

192.168.1.0     0.0.0.0         255.255.255.0   U     100    0        0 eth0

говорит то же самое для подсети 192.168.1.0/24.

0.0.0.0         192.168.1.1     0.0.0.0         UG    100    0        0 eth0
0.0.0.0         192.168.2.1     0.0.0.0         UG    101    0        0 eth1

говорит, что оставшийся трафик будет маршрутизироваться через eth0 и eth1, где решение о маршрутизации зависит от значений метрики. Меньшее значение показателя имеет более высокий приоритет. НО если eth0 не работает, весь трафик будет маршрутизироваться через eth1 и наоборот. Кстати, я не уверен, но мое лучшее предположение для eth0 имеет более высокий приоритет, чем eth1, - это алфавитный порядок имен интерфейсов.

В заключение, следующая таблица - это то, что вы ищете. Я не знаком с NetworkManager, но думаю, что вы можете игнорировать автоматически полученные маршруты для обоих интерфейсов и вручную настроить свои собственные для достижения этой таблицы маршрутизации.

Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         192.168.1.1     0.0.0.0         UG    100    0        0 eth0
192.168.1.0     0.0.0.0         255.255.255.0   U     100    0        0 eth0
192.168.2.0     0.0.0.0         255.255.255.0   U     101    0        0 eth1

ШАГ 2

Я не хочу, чтобы хосты в какой-либо локальной сети могли подключаться друг к другу (или пинговать друг друга и т. Д.). Я хочу, чтобы LAN A и LAN B оставались изолированными.

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

Вы можете проверить правила NAT через iptables или nftables инструменты для управления брандмауэром в Arch Linux. Также см Arch Linux wiki - межсетевые экраны.

Пример команды для вывода списка правил NAT: iptables -t nat -L -v -n

В вашей таблице маршрутизации мостов не видно, но вы можете проверить их в деталях, используя один из способов, описанных в Arch Linux wiki - сетевой мост.