+ Responder ao Tópico



  1. #1

    Red face Dúvida para repassar requisições para alguns domínios entre 2 gateways com Iptables

    Boa noite galerinha!

    Sou iniciante no UnderLinux e no Linux também. Tenho algum tempo de experiência com Slackware, mas, como todo mundo, tenho muitas dúvidas.

    Meu problema é o seguinte. Tenho dois servidores, um Slackware 11 compartilhando internet e outro servidor Windows 2003, que também tem compartilhamento de net, mas a rede interna não acessa.

    Preciso fazer o seguinte, fazer todo o tráfego da rede interna passar pelo Slackware (o que já acontece) e fazer alguns endereços de domínios passarem para o Windows 2003, retornando o resultado para o Slackware para realizar a busca da máquina cliente. Porque isso: Existe um cliente VPN (Checkpoint SecureClient 4 R55) no Windows 2003 que faz a conexão com a VPN de um domínio externo. Compartilhando diretamente a conexão do Windows 2003 para a rede interna e com o cliente VPN logado, consigo acessar normalmente a extranet nos outros computadores da rede interna, caso contrário, preciso autenticar máquina por máquina com o cliente VPN (o que fica claro que não queremos).

    Exemplo: A máquina1 da rede vai acessar o domínio exemplo.com. Quando a máquina1 fizer a requisição, o Slackware busca diretamente, mas como não está conectado nessa VPN para acessar a dita extranet, retorna como página não encontrada. Então crio uma regra IPTABLES para que, quando a máquina1 requisite o exemplo.com, o Slackware repasse essa requisição para o Windows 2003, que executará a busca e retornará o resultado ao Slackware, que por sua vez, retorna o resultado à máquina1. UFA!

    O problema é que eu não entendo muito bem de regras iptables, alguém poderia me dar uma luz nisso??? Ah! A requisição seria pela porta http mesmo, uma vez que o 2003 já está conectado, não precisando redirecionamento de outras portas para isso.

    O Slackware compartilha a internet pela eth0 (192.168.1.102) e se comunica com o Windows 2003 pela eth2 (10.1.1.102). O endereço do Windows é 10.1.1.101.

    Mais uma coisinha, já busquei esse software para linux e encontrei somente para Red Hat 7, mas como o suporte para hardware dessa distro ficou bem limitada para esse servidor, não teve como instalar. Varri a net toda e nada, somente para Red Hat mesmo.

    Como eu poderia fazer um script com iptables para isso???

    Galera, por favor uma luz! ehehehehe

    Perdoem-me se não correspondi com as regras de postagem, mas sou novo e sei que tenho muito a aprender ainda hehehehe, abraços e muito obrigado!
    Última edição por glaucioklipel; 10-01-2007 às 23:15.

  2. #2

    Padrão

    Pelo jeito não fui claro... vou reformular a questão.

    Acho que não seria com Iptables, seria com Iproute2.

    Quero que tudo que a rede interna requisite dos domínios VIVO.COM.BR e VIVO-RS.COM.BR passe pelo Windows 2003 sem que a rede interna o enxergue, pois se a rede o enxergar, já era filtro de internet.

    Quero que passe para o Windows 2003 para que eu possa ter acesso direto à extranet, sem ter que autenticar cliente por cliente, assim o 2003 já fica logado e consegue enviar os dados para cada estação, sem que as estações tenham que conectar o cliente VPN.

    Teria como eu criar uma rota para um domínio específico???

    Pelo amor de Deus me ajudem!!! ahahah

  3. #3

    Padrão

    Citação Postado originalmente por glaucioklipel Ver Post
    Pelo jeito não fui claro... vou reformular a questão.

    Acho que não seria com Iptables, seria com Iproute2.

    Quero que tudo que a rede interna requisite dos domínios VIVO.COM.BR e VIVO-RS.COM.BR passe pelo Windows 2003 sem que a rede interna o enxergue, pois se a rede o enxergar, já era filtro de internet.

    Quero que passe para o Windows 2003 para que eu possa ter acesso direto à extranet, sem ter que autenticar cliente por cliente, assim o 2003 já fica logado e consegue enviar os dados para cada estação, sem que as estações tenham que conectar o cliente VPN.

    Teria como eu criar uma rota para um domínio específico???

    Pelo amor de Deus me ajudem!!! ahahah
    Acho que aqui tem ...

    https://under-linux.org/forums/archi...f-96-p-11.html

    Falow ..

  4. #4

    Padrão

    Citação Postado originalmente por rootmaster Ver Post
    Valeu root!
    Me desculpem, eu esqueci dessa minha pergunta, mas já está resolvido, assim que eu terminar os fine-tune no servidor, eu posto qual foi a solução.

    Abraços!

  5. #5

    Padrão

    Citação Postado originalmente por glaucioklipel Ver Post
    Valeu root!
    Me desculpem, eu esqueci dessa minha pergunta, mas já está resolvido, assim que eu terminar os fine-tune no servidor, eu posto qual foi a solução.

    Abraços!
    Tranquilo ...

  6. #6

    Talking Resolvido

    Então, como eu tinha postado antes, já achei a solução e já apliquei, funciona perfeitamente.

    Voltando a explicação, tenho dois links ADSL, porém, não queria fazer load balancing, queria somente usar o segundo link ADSL para o Postgres.

    Um link está com o modem em PPPoA e modo router, o segundo link está em um modem em PPPoE modo Bridge.

    Então precisei criar uma tabela de roteamento exclusiva para os acessos da Vivo e outra para o Postgres.

    root@globalinux:/# cat /etc/iproute2/rt_tables
    #
    # reserved values
    #
    255 local
    254 main
    253 default
    #
    #
    #
    0 unspec
    #
    # local
    #
    #1 inr.ruhep

    201 vivo
    200 flexis


    Após isso, precisei adicionar as rotas às tabelas. A tabela flexis é a tabela do Postgres e a tabela Vivo dispensa comentarios

    # ip rule add from <endereço ip da interface ppp0> lookup flexis
    Definimos qual é a rota que todos os pacotes vindos do IP da ppp0 vai usar para entrada e saida.

    # ip route add default dev ppp0 via <gateway da brasil telecom> table flexis
    Adicionamos a interface ppp0 como sendo rota na tabela flexis e indicamos seu gateway. Assim a regra criada de entrada e saída por essa rota pode 'vigorar'.

    Agora, para os sites da vivo, precisei usar a tabela mangle do iptables para poder marcar os pacotes, para depois incluir uma rota para eles.

    # ip route add default dev eth1 via 192.168.1.203 table vivo
    Primeiro adicionamos o caminho na tabela da vivo, no caso, o meu sinal com destino à Vivo, vai passar por um servidor Windows 2003, que estará conectado com um cliente VPN, para assim não precisar autenticar todas as máquinas e economizar tempo e, claro, saco!

    # iptables -t mangle -A PREROUTING -i eth1 -p tcp -s 192.168.1.0/24 -d <endereço IP do destino> -j MARK --set-mark 2
    Fazemos então a marcação '2' para os pacotes com o destino.

    # ip rule add fwmark 2 lookup vivo
    Pronto, definido para todos os pacotes marcados pelo firewall como 2 passem a buscar a rota definida na tabela Vivo.

    # ip route flush cached
    Temos que fazer vigorar as regras do iproute2.

    Então galera, foi resolvido assim, tem muitos caminhos e possibilidades com as duas ferramentas, iproute2 e iptables, pensei em fazer também um load balancing na rede, mas só o fato de ter tirado os acessos do programa do link principal já deu uma bela desafogada, e não precisou fazer.

    Se interessar a alguém, estou usando no-ip no link de IP dinâmico. Como para algumas coisas no linux eu ainda sou verde e escolhi uma distro meio complicadinha, que é a Slackware, usei o seguinte comando para verificar o IP e atualizar a rota, também para que o domínio no-ip fique sempre atualizado:

    for i in `ifconfig ppp0 | cut -c 21-33 | grep 20; do
    PPP=$i
    done

    ip rule add from $PPP lookup flexis
    ip route flush cached


    Adicionei no script do firewall, para efeitos de reinicialização e também fiz um script e adicionei no CRON para verificação de 5 em 5 minutos (nóia, as vezes a conexão pode cair rapidamente e voltar com outro IP e eu não vou querer ficar o tempo inteiro cuidando se a rota está certa ou não).

    Bom, a solução foi esta galera, está funcionando 100%, sem problema algum.

    Abraços e obrigado à quem deu atenção ao caso!
    Última edição por glaucioklipel; 21-01-2007 às 12:41.

  7. #7

    Padrão

    Vale lembrar também que as vezes o Kernel pode estar compilado com alguns módulos do iptables não nativos, ou seja, marcados como [M] ao invés de[*].

    Me fu%$%# pra recompilar o meu kernel. O Slack vem com Kernel 2.4.33 e eu passei para 2.6.17.13, com patch para o layer7. Deu 325345987 paus hehehe, mas no fim, deu tudo certinho.

    Se por acaso alguns comandos do iptables não funcionarem, é só inserir os módulos necessários. Na dúvida, estes módulos podem ser utilizados:

    #/sbin/modprobe iptable_nat
    #/sbin/modprobe iptable_mangle
    #/sbin/modprobe ipt_conntrack
    #/sbin/modprobe ip_conntrack_ftp
    #/sbin/modprobe ip_nat_ftp
    #/sbin/modprobe ipt_multiport
    #/sbin/modprobe ipt_LOG
    #/sbin/modprobe ipt_mark
    #/sbin/modprobe ipt_MARK