Página 1 de 2 12 ÚltimoÚltimo
+ Responder ao Tópico



  1. #1

    Padrão Balanceamento de carga entre links com iproute2 - mini-howto

    Como muitos tem dúvidas de como balancear o acesso a Internet por diversos links, resolvi escrever esse mini-howto para evitar a necessidade de novos post no fórum.

    Vamos ao problema. Imaginemos um roteador rodando kernel GNU/Linux com as opções de roteamento avançado ativado. Este computador está conectado a N links dedicados. Desejamos balancear a carga das requisições entre esses N links. Sejam LIP0, LIP1, ... , LIPN os endereços IP atribuidos aos links, LIF0, LIF1, ... , LIFN as interfaces de rede, LNTW, LNTW1, ... , LNTWN as redes e LGW0, LGW1, ... , LGWN os gateways de cada link.

    Primeiramente devemos criar N tabelas de roteamento, onde N é o número total de links que o gateway possui:
    echo 10 tb0 >> /etc/iproute2/rt_tables
    echo 11 tb1 >> /etc/iproute2/rt_tables
    ...
    echo XX tbN >> /etc/iproute2/rt_tables
    Feito isso, devemos atribuir as redes dos links as suas respectivas tabelas de roteamento:
    ip route add LNTW0 dev LIF0 src LIP0 table tb0
    ip route add to 0/0 via LGW0 table tb0

    ip route add LNTW1 dev LIF1 src LIP1 table tb1
    ip route add to 0/0 via LGW1 table tb1
    ...
    ip route add LNTWN dev LIFN src LIPN table tbN
    ip route add to 0/0 via LGWN table tbN
    deve-se, também, incluir informações sobre a rede local:
    ip route add LOCALNET dev IFLOCALNET table tb0
    ip route add LOCALNET dev IFLOCALNET table tb1
    ...
    ip route add LOCALNET dev IFLOCALNET table tbN
    obs: todas as redes locais devem estar presentes em todas as tabelas!!!

    Agora, devemos definir as rotas das redes através da tabela padrão:
    ip route add LNTW0 dev LIF0 src LIP0
    ip route add LNTW1 dev LIF1 src LIP1
    ...
    ip route add LNTWN dev LIFN src LIPN
    obs: se você está com seus link configurados através dos arquivos de configuração das distribuiçoes, a etapa anterior pode ser omitida. Basicamente se ao tentar inserir uma rota na tabela padrão, e a mesma já existir você receberá a seguinte mensagem:
    RTNETLINK answers: File exists

    Agora você adiciona regras que decidem por onde os pacotes de vem passar:
    ip rule add from LIP0 table tb0
    ip rule add from LIP1 table tb1
    ...
    ip rule add from LIPN table tbN
    Por ultimo, porém o não menos importante, na verdade escencial pois até agora não fizemos nada... Devemos definir o balanceamento de carga:
    ip route add to 0/0 nexthop via LGW0 dev LIF0 weight 1 nexthop via LGW1 dev LIF1 weight 1 ... nexthop via LGWN dev LIFN weight 1
    Note que o parâmetro weight pode ser explorado para atribuir maior prioridade de envio por um provedor. E você também pode (deve) atribuir um link padrão:
    ip route add to 0/0 via LGWP
    Bem, pronto... Agora apenas algumas considerações...

    O kernel mantém tabelas de roteamento estátcas, portanto, se N pessoas tentarem acessar o site Google por exemplo, todas as tentativas de conexão sairão pelo mesmo link.

    Existem alguns patchs disponíveis para melhorar o mecanismo de roteamento. Procurem, informem-se e vejam se são adequados as suas realidades.

    Com o uso de regras de roteamento (ip rule) você pode definir qual link padrão para a saída de pacotes de uma determinada rede. Ex:
    ip rule add from 10.1.0.0/24 table tb0
    ip rule add from 10.2.0.0/24 table tb1
    Pode-se. também, dividir por seviços. ex:
    iptables -t mangle -A PREROUTING -i LOCALNET -p tcp --dport 21 -j MARK --set-mark 0x60
    ip rule add fwmark 0x60 table tbN
    Só isso... fiz este post com o intuíto dele se tornar permanente... espero que os moderadores aceitem...
    Última edição por PEdroArthurJEdi; 31-01-2008 às 21:07.

  2. #2

    Padrão

    Citação Postado originalmente por PEdroArthurJEdi Ver Post
    Pode-se. também, dividir por seviços. ex:
    iptables -t mangle -A PREROUTING -i LOCALNET -p tcp --dport 21 -j MARK --set-mark 0x60
    ip rule add fwmark 0x60 table tbN
    Só isso... fiz este post com o intuíto dele se tornar permanente... espero que os moderadores aceitem...
    Amigo isso seria para poder dividir por portas certo???
    entendi essa regra só ñ entendo esse 0x60. foi um nome qualquer q vc deu somente para registrar a marcação?
    obrigado...

  3. #3

    Padrão

    Citação Postado originalmente por erickwa Ver Post
    Amigo isso seria para poder dividir por portas certo???
    entendi essa regra só ñ entendo esse 0x60. foi um nome qualquer q vc deu somente para registrar a marcação?
    obrigado...
    Veja que eu pus uma regra de roteamento, fwmark, e o valor era 0x60. Então, na regra do iptables deve colocar o valor que escolhi na regra de roteamento.

  4. #4

    Padrão

    Citação Postado originalmente por PEdroArthurJEdi Ver Post
    Veja que eu pus uma regra de roteamento, fwmark, e o valor era 0x60. Então, na regra do iptables deve colocar o valor que escolhi na regra de roteamento.
    Legal...
    Vou tentar usar seu topico ja instalei iproute2 e tudo mais, estou precisando justamente disso, preciso mandar para um link trafego nobre e para o outro preciso mandar o resto, vou tentar qualquer duvidade posso entrar em contato denovo? mas seu tutorial esta bem elaborado e bem feito, agradeço, e repito era justamente o q precisava...

    Abraços tudo de bom...

  5. #5

    Padrão Eis meu teste

    Minhas condições aqui é a seguinte....

    eth0 - 172.16.1.2 (rede local) ligo essa eth para outro server de monitoramento...
    eth1 - 192.168.1.2 (rede ADSL) direto em um modem
    eth2 - 201.xx.xx.xxx (rede cisco)

    Antes do Roteamento...

    [root@Proxy rc.d]# route
    Tabela de Roteamento IP do Kernel
    Destino Roteador MáscaraGen. Opções Métrica Ref Uso Iface
    201.xx.xx.xxx * 255.255.255.248 U 10 0 0 eth2
    192.168.1.0 * 255.255.255.0 U 10 0 0 eth1
    link-local * 255.255.0.0 U 10 0 0 eth2
    link-local * 255.255.0.0 U 10 0 0 eth1
    default 201-xx-xx-xxx.c 0.0.0.0 UG 10 0 0 eth2

    isso sem executar as regras...

    agora executando tais regras, criei um script com todas dentro...


    [root@Proxy rc.d]# cat /etc/rc.d/rc.routes

    ip route add 172.16.1.0/24 dev eth1 src 192.168.1.1 table tb0
    ip route add to 0/0 via 192.168.1.2 table tb0
    ip route add 172.16.1.0/24 dev eth2 src 201.xx.xx.xxx table tb1
    ip route add to 0/0 via 201.xx.xx.xxx(router cisco) table tb1

    ip route add 172.16.1.0/24 dev eth0 table tb0
    ip route add 172.16.1.0/24 dev eth0 table tb1

    ip route add 172.16.1.0/24 dev eth1 src 192.168.1.1
    ip route add 172.16.1.0/24 dev eth2 src 201.28.77.162

    iptables -t mangle -A PREROUTING -i eth0 -p udp --dport 1024:65535 -j MARK --set-mark 0x60
    ip rule add fwmark 0x60 table tb0
    iptables -t mangle -A PREROUTING -i eth0 -p tcp --dport 1024:65535 -j MARK --set-mark 0x61
    ip rule add fwmark 0x61 table tb0
    iptables -t mangle -A PREROUTING -i eth0 -p udp --dport 1:1023 -j MARK --set-mark 0x50
    ip rule add fwmark 0x50 table tb1
    iptables -t mangle -A PREROUTING -i eth0 -p tcp --dport 1:1023 -j MARK --set-mark 0x51
    ip rule add fwmark 0x51 table tb1


    [root@Proxy rc.d]# ./rc.route
    RTNETLINK answers: Invalid argument
    RTNETLINK answers: File exists
    RTNETLINK answers: Invalid argument

    Agora apos executar as regras...

    [root@Proxy rc.d]# route
    Tabela de Roteamento IP do Kernel
    Destino Roteador MáscaraGen. Opções Métrica Ref Uso Iface
    201.xx.xx.xxx * 255.255.255.248 U 10 0 0 eth2
    192.168.1.0 * 255.255.255.0 U 10 0 0 eth1
    172.16.1.0 * 255.255.255.0 U 0 0 0 eth2
    link-local * 255.255.0.0 U 10 0 0 eth2
    link-local * 255.255.0.0 U 10 0 0 eth1
    default 201-xx-xx-xxx.c 0.0.0.0 UG 10 0 0 eth2


    Pelo q percebi existe algum erro... c pudesse me dizer onde pequei... obrigado...



  6. #6

    Padrão

    Citação Postado originalmente por erickwa Ver Post
    [root@Proxy rc.d]# cat /etc/rc.d/rc.routes

    ip route add 172.16.1.0/24 dev eth1 src 192.168.1.1 table tb0
    ip route add to 0/0 via 192.168.1.2 table tb0
    ip route add 172.16.1.0/24 dev eth2 src 201.xx.xx.xxx table tb1
    ip route add to 0/0 via 201.xx.xx.xxx(router cisco) table tb1

    ip route add 172.16.1.0/24 dev eth0 table tb0
    ip route add 172.16.1.0/24 dev eth0 table tb1

    ip route add 172.16.1.0/24 dev eth1 src 192.168.1.1
    ip route add 172.16.1.0/24 dev eth2 src 201.28.77.162

    iptables -t mangle -A PREROUTING -i eth0 -p udp --dport 1024:65535 -j MARK --set-mark 0x60
    ip rule add fwmark 0x60 table tb0
    iptables -t mangle -A PREROUTING -i eth0 -p tcp --dport 1024:65535 -j MARK --set-mark 0x61
    ip rule add fwmark 0x61 table tb0
    iptables -t mangle -A PREROUTING -i eth0 -p udp --dport 1:1023 -j MARK --set-mark 0x50
    ip rule add fwmark 0x50 table tb1
    iptables -t mangle -A PREROUTING -i eth0 -p tcp --dport 1:1023 -j MARK --set-mark 0x51
    ip rule add fwmark 0x51 table tb1


    [root@Proxy rc.d]# ./rc.route
    RTNETLINK answers: Invalid argument
    RTNETLINK answers: File exists
    RTNETLINK answers: Invalid argument
    As saídas dos seguintes comandos podem ajudar mais:

    ip route show table all
    iptables -t mangle -L -n -v

    Porém, numa primeira vista, não parece haver nenhum erro no seu script. Testei algumas coisas aqui nos meu servidores e deu certo. Como disse, a saída ajudará mais...

  7. #7

    Padrão

    Pedro,
    fiz tudo que está no tuto, mas o cliente não encherga o servidor.

    Tenho:

    FEDORA 8
    3 links
    2 WIMAX(512 cada) - embratel
    192.168.10.x - gw1 - saida para a porta 80 e 443
    192.168.10.x - gw2 - saida para a porta 25 e 110
    1 link dedicado(1 mb, para acesso ao terminal service) - embratel
    192.168.16.x - gw3 - só passa por aqui acesso ao ts, saída pela interface interna pela porta 3389


    será o que posso ta errando?

  8. #8

    Padrão

    Antes de realizar o balanceamento os clientes estavam funcionando?

  9. #9

    Padrão

    Sim, todos estão funcionando.

    Pedro, LOCALNET refere-se á rede local(192.168.160.0/24), é isso?

    Vlw

  10. #10

    Padrão

    Sim, localnet é o endereço da rede local...

    Seria de grande ajuda a saida dos seguintes comandos:

    # ip route show table all
    # iptables -t mangle -L -n -v

  11. #11

    Padrão

    Amanha vou fazer novos teste e posto a saída dos comandos.
    Vlw Pedro

    Agradecido

  12. #12

    Padrão

    Citação Postado originalmente por PEdroArthurJEdi Ver Post
    Como muitos tem dúvidas de como balancear o acesso a Internet por diversos links, resolvi escrever esse mini-howto para evitar a necessidade de novos post no fórum.

    Vamos ao problema. Imaginemos um roteador rodando kernel GNU/Linux com as opções de roteamento avançado ativado. Este computador está conectado a N links dedicados. Desejamos balancear a carga das requisições entre esses N links. Sejam LIP0, LIP1, ... , LIPN os endereços IP atribuidos aos links, LIF0, LIF1, ... , LIFN as interfaces de rede, LNTW, LNTW1, ... , LNTWN as redes e LGW0, LGW1, ... , LGWN os gateways de cada link.

    Primeiramente devemos criar N tabelas de roteamento, onde N é o número total de links que o gateway possui:
    echo 10 tb0 >> /etc/iproute2/rt_tables
    echo 11 tb1 >> /etc/iproute2/rt_tables
    ...
    echo XX tbN >> /etc/iproute2/rt_tables
    Feito isso, devemos atribuir as redes dos links as suas respectivas tabelas de roteamento:
    ip route add LNTW0 dev LIF0 src LIP0 table tb0
    ip route add to 0/0 via LGW0 table tb0

    ip route add LNTW1 dev LIF1 src LIP1 table tb1
    ip route add to 0/0 via LGW1 table tb1
    ...
    ip route add LNTWN dev LIFN src LIPN table tbN
    ip route add to 0/0 via LGWN table tbN
    deve-se, também, incluir informações sobre a rede local:
    ip route add LOCALNET dev IFLOCALNET table tb0
    ip route add LOCALNET dev IFLOCALNET table tb1
    ...
    ip route add LOCALNET dev IFLOCALNET table tbN
    obs: todas as redes locais devem estar presentes em todas as tabelas!!!

    Agora, devemos definir as rotas das redes através da tabela padrão:
    ip route add LNTW0 dev LIF0 src LIP0
    ip route add LNTW1 dev LIF1 src LIP1
    ...
    ip route add LNTWN dev LIFN src LIPN
    obs: se você está com seus link configurados através dos arquivos de configuração das distribuiçoes, a etapa anterior pode ser omitida. Basicamente se ao tentar inserir uma rota na tabela padrão, e a mesma já existir você receberá a seguinte mensagem:
    RTNETLINK answers: File exists

    Agora você adiciona regras que decidem por onde os pacotes de vem passar:
    ip rule add from LIP0 table tb0
    ip rule add from LIP1 table tb1
    ...
    ip rule add from LIPN table tbN
    Por ultimo, porém o não menos importante, na verdade escencial pois até agora não fizemos nada... Devemos definir o balanceamento de carga:
    ip route add to 0/0 nexthop via LGW0 dev LIF0 weight 1 nexthop via LGW1 dev LIF1 weight 1 ... nexthop via LGWN dev LIFN weight 1
    Note que o parâmetro weight pode ser explorado para atribuir maior prioridade de envio por um provedor. E você também pode (deve) atribuir um link padrão:
    ip route add to 0/0 via LGWP
    Bem, pronto... Agora apenas algumas considerações...

    O kernel mantém tabelas de roteamento estátcas, portanto, se N pessoas tentarem acessar o site Google por exemplo, todas as tentativas de conexão sairão pelo mesmo link.

    Existem alguns patchs disponíveis para melhorar o mecanismo de roteamento. Procurem, informem-se e vejam se são adequados as suas realidades.

    Com o uso de regras de roteamento (ip rule) você pode definir qual link padrão para a saída de pacotes de uma determinada rede. Ex:
    ip rule add from 10.1.0.0/24 table tb0
    ip rule add from 10.2.0.0/24 table tb1
    Pode-se. também, dividir por seviços. ex:
    iptables -t mangle -A PREROUTING -i LOCALNET -p tcp --dport 21 -j MARK --set-mark 0x60
    ip rule add fwmark 0x60 table tbN
    Só isso... fiz este post com o intuíto dele se tornar permanente... espero que os moderadores aceitem...

    Não seria mais interessantes postar este nos blogs??

    Att

  13. #13

    Padrão

    Os blogs não existiam quando postei...

  14. #14

    Padrão

    Sejam LIP0, LIP1, ... , LIPN os endereços IP atribuidos aos links, LIF0, LIF1, ... , LIFN as interfaces de rede, LNTW, LNTW1, ... , LNTWN as redes e LGW0, LGW1, ... , LGWN os gateways de cada link.
    Olá PEdroArthurJEdi, achei muito interessante a solução, só fiquei em dúvida em uma coisa, no meu caso eu tenho dois links, sendo que é ponto-a-ponto dedicado e outro é uma Speedy Business, ambos IP fixo, sendo que no Speedy existe uma VPN com a matriz. A idéia é configurar um LB para que quando um dos links caiam a filial não fique sem comunição com a matriz.

    Estou pensando em refazer a toda a estrutura e remontar a VPN que não fui que fiz, e configurar ela nos dois links, ou deixar como está, mas o que está pegando é LB, sem contar que depois tem Samba, Squid etc..etc...e terei que mecher com IP Route que ainda não manjo muito.

    Bem no caso da minha rede onde eu seto as interface eth0, eth1 eth2, sendo as duas primeiras para os links e útima para lan. O que seria esses LIP0, LIP1, LNTW, LNTW1, LGW0, LGW1. Fiquei confuso.
    Mais uma coisa esse seu exemplo funciona para o que eu quero fazer ou tem uma solução mais simples. Andei vendo algo sobre o Bonding, mas acho que não serve.

    Agradeço a atenção!
    Abraços.

  15. #15

    Padrão

    O que estamos fazendo aqui é um balanceamento de carga, ou seja, estamos dividindo os acessos de hosts/redes distintas por diferentes enlaces. O que você procura é um mecanismo de fail-over. Acho que encontrará alguns exemplos interessantes no sessão Alta Disponibilidade do Under-Linux.org.

    Quanto as variáveis, LIP0, .... LIPN seria um acrônimo para Link Internet Address, o endereço IP atribuido ao seu link. Tipo no seu caso, o IP dedicado e o IP do speedy. LNTW0, ..., LNTWN seria um acrônimo para Link NeTWork. Esses são as redes as quais os links pertencem. Seja o endereço do link 0 10.2.0.2/24, sua rede, ou LNTW0, 10.2.0.0. Já LGW0, ...., LGWN são os gateways das redes.

    Epero ter ficado claro...

  16. #16

    Padrão

    Entendi...depois olhando com mais calma percebi isso!!!

    Seria bem isso mesmo, na verdade o direitor só quer que saia pelo link ponto-a-ponto se esse cair então entra a vpn que usa a internet.

    A VPN, e o link P2P, já se falam, mas não estou conseguindo rotear as redes para usar o P2P. Vou postar abaixo minhas configurações se puder dar umas dicas ou se eu tiver que criar um novo tópico me avise.
    Eu agradeço.
    Abs.

    P2P entre matriz e filial, tenho seguinte cenário.
    São dois servidores com três placa de rede cada.
    O servidor da matriz está asssim:

    Eth0: 192.168.0.3 - Rede local
    Eth2: Ip público fixo
    Eth3: 172.16.1.253 - Link ponto a ponto com a filial.
    Tun0: 10.1.1.1 - Tunel VPN que sai pela internet para filial

    O servidor da filial esta'assim:
    Eth0: Ip publico fixo
    Eth2: 192.168.1.1 - Rede local
    Eth3: 172.16.2.253 - Link ponto a ponto com a matriz.
    Tun0: 10.1.1.2 - Tunel VPN que sai pela internet para matriz

    - O túnel e as redes via VPN se enxergam se problemas.
    - Agora é necessário fazer com que as redes 192.168.0.0 e 192.168.1.0 se enxergem via P2P.
    - Do IP 172.16.1.253 eu pingo o 172.16.2.253 e vice versa.
    - Da rede 192.168.0.0 quando pingo a rede 192.168.1.0, para no 172.168.1.254 que o Gateway, logo algo nas regras está errado e ainda não consegui entender.

    Quais regras devo configurar para que funcione esse roteamento? A idéia também é manter o a VPN (10.0.0.0) ativa e criar um backup, se cair o ponto a ponto a VPN assume.

    Abaixo as configurações da MATRIZ

    ###Route -n (servidor Matriz)###

    Tabela de Roteamento IP do Kernel
    Destino Roteador MáscaraGen. Opções Métrica Ref Uso Iface
    10.1.1.2 0.0.0.0 255.255.255.255 UH 0 0 0 tun0
    200.15.124.100 0.0.0.0 255.255.255.240 U 0 0 0 eth2
    172.16.2.0 172.16.1.254 255.255.255.0 UG 0 0 0 eth3
    192.168.1.0 10.1.1.1 255.255.255.0 UG 0 0 0 tun0
    192.168.0.0 192.168.0.3 255.255.255.0 UG 0 0 0 eth0
    172.16.1.0 0.0.0.0 255.255.255.0 U 0 0 0 eth3
    169.254.0.0 0.0.0.0 255.255.0.0 U 0 0 0 eth0
    127.0.0.0 0.0.0.0 255.0.0.0 U 0 0 0 lo
    0.0.0.0 200.15.124.101 0.0.0.0 UG 0 0 0 eth2

    ###IPTABLES MATRIZ###

    #! /bin/bash

    #Inicializa modulos
    echo 1 > /proc/sys/net/ipv4/ip_forward
    modprobe iptable_nat

    #Flush all
    iptables -F
    iptables -X

    #drop all
    iptables -A INPUT -p tcp --syn -s 192.168.0.0/255.255.255.0 -j ACCEPT
    iptables -A INPUT -p tcp --syn -j DROP
    iptables -A INPUT -p icmp -i eth2 -j DROP

    #Libera acesso a VPN somente para os ips abaixo
    iptables -A FORWARD -s 192.168.0.3 -d 192.168.1.0/24 -j ACCEPT
    iptables -A FORWARD -s 192.168.0.1 -d 192.168.1.0/24 -j ACCEPT
    iptables -A FORWARD -s 192.168.0.133 -d 192.168.1.0/24 -j ACCEPT
    iptables -A FORWARD -s 192.168.0.83 -d 192.168.1.0/24 -j ACCEPT

    #Bloqueia acesso a VPN para o restante da rede
    iptables -A FORWARD -s 192.168.0.0/24 -d 192.168.1.0/24 -j DROP

    #Nesse processo estou apontando uma rota para gateway filial
    route del -net 192.168.1.0 netmask 255.255.255.0
    route add -net 192.168.1.0 netmask 255.255.255.0 gw 10.1.1.1
    route del -net 192.168.0.0 netmask 255.255.255.0
    route add -net 192.168.0.0 netmask 255.255.255.0 gw 192.168.0.3

    #Aqui estou liberando a máscara
    iptables -t nat -A POSTROUTING -o tun+ -j MASQUERADE

    #Ativa squid
    iptables -t nat -A POSTROUTING -o eth2 -j MASQUERADE
    iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 3128

    #E aqui estou permitindo a passagem de pacotes entre as redes
    iptables -A FORWARD -i tun0 -s 192.168.1.0/24 -d 192.168.0.0/24 -j ACCEPT
    #iptables -A FORWARD -i eth0 -j ACCEPT
    #iptables -A FORWARD -i eth2 -j ACCEPT
    #iptables -A FORWARD -i eth3 -j ACCEPT

    #Libera acesso INTRANET
    iptables -t nat -A PREROUTING -i eth2 -p tcp -m tcp --dport 24801 -j DNAT --to-destination 192.168.0.1:80

    #Libera DNS
    iptables -I INPUT -s 200.15.124.133 -j ACCEPT
    iptables -I INPUT -s 200.15.124.134 -j ACCEPT

    ###IPTABLES -L (MATRIZ)###

    Chain INPUT (policy ACCEPT)
    target prot opt source destination
    ACCEPT 0 -- 189.10.59.25.dsl.telesp.net.br anywhere
    ACCEPT 0 -- web1.embratel.com.br anywhere
    ACCEPT 0 -- mail.embratel.com.br anywhere
    ACCEPT tcp -- 192.168.0.0/24 anywhere tcp flags:FIN,SYN,RST,ACK/SYN
    DROP tcp -- anywhere anywhere tcp flags:FIN,SYN,RST,ACK/SYN
    DROP icmp -- anywhere anywhere

    Chain FORWARD (policy ACCEPT)
    target prot opt source destination
    ACCEPT 0 -- proxy.digivoice 192.168.1.0/24
    ACCEPT 0 -- 192.168.0.1 192.168.1.0/24
    ACCEPT 0 -- 192.168.0.133 192.168.1.0/24
    ACCEPT 0 -- 192.168.0.83 192.168.1.0/24
    DROP 0 -- 192.168.0.0/24 192.168.1.0/24
    ACCEPT 0 -- 192.168.1.0/24 192.168.0.0/24

    Chain OUTPUT (policy ACCEPT)
    target prot opt source destination

    ###Route -N (servidor Filial)###

    Tabela de Roteamento IP do Kernel
    Destino Roteador MáscaraGen. Opções Métrica Ref Uso Iface
    10.1.1.1 0.0.0.0 255.255.255.255 UH 0 0 0 tun0
    172.16.2.0 0.0.0.0 255.255.255.0 U 0 0 0 eth3
    192.168.1.0 0.0.0.0 255.255.255.0 U 0 0 0 eth2
    200.203.154.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0
    192.168.0.0 10.1.1.2 255.255.255.0 UG 0 0 0 tun0
    172.16.1.0 172.16.2.254 255.255.255.0 UG 0 0 0 eth3
    169.254.0.0 0.0.0.0 255.255.0.0 U 0 0 0 eth0
    127.0.0.0 0.0.0.0 255.0.0.0 U 0 0 0 lo
    0.0.0.0 200.203.154.1 0.0.0.0 UG 0 0 0 eth0

    ###IPTABLES - FILIAL###
    #! /bin/bash

    echo 1 > /proc/sys/net/ipv4/ip_forward

    #Nesse processo estou apontando uma rota para gateway filial
    route del -net 192.168.0.0 netmask 255.255.255.0
    route add -net 192.168.0.0 netmask 255.255.255.0 gw 10.1.1.2

    #Flush all
    iptables -F
    iptables -X

    #Drop all
    iptables -P INPUT DROP

    #Libera rede vinda da VPN
    iptables -A INPUT -s 10.1.1.1 -p tcp -j ACCEPT
    iptables -A INPUT -s 10.1.1.1 -p udp -j ACCEPT
    iptables -A INPUT -s 10.1.1.1 -p icmp -j ACCEPT

    #Libera rede com ip da DigiVoice
    iptables -A INPUT -s 200.203.154.2 -p tcp -j ACCEPT
    iptables -A INPUT -s 200.203.154.2 -p udp -j ACCEPT
    iptables -A INPUT -s 200.203.154.2 -p icmp -j ACCEPT

    #Libera SP acessar servidor local
    iptables -I INPUT -s 192.168.1.0/24 -j ACCEPT

    #Aqui estou liberando a máscara
    iptables -t nat -A POSTROUTING -o tun+ -j MASQUERADE

    #E aqui estou permitindo a passagem de pacotes entre as redes
    iptables -A FORWARD -i tun0 -s 192.168.0.0/24 -d 192.168.1.0/24 -j ACCEPT

    # Sinalizacao SIP
    iptables -A INPUT -p udp --dport 5060 -j ACCEPT

    # RTP
    iptables -A INPUT -p udp --dport 10000:20000 -j ACCEPT

    # IAX2
    iptables -A INPUT -p udp --dport 4569 -j ACCEPT

    #localhost
    iptables -A INPUT -i lo -j ACCEPT
    iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

    #NAT
    iptables --table nat --append POSTROUTING --out-interface eth0 -j MASQUERADE
    iptables --append FORWARD --in-interface eth0 -j ACCEPT

    IPTABLES -L (FILIAL)
    Chain INPUT (policy DROP)
    target prot opt source destination
    ACCEPT 0 -- 192.168.1.0/24 anywhere
    ACCEPT tcp -- 10.1.1.1 anywhere
    ACCEPT udp -- 10.1.1.1 anywhere
    ACCEPT icmp -- 10.1.1.1 anywhere
    ACCEPT tcp -- 200.203.154.2-dns-br.embratel.net.br anywhere
    ACCEPT udp -- 200.203.154.2-dns-br.embratel.net.br anywhere
    ACCEPT icmp -- 200.203.154.2-dns-br.embratel.net.br anywhere
    ACCEPT udp -- anywhere anywhere udp dpt:sip
    ACCEPT udp -- anywhere anywhere udp dpts:ndmp:dnp
    ACCEPT udp -- anywhere anywhere udp dpt:iax
    ACCEPT 0 -- anywhere anywhere
    ACCEPT 0 -- anywhere anywhere state RELATED,ESTABLISHED

    Chain FORWARD (policy ACCEPT)
    target prot opt source destination
    ACCEPT 0 -- 192.168.0.0/24 192.168.1.0/24
    ACCEPT 0 -- anywhere anywhere

    Chain OUTPUT (policy ACCEPT)
    target prot opt source destination

  17. #17

    Padrão

    Ôpa Pedro...
    Me tira uma dúvida... ou melhor... qual seria sua opinião hehe...
    Tava testando o iproute2...
    Testei mandando tudo de um IP para tal gateway...
    A questão é o seguinte... temos uma rede interna... com servidor web, mail, dns, dhcp... blablabla...
    Aí se quero acessar meu site como estou mandando tudo para tal gateway, minha conexão é realizada por fora... e não internamente...

    invés de:
    PC -> ACESSO HTTP REDE INTERNA

    fica sendo:
    PC -> VÁÁÁÁÁRIOS SALTOS -> ACESSO HTTP REDE EXTERNA

    Teria como pelo iproute2 alterar isso?
    Só veio a cabeça invés de mandar todo o tráfego da VLAN pelo gateway, utilizar o iptables para marcar pacotes com destino diferente da DMZ e esses irem pro gateway...

    Espero que tenha dado pra entender hehe...
    Valeu!!

  18. #18

    Padrão

    Rapaz.. Pra ser sincero não entendi...

    Faz um pequeno diagrama da sua rede com o Dia e põe aqui que fica mais claro a situação. Se puder, faz da topologia lógica e física. Mas lhe adianto que o IPRoute2 faz miséria! Ele é muito completo.

  19. #19

    Padrão

    É o seguinte...

    Algumas VLANs vão por tal gateway... e outras por outro...
    Temos uma DMZ... com www e etc... DNS interno e tal...

    Aí quando queremos acessar o site local acessamos internamente...
    Meu dns diz que eh 10.algo por exemplo...

    Só que quando coloco pra ir por tal gateway tudo vai por ele...
    Aí se quero acessar meu WWW interno... eu "saio" por uma conexão pra acessar pela conexão externa de outro provedor...

    Aí queria que tudo que fosse interno... "não saisse"...
    Se eu quiser acessar www.eu.com, acesse internamente... e não ir pelo gateway pra depois acessar como se fosse de fora....

    Está algo tipo "ip rule add from 10.0.0.120 table 20"...
    E essa tabela 20 manda tudo por um gateway pra fora...
    E eu preciso que eu querendo acessar o www.eu.com acesse internamente...
    Não que seja PC -> REDE_DE_FORA -> MEU_WWW_EXTERNO ... E sim PC -> MEU WWW_INTERNO

    Consegui ou enrolei? hehe

    Victor Hugo

  20. #20

    Padrão

    Você já configurou seu DNS?

    Quando você requisita Site.com.br, o DNS vai traduzir esse nome em um endereço. Se sua rede está indo pelo endereço externo, é por que o DNS o está enviando. Você já tentou usar o endereço IP para acessar o serviço? Se o problema pesistir, ai sim pode ser um problema de roteamento. Ai você volta por aqui. Mas coloque suas configurações. Endereços de rede, regras de roteamento, diagramas, etc.