[MASOCH-L] Redirecionamento de interfaces

davi peres daviperes at gmail.com
Thu May 8 10:33:37 BRT 2014


é, 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
>


More information about the masoch-l mailing list