![使用两个 ForeFront TMG 2010 防火墙进行非对称路由](https://linux22.com/image/796652/%E4%BD%BF%E7%94%A8%E4%B8%A4%E4%B8%AA%20ForeFront%20TMG%202010%20%E9%98%B2%E7%81%AB%E5%A2%99%E8%BF%9B%E8%A1%8C%E9%9D%9E%E5%AF%B9%E7%A7%B0%E8%B7%AF%E7%94%B1.png)
我遇到了一个奇怪的网络问题。
有一个网络,单个 IP 子网:192.168.60.0/24。
网络有两个与 Internet 连接的防火墙(运行 ForeFront TMG 2010),192.168.60.253(生产)和 192.168.60.240(开发);这是必要的,因为有两个环境,每个环境都需要自己的 Internet 发布规则;但是,由于历史原因,它们共享相同的 IP 子网,并且这不容易更改。因此,生产计算机使用 192.168.60.253 作为其默认网关,而开发计算机使用 192.168.60.240。只要不涉及其他网络,一切都会正常。
但是,当然,还有另一个网络(实际上不止一个,但我们简化一下)连接到生产防火墙上的第三个 NIC,即 192.168.100.0/24。此网络中的计算机使用该防火墙作为其默认网关。它们可以与主网络中的生产计算机通信,反之亦然。
当 192.168.100.0/24 网络中的计算机尝试与主网络中的开发计算机通信时,这是行不通的,因为他们的默认网关(开发防火墙)不知道如何发回数据包。这是意料之中的。所以我向开发防火墙添加了一个永久静态路由,告诉它“当你需要发送数据包到 192.168.100.0/24 时,将其发送到 192.168.60.253“;我还在TMG端的网络配置中定义了网络,启用了两个网络之间的所有流量。
现在,真正奇怪的是:两个网络之间的 ping 可以工作,但任何其他协议都不行。HTTP、RDP、SMB……什么都无法通过,尽管路由似乎可以工作,并且防火墙策略对所有事物都开放。
发生了什么事,为什么,我该如何解决它(除了手动向每个开发服务器添加静态路由,这是我想避免的)?
更新:
我检查了开发防火墙中的流量日志,发现 TCP 数据包被丢弃的原因是:从防火墙的角度来看,它们与任何打开的连接无关。这实际上是有道理的,因为当启动连接时,TCP 握手的初始数据包会通过生产防火墙,而答案会尝试通过开发防火墙返回……并且 TMG 会丢弃它,因为它根本看不到第一个数据包。这也解释了为什么 TCP 不起作用而 ICMP(可能还有 UDP)起作用。
但是,如果可以的话,我该如何解决这个问题并使这种不对称路由正常工作呢?
答案1
我认为...
从 192.168.100.x 到 DEV 盒的数据包被路由:
- 进入TMG-PROD
- 然后到 DEV 框
但是,从 DEV Box 到 192.168.100.x 的数据包
- 走进TMG-DEV
- 然后到 TMG-PROD
- 然后到 192.168.100.x
因此,您需要使这些路由相同,因此一个建议是向 DEV 框添加静态路由,以便 192.168.100.x 流量被定向到 TMG-PROD 网关(192.168.60.253)