Embora haja alguma sobreposição na funcionalidade entre as duas ferramentas, há muitas coisas que você pode fazer apenas com uma das ferramentas. iproute2
não pode fazer nada com as regras do firewall netfilter. iptables
não pode fazer coisas como atribuir endereços IP.
Mesmo em lugares onde a funcionalidade parece se sobrepor, ela realmente não se sobrepõe. Por exemplo, você pode fazer a conversão de endereços com iproute2
e iptables
. Mas a tradução de endereços que você pode fazer com o iproute não leva em consideração nenhum estado e não faz nenhuma reescrita do pacote. Existem vários protocolos de rede, como FTP, SIP, H.323, etc, nos quais os endereços IP estão incluídos no pacote e não apenas nos cabeçalhos. Se você usar o método iproute para tradução de endereços, esses tipos de protocolos serão quebrados. O Netfilter faz um trabalho muito melhor na tradução de endereços.
Na maioria dos casos em que a funcionalidade se sobrepõe, ela é tratada de maneiras diferentes. É possível com um módulo fazer roteamento com iptables
, mas da última vez verifiquei que o módulo não estava na maioria das distribuições para não ter o netfilter / iptables
corrigido com o ROTA alvo. Se esse alvo não estiver disponível, você não poderá usar o netfilter para roteamento, a menos que esteja com vontade de compilar seus próprios kernels. Sua decisão sobre qual ferramenta usar será feita simplesmente porque o recurso não está disponível na versão das ferramentas que você está executando. Mesmo que você tenha o alvo ROUTE, pelo que eu entendi, não é tão eficiente usar o netfilter para decisões de roteamento como é fazer roteamento com as tabelas de roteamento padrão com iproute2
manipula.
Grande parte disso também está usando a ferramenta certa para o trabalho certo. iproute2
foi projetado principalmente para gerenciar roteamento e endereços no seu computador. iptables
/ Netfilter é construído para firewall.
Eu acho que em lugares onde uma pessoa poderia usar qualquer uma das ferramentas, geralmente usaria a ferramenta com a qual está mais familiarizada. Eu sei que eu uso a meta MARK de iptables
para sinalizar alguns pacotes para uma rota ou outra, embora eu possa escrever a mesma regra com iproute2
.