pfSense для маршрутизации между несколькими подсетями в одной локальной сети

47159
user149408

Я начал с довольно стандартной настройки pfSense: один WAN и один интерфейс LAN, доступ LAN-WAN через NAT.

Теперь мне нужна вторая логическая подсеть в локальной сети, которую я настроил следующим образом:

  • настроил VIP из второй подсети на интерфейсе локальной сети pfSense
  • переключил исходящий NAT с автоматического на ручной
  • создал копию автоматически сгенерированного правила NAT, задав диапазон IP-адресов для новой подсети
  • добавлено новое правило локальной сети, разрешающее любой трафик из новой подсети

Что касается доступа в интернет, то все вроде нормально. Хосты из любой подсети могут получить доступ к внешним ресурсам.

Однако я также хотел бы, чтобы pfSense направлял трафик между двумя подсетями. И тут все становится сложнее: я могу пропинговать между подсетями, но попытки TCP-соединения от хоста в подсети A к цели в подсети B прекратятся.

При захвате некоторых пакетов обнаружилось следующее:

  • Несмотря на записи таблицы маршрутизации, в соответствии с которыми хост B является удаленным, а шлюзом по умолчанию является pfSense, хост A не маршрутизирует через pfSense, но разрешает MAC-адрес хоста B через ARP. Следовательно, TCP SYN идет прямо от хоста A к хосту B, и pfSense никогда его не видит.
  • Хост B получает SYN и отвечает SYN-ACK. На этот раз, однако, связь проходит обратно через pfSense.
  • Таким образом, pfSense видит SYN-ACK, даже не встретив соответствующий SYN, и отбрасывает его, предполагая, что это вредоносный трафик. (Захваты четко показывают SYN-ACK на pfSense, но не на хосте A, а журналы показывают, что он фильтруется.)

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

Как отключить фильтрацию между двумя подсетями в pfSense? Я попытался установить "State Type" в "None", но безрезультатно ...

5
Поскольку я не нашел ответа, я в итоге разделил две подсети и добавил выделенный маршрутизатор. Поскольку все было в виртуальных машинах, я сконцентрировал виртуальные машины для подсети B на одном хосте и переместил их в сеть виртуальных машин. Затем я поместил виртуальную машину BSDRP между двумя сетями и сделал ее шлюзом по умолчанию. Блок BSDRP имеет маршруты к любой из подсетей и маршрут по умолчанию к pfSense, так что через pfSense внутренний трафик никогда не маршрутизируется. Разделение сетей, вероятно, не требуется, поскольку BSDRP с большей вероятностью допустит «одностороннюю» маршрутизацию, которую отклоняет pfSense. user149408 9 лет назад 0

1 ответ на вопрос

5
user149408

Как уже упоминалось выше, это больше не проблема для меня, но я столкнулся с потенциальным решением:

Начиная с версии 2.1.5 (не уверен в более ранних версиях), в System: Advanced есть опция : Брандмауэр и NAT, называемая статической фильтрацией маршрутов - Обход правил брандмауэра для трафика на том же интерфейсе . Установка этой опции отключит любую фильтрацию для трафика, который входит и уходит с одного и того же интерфейса, нацеленного конкретно на сценарий с несколькими подсетями на одном интерфейсе.

Я не проверял это (поскольку лабораторная среда, в которой я нуждался в этом, к настоящему времени демонтирована), но возможно это помогает кому-то еще ...

Похожие вопросы