[GTER] Roteamento avançado em Linux

silvio.cesar em unigranrio.edu.br silvio.cesar em unigranrio.edu.br
Terça Maio 13 15:51:31 BRT 2008


Opa,

Pegue as rotas facilmente de forma que possa re-utilizar com o comando 
"ip route add table link_wan2" digitando o seguinte comando:

ip route show table main | grep -Ev ^default  | while read ROUTE ; do 
echo $ROUTE ;done

OBS: tudo na mesma linha ;-)

Att,

Silvio Cesar L. dos Santos
Analista de Redes Pleno
DTI - Divisão de Tecnologia da Informação
UNIGRANRIO - Universidade do Grande Rio
silviocesar em unigranrio.edu.br
http://www.unigranrio.edu.br


Amauri Tiago Marx escreveu:
> Prezados colegas, estou com uma dúvida sobre roteamento avançado em Linux.
> Segue minha dúvida (espero que a fonte do desenho abaixo seja mantida).
> Possuo um roteador linux que é o responsável pela roteamento da rede
> local para a Internet através de 2 links de internet.
>                                                                 
>                                           +-----------+        /-------
>                                           |           |       |
>                             +-------------+   WAN 1   +-------
>         __                  |             |           |     /
>     ___/  \_         +------+--------+    +-----------+    |
>   _/        \__      |     eth0      |                     /
>  /             \     |               |                     |
> | 192.168.1.0/24-----+ eth1  Linux 1 |                     | Internet
>  \_          __/     |               |                     |
>    \__     __/       |     eth2      |                     \
>       \___/          +------+--------+    +-----------+    |
>                             |             |           |     \
>                             +-------------+    WAN 2  +-------
>                                           |           |       |
>                                           +-----------+        \-------
> 
> 
> A rede local (eth1) é 192.168.1.0/24.
> A rede Wan 1 (eth0) é 200.XXX.XXX.0/24
> A rede Wan 2 (eth2) é 200.200.XX.248/29
> 
> No roteador Linux há 3 interfaces, eth0 com o endereço 200.XXX.XXX.13,
> eth1 com o endereço 192.168.1.1 (gw da rede local), eth2 com o
> endereço 200.200.XX.250.
> O gateway default do roteador é o endereço da WAN 1, 200.XXX.XXX.254.
> 
> Imagine que eu tenha tenha meus servidores na rede 192.168.1.0/24.
> Exemplo: servidor web em 192.168.1.24, fazendo NAT para a wan 1 com o
> endereço 200.XXX.XXX.24.
> 
> Desta forma no meu Linux router eu tenho um endereço virtual na eth0
> (eth0:24) com o endereço 200.XXX.XXX.24 e faço as seguintes regras:
> iptables -t nat -A PREROUTING -d 200.XXX.XXX.24 -j DNAT --to 192.168.1.24
> iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -d 192.168.1.24 -j
> SNAT --to 192.168.1.1
> iptables -t nat -A POSTROUTING -s 192.168.1.24 -j SNAT --to 200.XXX.XXX.24
> 
> Até aqui tudo ok, qualquer host da rede local consegue acessar os
> servidores, tanto pelo endereço interno (192.168.1.24), quanto pelo
> endereço externo (200.XXX.XXX.24).
> 
> Até este ponto eu ainda não citei a WAN 2. Vamos lá!
> Eu tenho outro roteador (Linux 2) na rede local com o endereço
> 192.168.1.4, criando outra rede interna 192.168.80.0/24.
> Desta forma, eu gostaria que tudo que vier do endereço 192.168.1.4
> saia pela WAN 2, com excessão do que for para o endereço interno, que
> gostaria que fosse resolvido localmente, sem sair para a Internet.
> Neste ponto eu me perdi!
> 
> Fiz o seguinte:
> No roteador Linux 1, adicionei o endereço 200.200.XX.250 para a eth2 e
> criei outra tabela de roteamento no arquivo /etc/iproute2/rt_tables,
> conforme abaixo:
> 200     link_wan2
> 
> Após, acrescentei as seguintes regras no iptables:
> iptables -A PREROUTING -t mangle -s 192.168.1.4 -j MARK --set-mark 1
> iptables -A OUTPUT -t mangle -s 192.168.1.4 -j MARK --set-mark 1
> 
> ip rule add fwmark 1 table link_wan2
> ip route add default via 200.200.XX.249 dev eth2 table link_wan2
> ip route flush cache
> 
> Desta forma, consegui fazer com que todos os pacotes que vierem do
> endereço 192.168.1.4 saiam pela WAN 2.
> Entretanto, quando tento acessar os endereços dos servidores que fazem
> NAT da WAN 1 não funciona, ou seja, os clientes atrás do roteador
> 192.168.1.4 não conseguem acessar os servidores pelo endereço válido
> 200.XXX.XXX.24.
> Parece que ele resolve os endereços de NAT para os ips internos dos
> servidores (192.168.1.x) e perde a comunicação ou a volta para o
> endereço gw da WAN 2 (200.200.XX.x).
> 
> Alguma sugestão?
> 
> Muito obrigado,
> Amauri
> --
> gter list    https://eng.registro.br/mailman/listinfo/gter



More information about the gter mailing list