Я начал с довольно стандартной настройки 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", но безрезультатно ...