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

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

我从一个相当标准的 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 上两个子网之间的所有过滤?我尝试将“状态类型”设置为“无”,但无济于事……

答案1

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

从 2.1.5 版本开始(不确定之前的版本),有一个选项系统:高级:防火墙和 NAT,称为静态路由过滤绕过同一接口上的流量防火墙规则。选中此选项将禁用对进入和离开同一接口的流量的任何过滤,专门针对同一接口上有多个子集的情况。

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

相关内容