[MASOCH-L] Redirecionamento de interfaces

Leandro leandro at allchemistry.com.br
Thu May 8 12:30:00 BRT 2014


Beleza. Parece que você respondeu a pergunta que fiz ao Davi: qual o 
fwmark default de um  pacote? Pelo que entendi seria o número 0.

Minha curiosidade sobre este número seria para saber como desfazer uma 
marcação. Por exemplo: se colocar uma regra com final "-j MARK 
--set-mark 0", pelo que entendi o pacote volta a sua situação original. 
Não imagino algum neste momento, mas isto poderia servir para algum 
propósito.

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

Em 08/05/2014 11:42, Rafael Possamai escreveu:
> Leandro,
>
> Aqui tem um artigo bem completo sobre PBR.
>
> http://www.cisco.com/c/en/us/td/docs/ios/12_2/qos/configuration/guide/fqos_c/qcfclass.html#wpxref35843
>
> Nao sei como funciona no Linux, mas em *BSD voce pode rodar duas instancias
> do mesmo daemon em FIBs diferentes. Mesma coisa com qualquer outro comando,
> por exemplo:
>
> tabela 0 - default
> tabela 1 - backup
>
> No console:
>
> setfib 0 ping google.com - pacotes vao utilizar a tabela de roteamento
> default
> setfib 1 ping google.com - pacotes vao utilizar a tabela de roteamento
> backup
>
> Isso voce pode implementar nos scripts conforme necessario.
>
>
> Att.,
> Rafael
>
>
>
> 2014-05-08 9:21 GMT-05:00 Leandro <leandro at allchemistry.com.br>:
>
>> Davi,
>>
>> Acho que estou começando a entender. Escrevi um script, baseado no seu,
>> para ilustrar o meu caso:
>>
>>     echo "33 principal" >> /etc/iproute2/rt_tables
>>     ip rule add from all fwmark 33 table principal
>>     ip route add via 201.6.246.214 dev eth1 table principal
>>     iptables -t nat -A PREROUTING -o eth2 -p tcp --dport 25 -j SNAT
>>     --to-source 201.6.246.214
>>     iptables -t mangle -I PREROUTING -o eth2 -p tcp --dport 25 -j MARK
>>     --set-mark 33
>>
>> Onde 201.6.246.214 é o IP do link principal, eth1 é a interface do link
>> principal e eth2 é a interface do link de contingência. A quarta linha deve
>> evitar o problema dos pacotes marcianos certo? :-)
>>
>> O pessoal que colonizar Marte vai ficar muito ofendido com este termo
>> "pacote marciano". kkkkkkkkk
>>
>>
>> Leandro Carlos Rodrigues
>> TI All Chemistry do Brasil
>> (11) 3014-7100
>>
>> Em 08/05/2014 10:33, davi peres escreveu:
>>
>>   é, ta meio confuso o que te passei pq recortei de 2 lugares diferentes :)
>>> * Como eu consigo saber quantas tabelas estão ativas e qual é o
>>>      conjunto de regras de roteamento de cada uma destas tabelas?
>>> - # ip rule show
>>> 0:      from all lookup local
>>> 32764:  from all fwmark 0x2 lookup GVT
>>> 32765:  from all fwmark 0x1 lookup COPEL
>>> 32766:  from all lookup main
>>> 32767:  from all lookup default
>>>
>>> 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)?
>>> - Todo pacote novo não tem marcas ( que eu saiba ) vc é quem marca ele com
>>> o iptables. O fwnark default é a sua rota default...
>>>
>>> 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?
>>> - Sim, errei na correria aqui.
>>>
>>> 4. Cada tabela de roteamento tem sua própria rota default?
>>> - Sim e não, vc quem especifica a roda com o comando "ip".
>>>
>>> # ip route show table COPEL
>>> default via 200.x.x.x dev eth1
>>>
>>> # ip route show table GVT
>>> não mostra nada por exemplo. No meu caso a gvt nao mostra nenhuma rota
>>> pois
>>> está seguindo a rota padrão. Eu poderia criar uma outra rota para a GVT e
>>> remover a rota padrão do servidor, mas daí teria que marcar TODOS os
>>> pacotes...
>>>
>>> 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?
>>> - Se vc criar uma rota default para a tabela 33, todos os pacotes irão
>>> para
>>> esta rota e não seguirão mais a tabela default do pc... mas creio que vc
>>> não quer fazer isso. Aliás nunca fiz isso tambem. Sempre usei as tabelas
>>> de
>>> rotas para casos específicos, quando quero somente redirecionar algumas
>>> coisas pq já tem a rota padrão para fazer isso né...
>>>
>>> Segue denovo o script... um pouco mais elaborado
>>>
>>> echo "33 COPEL" >> /etc/iproute2/rt_tables
>>> echo "34 GVT" >> /etc/iproute2/rt_tables
>>>
>>> ip rule add from all fwmark 33 table COPEL
>>> ip rule add from all fwmark 34 table GVT
>>>
>>> iptables -t mangle -I PREROUTING -p tcp --sport 25 -j MARK --set-mark 33
>>> iptables -t mangle -I PREROUTING -p tcp --sport 22 -j MARK --set-mark 34
>>>
>>> ip route add via *200.x.x.x* dev eth1 table COPEL
>>> ip route add via *201.x.x.x* dev eth2 table GVT
>>>
>>> mas veja uma coisa, vc vai ter que fazer muitos testes aí para manusear os
>>> pacotes de entrada tambem. Mesmo que vc queira que eles saiam por um link
>>> tem que prestar a atenção se não estão entrando pelo outro.
>>>
>>> Se seus pacotes entrarem por um link e sairem pelo outro vc terá os
>>> famosos
>>> pacotes Marcianos ( vem lá de marte) !!!  Procura aí por pacotes marcianos
>>> kkk não to brincando.
>>>
>>>
>>> Em 8 de maio de 2014 09:42, Leandro <leandro at allchemistry.com.br>
>>> escreveu:
>>>
>>>   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
>>>>>
>>>>>   __
>>>> 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