我们有2个不同的ISP连接。 我们以前的“IT人”就是这样设置我们的防火墙:
当启动时执行/etc/rc.local时,它执行了一系列ip rule add和ip route add命令,以便路由某些内部主机以使用某些ISP连接。
然后在/etc/rc.local的最后,他执行了防火墙生成Firewall Builder生成的iptables防火墙规则。 这些iptables规则同时设置了策略和NAT规则。
我不明白,为什么他使用iproute2来指定规则和路由,但也指定iptables NAT规则? 他为什么不把这两样东西全部用完呢? 他可以摆脱iproute2规则和路由,只是把所有这些相同的规则到iptables NAT设置?
虽然这两个工具之间的function有一些重叠,但是只能从其中一个工具中做很多事情。 iproute2不能对netfilter防火墙规则做任何事情。 iptables不能做像分配IP地址的东西。
即使在function似乎重叠的地方,也并不真正重叠。 例如,您可以使用iproute2和iptables进行地址转换。 但是iproute可以做的地址转换并不考虑任何状态,绝对不会重写数据包。 有几种networking协议,如FTP,SIP,H.323等,其中IP地址包含在数据包内,而不仅仅是头部。 如果使用iproute方法进行地址转换,那么这些types的协议将被破坏。 Netfilter在地址转换方面做得更好。
在function确实重叠的大多数情况下,它以不同的方式处理。 有一个模块可以使用iptables进行路由,但是最后一次我检查了这个模块不在大多数发行版上,因为没有使用ROUTE目标修补netfilter / iptables 。 如果这个目标不可用,除非你想编译自己的内核,否则不能使用netfilter进行路由。 您决定使用哪个工具只是因为该function在您正在运行的工具的版本中不可用。 即使你有ROUTE目标,但据我所知,使用netfilter进行路由决策的效率并不如使用iproute2操作的标准路由表的路由效率。
它们中的很大一部分也是正确的工具。 iproute2主要用于pipe理计算机上的路由和地址。 iptables / Netfilter是为防火墙而构build的。
我认为,在一个人可以使用任何工具的地方,他们通常会使用他们最熟悉的工具。 我知道我使用iptables的MARK目标来标记一个或一个路由的数据包,即使我可以用iproute2写相同的规则。