我们有 2 个不同的 ISP 连接。我们之前的“IT 人员”按如下方式设置了我们的防火墙:
在启动时执行时/etc/rc.local
,它会执行一系列ip rule add
命令ip route add
以便路由某些内部主机使用某些 ISP 连接。
然后在结束时/etc/rc.local
,他执行了iptables
由生成的防火墙规则Firewall Builder
。这些iptables
规则中同时设置了策略和 NAT 规则。
我不明白的是,为什么他使用iproute2
来指定规则和路由,但也指定 NAT 规则iptables
?为什么他不只在其中一个中完成所有操作,而是同时使用它们?他是否可以删除规则iproute2
和路由,然后将所有相同的规则放入iptables
NAT 设置中?
答案1
尽管这两个工具在功能上有一些重叠,但很多事情只能通过其中一种工具来完成。例如, iproute2
无法使用 netfilter 防火墙规则执行任何操作。 iptables
无法执行诸如分配 IP 地址之类的操作。
即使在功能看似重叠的地方,实际上也并不重叠。例如,您可以使用和进行地址转换iproute2
。iptables
但是,使用 iproute 进行的地址转换不会考虑任何状态,也不会重写数据包。有几种网络协议(如 FTP、SIP、H.323 等)的 IP 地址包含在数据包中,而不仅仅是标头中。如果您使用 iproute 方法进行地址转换,这些类型的协议将被破坏。Netfilter 在地址转换方面做得更好。
在大多数情况下,功能重叠时,处理方式会有所不同。可以使用模块进行路由iptables
,但上次我检查时发现大多数发行版都没有使用 netfilter/iptables
进行修补。路线目标。如果该目标不可用,则无法使用 netfilter 进行路由,除非您打算编译自己的内核。您决定使用哪个工具,只是因为您正在运行的工具版本中没有该功能。即使您有 ROUTE 目标,据我所知,使用 netfilter 进行路由决策的效率不如使用带有操纵器的标准路由表进行路由那么高iproute2
。
其中很多也是使用正确的工具来完成正确的工作。 iproute2
主要用于管理计算机上的路由和地址。/Netfilter iptables
是为防火墙而构建的。
我认为,在可以使用任何一种工具的地方,人们通常会使用他们最熟悉的工具。我知道我使用 的 MARK 目标来iptables
标记某些数据包的一条或另一条路由,尽管我可以使用 编写相同的规则iproute2
。