[MASOCH-L] Redirecionamento de interfaces

Leandro leandro at allchemistry.com.br
Thu May 8 09:42:05 BRT 2014


Davi. Eu fiquei estudando esta solução para ter certeza que algum 
comando não iria afetar negativamente outras regras de roteamento e 
firewall já implementadas aqui. Eu vi alguns artigos sobre o assunto e 
achei a sua solução perfeita. Porém eu gostaria de entender melhor o que 
acontece nos bastidores para não fazer besteira aqui na empresa.

O que acontece é que este conceito de tabelas múltiplas de roteamento é 
algo novo para mim. Sempre achei que houvesse apenas uma tabela.

As dúvidas são as seguintes:

 1. Como eu consigo saber quantas tabelas estão ativas e qual é o
    conjunto de regras de roteamento de cada uma destas tabelas?
 2. Todo pacote novo sempre é criado com qual número de marca (fwmark)
    antes de ser alterado pelo IPTABLES (qual o fwmark default de um
    pacote)?
 3. Neste script que você passou, é mencionado na segunda linha "fwmark
    1" mas na seguinte aparece "--set-mark 33". Acho que deveria ser
    "--set-mark 1" estou certo?
 4. Cada tabela de roteamento tem sua própria rota default?
 5. Se eu criar esta tabela "33 PRINCIPAL" que você sugeriu e criar uma
    rota default para ela, todos os pacotes sem alteração do IPTABLES
    serão interpretados _apenas_ pela tabela default de roteamento?

Agradeço muito pela ajuda.

Leandro Carlos Rodrigues
TI All Chemistry do Brasil
(11) 3014-7100

Em 07/05/2014 09:25, davi peres escreveu:
> Da para fazer isso sim Leandro.
>
> echo "33 PRINCIPAL" >> /etc/iproute2/rt_tables
> ip rule add from all fwmark 1 table PRINCIPAL
> iptables -t mangle -I PREROUTING -p tcp --sport 25 -j MARK --set-mark 33
> ip route add via 177.220.129.41 dev eth1 table PRINCIPAL
>
> Serial algo mais ou menos assim.
>
>
>
> Em 7 de maio de 2014 08:42, Leandro <leandro at allchemistry.com.br> escreveu:
>
>> Permita-me explicar melhor meu problema. Acredito que não seja possível
>> fazer com iptables, por isso recorri a vocês.
>>
>> Tenho dois links que servem como acesso à Internet. Um deles é o link
>> principal e o outro serve apenas para contingência. Quando algum problema
>> ocorre no principal, o meu script transfere todo o roteamento de Internet
>> para o link de contingência.
>>
>> Até ai normal. O problema é que todo e-mail enviado por nós deve sair pelo
>> link principal e de forma alguma pelo de contingência. Para evitar que
>> algum e-mail saia pelo link de contingência, eu coloquei uma regra no
>> iptables para dropar todos os pacotes da porta 25 saindo deste link, por
>> garantia. A situação normal quando o link principal cai é congelar todos os
>> envios e a guardar o link principal voltar.
>>
>> O problema é que ocorreu uma situação incomum ontem. O link principal não
>> caiu, mas estava com problema de transmissão de pacotes para determinados
>> destinos, fazendo com que muitos conteúdos web não aparecessem corretamente
>> nos navegadores dos funcionários. Para solucionar o problema dos conteúdos
>> web, sem parar o serviço de email, pensei em transferir todo o tráfego para
>> o link de contingência exceto aqueles cujos pacotes sejam da porta 25.
>> Tentei usar o route, mas o manual diz que você só pode configurar redes
>> nele e não portas (o que faz muito sentido). Então pensei no iptables, mas
>> não achei nada no Google que mencionasse transferência de pacotes (sem
>> alteração do conteúdo do pacote) de uma interface para outra.
>>
>> Ontem mesmo o problema do link principal foi resolvido pela operadora.
>> Depois disto eu vi também que é possível configurar o Exim4 para transmitir
>> apenas por uma interface. Entretanto para curiosidade técnica, gostaria de
>> saber se existe alguma forma de rotear pacotes pela porta (apenas) entre
>> interfaces, e sem alterar o conteúdo dos pacotes. Gostaria de saber isto
>> até para conseguir solucionar outros problemas semelhantes, onde não existe
>> possibilidade de configurar um determinado sofware para transmitir apenas
>> para uma determinada interface, por exemplo.
>>
>> Leandro Carlos Rodrigues
>> TI All Chemistry do Brasil
>> (11) 3014-7100
>>
>> Em 06/05/2014 13:34, Rafael Possamai escreveu:
>>
>>> Voce vai ter que habilitar o forwarding de pacotes entre interfaces, e
>>> como
>>> mencionou iptables, imagino que esteja usando Linux, entao seria algo
>>> assim:
>>>
>>> sysctl -w net.ipv4.conf.all.forwarding=1
>>>
>>> A sua regra seria mais ou menos assim:
>>>
>>> iptables -A FORWARD -i eth1 -o eth2 -p tcp --dport YY -d x.x.x.x -j ACCEPT
>>>
>>> Mas depende muito de como quer fazer... Neste caso ele aceita pacotes
>>> saindo da eth1 indo para ip x.x.x.x:YY que esta atras da eth2.
>>>
>>> Nao se esqueca de adicionar as rotas corretas para cada subnet servida por
>>> cada interface, se nao o forwarding entre pacotes nao vai funcionar.
>>>
>>>
>>> Att.,
>>> Rafael
>>>
>>>
>>>
>>>
>>>
>>> 2014-05-06 9:00 GMT-05:00 Leandro <leandro at allchemistry.com.br>:
>>>
>>>   Pessoal,
>>>> Alguém sabe a regra de iptables para redirecionar todos os pacotes de uma
>>>> certa porta de destino de uma interface para outra interface?
>>>>
>>>> --
>>>> Leandro Carlos Rodrigues
>>>> TI All Chemistry do Brasil
>>>> (11) 3014-7100
>>>>
>>>> __
>>>> masoch-l list
>>>> https://eng.registro.br/mailman/listinfo/masoch-l
>>>>
>>>>   __
>>> masoch-l list
>>> https://eng.registro.br/mailman/listinfo/masoch-l
>>>
>> __
>> masoch-l list
>> https://eng.registro.br/mailman/listinfo/masoch-l
>>
> __
> masoch-l list
> https://eng.registro.br/mailman/listinfo/masoch-l



More information about the masoch-l mailing list