我的网络上有几个有状态的路由器/防火墙盒(pfSense、TMG 2010、ISA 2006)。目前,它们都与大多数最终用户设备和服务器在同一子网上有一个接口。我将进行一些更改,并将一些服务器放在这些防火墙后面的自己的子网上,所以我想知道我是否应该为路由器设置一个专用子网,以便通过该子网将数据包路由到彼此。没有路由协议,只有静态路由。
我试图避免异步路由,因为异步路由对于状态防火墙来说可能是一个问题,因为流量以不同的路径流入和流出网络。如果流量通过不同的路径回流,并且该路径上的防火墙在状态表中没有记录,那么流量可能会被阻止。
我的基本问题是:这是解决这个问题的理想方法吗?为什么或为什么不?我找不到很多最佳实践,但这种方法会在每个子网上只留下一个路由器,这样我就可以避免不同机器具有不同默认网关的当前情况。
当前的
Router 1 Router 2 Router 3
192.168.1.1/24 ------ 192.168.1.2/24 ------ 192.168.1.3/24 ------ All other devices
| | |
V V V
10.10.10.1/24 10.20.20.1/24 10.30.30.1/24
建议的
Router 1 Router 2 Router 3
192.168.1.1/24 ------ All other devices
10.200.200.1/24 ----- 10.200.200.2/24 ----- 10.200.200.3/24 ------ Routers/Firewalls only
| | |
V V V
10.10.10.1/24 10.20.20.1/24 10.30.30.1/24
答案1
根据我的评论,类似这样的内容
+----------+ +----------+ +----------+
| Router 1 | | Router 2 | | Router 3 |
+-------+--+ +----+-----+ +--+-------+
| | |
| | |10.200.200.0/24
| | |
+--v------------v------------v-+
| Router A +-------------+
+-+---------+---------------+--+ |
| | | |
| | | |
| | | |
+------------v-+ +-----v-------+ +-----v-------+ +------v------+
|192.168.1.0/24| |10.10.10.0/24| |10.20.20.0/24| |10.30.30.0/24|
+--------------+ +-------------+ +-------------+ +-------------+
路由器 1 = 10.200.200.1
路由器 2 = 10.200.200.2
路由器 3 = 10.200.200.3
路由器 A = 10.200.200.254
这样,底层的每个网络只有 1 个路由器,因此只有 1 个默认路由。边缘路由器只需要 1 个内部路由即可访问内部子网。
内部路由器确实变得更加复杂,因为它需要了解多个上游路由器,并跟踪连接以避免异步路由。我相信这样做的好处是值得的:所有复杂性都包含在该路由器中,其余部分保持简单。而且您可以完全控制该主机上的多个连接。例如,您可以将所有 3 个连接的流量 NAT 到同一个内部服务器,但服务器不需要知道任何这些,内部服务器将跟踪每个连接并适当地路由流量以避免异步。
这与我工作中的设置非常相似,只是我们只有 2 个上游连接。路由器 A 是一对在 H/A 中运行的 Linux 机器。使用基于策略的路由跟踪连接。我发现的关于 PBR 的最佳指南是:http://www.cyber.com.au/~twb/doc/dual-uplink.txt
答案2
我想说你正在引入额外的复杂程度(从字面上讲)。
我假设您的异步路由问题来自以下情况:例如,192.168.1.55
将数据包发送到10.20.20.55
,但没有路由,192.168.1.2
因此通过其默认方式发送,然后192.168.1.1
将其重定向到192.168.1.2
。然后,回复数据包直接从192.168.1.2
原始源发往原始源,因此192.168.1.1
只能看到客户端到服务器的数据包,而看不到服务器到客户端的数据包。
在我的环境中,我通过添加允许反弹路由的规则来避免异步路由的防火墙问题(任何进出同一接口 == 同一层 2 == 允许)。您不会引入任何安全问题,因为数据包的源和目标位于同一层 2 上,并且无论如何都可以直接相互通信,您只是通过次优路由“鼓励”性能问题。