我从一个相当标准的 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,称为静态路由过滤–绕过同一接口上的流量防火墙规则。选中此选项将禁用对进入和离开同一接口的流量的任何过滤,专门针对同一接口上有多个子集的情况。
我还没有测试过(因为我需要它的实验室环境现在已经被拆除了),但也许它对其他人有帮助......