虽然这两个工具之间的功能有些重叠,但是您只能通过其中一个工具执行许多操作。 iproute2
netfilter防火墙规则无法执行任何操作。 iptables
无法执行分配IP地址之类的操作。
即使在功能似乎重叠的地方,它实际上也不会重叠。例如,您可以同时使用iproute2
和进行地址翻译iptables
。但是,您可以使用iproute进行的地址转换不会考虑任何状态,并且绝对不会重写数据包。有几种网络协议,例如FTP,SIP,H.323等,其中IP地址包含在数据包中,而不仅仅是标头中。如果使用iproute方法进行地址转换,则这些协议类型将被破坏。Netfilter在地址转换方面做得更好。
在大多数情况下,功能确实重叠,则以不同的方式处理。可以使用模块进行路由iptables
,但是上次我检查该模块是否在大多数发行版中都没有iptables
用ROUTE目标修补netfilter / 。如果该目标不可用,则除非您有意编译自己的内核,否则不能使用netfilter进行路由。您将决定使用哪种工具,仅是因为该功能在您正在运行的工具的版本中不可用。即使您具有ROUTE目标,据我了解,使用netfilter进行路由决策的效率也不如使用iproute2
操作对标准路由表进行路由有效。
许多工具还在使用正确的工具来完成正确的工作。 iproute2
主要用于管理计算机上的路由和地址。 iptables
/ Netfilter用于防火墙。
我认为在一个人可以使用任何一种工具的地方,他们通常都会使用他们最熟悉的工具。我知道我可以使用MARK目标iptables
来标记某个路由或其他路由的某些数据包,即使我可以使用编写相同的规则iproute2
。