pfSense 在同一 LAN 上的多个子网之间路由

use*_*408 7 routing pfsense traffic-filtering

我从一个相当标准的 pfSense 设置开始:一个 WAN 和一个 LAN 接口,通过 NAT 进行 LAN 到 WAN 访问。

现在我需要 LAN 上的第二个逻辑子网,我按以下方式设置:

  • 在 pfSense 的 LAN 接口上配置了来自第二个子网的 VIP
  • 将出站 NAT 从自动切换到手动
  • 创建了自动生成的 NAT 规则的副本,将 IP 范围设置为新子网的 IP 范围
  • 添加了新的 LAN 规则,允许来自新子网的任何流量

至于上网,一切似乎都很好。来自任一子网的主机都可以访问外部资源。

但是,我还希望 pfSense 在两个子网之间路由流量。这里事情变得棘手:我可以在子网之间 ping,但是尝试从子网 A 上的主机到子网 B 上的目标的 TCP 连接将超时。

一些数据包捕获揭示了以下内容:

  • 尽管根据主机 B 远程且默认网关是 pfSense 的路由表条目,主机 A 不通过 pfSense 路由,而是通过 ARP 解析主机 B 的 MAC 地址。因此,TCP SYN 直接从主机 A 传输到主机 B,而 pfSense 从未看到它。
  • 主机 B 收到 SYN 并以 SYN-ACK 响应。然而,这一次,通信通过 pfSense 传回。
  • 因此,pfSense 在没有遇到相应 SYN 的情况下看到 SYN-ACK 并丢弃它,假定它是恶意流量。(捕获清楚地显示 pfSense 上的 SYN-ACK,但没有在主机 A 上显示,日志显示它被过滤了。)

我不完全知道是什么导致主机 A 忽略路由设置并绕过默认网关——但是,如果我只有一个普通路由器,所有这些都不会成为问题。我宁愿不依赖操作系统的特定行为,而是以一种宽容的方式构建基础设施——因此我希望两个网络之间的路由能够工作,即使 pfSense 只看到一个方向的流量。由于两个 LAN 子网具有相同的信任级别,因此不需要在它们之间进行过滤。

如何关闭 pfSense 上两个子网之间的所有过滤?我曾尝试将“状态类型”设置为“无”,但无济于事......

use*_*408 6

如上所述,这对我来说不再是问题,但我遇到了一个潜在的解决方案:

从 2.1.5 版本开始(不确定早期版本),系统中有一个选项:高级:防火墙和 NAT,称为静态路由过滤-绕过同一接口上的流量的防火墙规则。选中此选项将禁用对在同一接口上进出的流量的任何过滤,专门针对在同一接口上具有多个子组的场景。

我还没有测试过(因为我需要它的实验室环境现在已经被拆除),但也许它可以帮助其他人......