Embora exista alguma sobreposição na funcionalidade entre as duas ferramentas, há muitas coisas que você só pode fazer com apenas uma delas. iproute2
não pode fazer nada com as regras de firewall do 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 tradução de endereços com ambos iproute2
e iptables
. Mas a tradução de endereço que você pode fazer com o iproute não leva em consideração nenhum estado e não reescreve absolutamente o pacote. Existem vários protocolos de rede, como FTP, SIP, H.323, etc., onde 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 conversão de endereço, esses tipos de protocolos serão quebrados. O Netfilter faz um trabalho muito melhor na conversão de endereços.
Na maioria dos casos, onde a funcionalidade se sobrepõe, ela é tratada de maneiras diferentes. É possível com um módulo fazer o roteamento iptables
, mas da última vez que verifiquei que o módulo não estava na maioria das distribuições para não ter netfilter / iptables
corrigido com o destino ROUTE . Se esse destino não estiver disponível, você não poderá usar o netfilter para roteamento, a menos que esteja disposto a compilar seus próprios kernels. Sua decisão sobre qual ferramenta usar será tomada simplesmente porque o recurso não está disponível na versão das ferramentas que você está executando. Mesmo se você tiver o destino ROUTE, pelo que entendi, não é tão eficiente usar o netfilter para decisões de roteamento quanto fazer o roteamento com as tabelas de roteamento padrão com iproute2
manipulados.
Muito disso também está usando a ferramenta certa para o trabalho certo. iproute2
foi desenvolvido principalmente para gerenciar roteamento e endereços no seu computador. iptables
/ Netfilter foi criado para firewall.
Eu acho que em lugares onde uma pessoa pode usar qualquer uma das ferramentas, elas geralmente usam a ferramenta com a qual estão mais familiarizadas. Eu sei que uso o alvo MARK de iptables
para sinalizar alguns pacotes para uma rota ou outra, mesmo que eu possa escrever a mesma regra iproute2
.