Маршрутизация к вторичной локальной сети с Shorewall

Я настраиваю Shorewall (4.4.26.1) и пытаюсь выяснить маршрутизацию между двумя сегментами локальной сети для хорошей части дня. Пришло время обратиться за помощью.

 ((INTERNET))
      |
      |
 [shorewall]
   |     |
   |     |
(LAN1) (LAN2)

У меня есть три NIC: WAN (Интернет), LAN1 и LAN2. WAN-to-LAN работает как через NAT, так и через DNAT (задано в masq). LAN2 не должен (и в настоящее время не имеет) доступ к Интернету, но он должен быть доступен из LAN1. В настоящее время я могу получить доступ к LAN2 с брандмауэра, но не с серверов в LAN1 (что является проблемой). Необходимые правила на месте, но, очевидно, маршрутизация не работает (когда я отключаю правила брандмауэра, я сразу получаю "отказано в соединении" при соединении SSH с сервера в LAN1; когда правила включены, SSH просто зависает, а traceroute не работает не выходить за пределы брандмауэра). LAN1 находится в адресном пространстве 172.0.0.0, а LAN2 находится в адресном пространстве 10.0.0.0.

У меня сейчас есть:

$LAN2_IF                 10.0.0.0/24

... в маске, но это не работает ($LAN2_IF преобразуется в eth2, который является интерфейсом LAN2).

Мой вопрос: какова самая простая конфигурация Shorewall для пересылки трафика между двумя сегментами LAN с разными адресами, которые подключены к отдельным сетевым картам? Поможет указатель на документацию или другую ссылку, пример конфигурации с пустыми руками был бы еще лучше. Я просматривал документацию Shorewall по маршрутизации, но еще не нашел подходящего описания (например, я бы предпочел не связывать интерфейсы LAN, поскольку они должны оставаться разделенными: LAN2 не должен иметь доступа ни к Интернет или LAN1).

Спасибо за любой совет!

2 ответа

Решение

Похоже, у вас есть проблема с маршрутизацией, которая не имеет ничего общего с Shorewall. Отключите Shorewall и сначала настройте маршрутизацию.

Шлюз должен иметь IP-адрес в каждом из сегментов ЛВС и маршрут для диапазона ЛВС в этом интерфейсе. Например:

$ ip -one addr
2: eth0    inet 172.16.0.1/24
3: eth1    inet 10.0.0.1/24
$ ip route
172.16.0.0/24 dev eth0
10.0.0.0/24 dev eth1

Клиенты в LAN1 и LAN2 должны иметь соответствующий IP на шлюзе, установленный в качестве шлюза по умолчанию (172.16.0.1 для клиентов в LAN1 и 10.0.0.1 для клиентов в LAN2). Убедитесь, что клиенты в обеих локальных сетях могут пропинговать оба IP-адреса на шлюзе. Затем попробуйте пинг между клиентами в разных локальных сетях.

Когда маршрутизация работает, вы можете настроить Shorewall. Вы хотите поместить две ЛВС в разные зоны (например, lan1 содержащий eth0, и lan2 содержащий eth1). Затем настройте соответствующие политики:

fw      all     ACCEPT
lan1    all     ACCEPT
lan2    fw      ACCEPT
lan2    lan1    ACCEPT
all     all     REJECT

Не должно быть никакого маскировки между LAN1 и LAN2.

Я понимаю, что это не проблема Вилле, но пример конфигурации с тремя интерфейсами (включенный в дистрибутив Shorewall), вероятно, является каноническим ответом на ваш вопрос. Он устанавливает lan & dmz в качестве имен зон, но вы можете установить для них все, что хотите (в данном случае lan & lan2).

Другие вопросы по тегам