Regras do iproute2 e iptables NAT… qual é a diferença?

8

Temos 2 conexões ISP diferentes. Nosso "cara de TI" anterior configurou nosso firewall da seguinte maneira:

Quando /etc/rc.localfoi executado na inicialização, ele executou vários comandos ip rule adde ip route addpara rotear determinados hosts internos para usar determinadas conexões ISP.

Então, no final de /etc/rc.local, ele executou nossas iptablesregras de firewall que foram geradas por Firewall Builder. Essas iptablesregras têm regras de política e NAT configuradas.

O que eu não entendo é por que ele usou iproute2para especificar regras e rotas, mas também especificou regras NAT iptables? Por que ele não fez tudo em um ou outro em vez de usar os dois? Ele poderia ter se livrado das iproute2regras e rotas e colocar todas essas mesmas regras nas iptablesconfigurações de NAT?

Jake Wilson
fonte

Respostas:

13

Embora exista alguma sobreposição na funcionalidade entre as duas ferramentas, há muitas coisas que você só pode fazer com apenas uma delas. iproute2não pode fazer nada com as regras de firewall do netfilter. iptablesnã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 iproute2e 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 / iptablescorrigido 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 iproute2manipulados.

Muito disso também está usando a ferramenta certa para o trabalho certo. iproute2foi 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 iptablespara sinalizar alguns pacotes para uma rota ou outra, mesmo que eu possa escrever a mesma regra iproute2.

Zoredache
fonte