+ Responder ao Tópico



  1. #1

    Padrão Servidor Proxy e Web na mesma maquina + com links diferentes ..

    Seguinte galera tenho dois links adsl que vou chamar de link1 e link2

    no meu servidor que ta com o squid ele faz nat e etc com o link1 e este tbm e o gatway da maquina

    agora preciso colocar o servidor web para responder as requisiçoes externas no link2 ..

    com isso ate acesso o servidor web porem nao tenho resposta pq ele tem o gatway do link1 que faz o nat das maquinas internta ..

    Gostaria de saber como eu posso criar uma regra pra tudo que venha do link2 na porta 80 o servidor consiga responder .. ou seja ele nao passe para o gatway (link1) mas ele responda com o link2

    ah detalhe tenho so 2 placas de rede.

  2. #2

    Padrão

    tenho isso em um bsd de cliente, basta que no teu link tenha um IP fixo e as portas do roteador devidamente abertas e apontando para a interface do teu servidor. o apache responderá na placa de rede interna bem como nas externas.

  3. #3

    Padrão

    Ate ae blz .. o problema e que pro apache dar a resposta ele passa para o gatway dele ou seja ..

    retorna para o modem (link1) e vai pra web a resposta ..

    porem este gatway e o que eu uso para o proxy e eu queria que ele desse a resposta para o outro o link2 ..

    minha rede ta assim ..
    - link1 192.168.X.1
    - link2 192.168.X.2

    - eth0 192.168.X.X
    - eth1 10.0.X.X

    gatway default 192.168.X.1 (link1)

    o servidor faz o nat entre as duas redes e o acesso a internet

    =====
    agora vem o problema ..
    abri no modem a porta para o servidor e sei que ta blz pq antes eu usava assim ... porem o gatway da maquina era o mesmo do modem com a porta aberta ou seja o servidor recebia a conexao dele e devolvia pra ele ...

    agora porem ele recebe a conexao (link2) e devolve para o gatway (link1) ..

    eu queria saber como redirecionar esta saida para que a resposta do servidor fosse envida para o link2 .. sem eu ter que alterar o gatway default que faz a nat ..

  4. #4

    Padrão

    Cara, iproute2 resolve isso ai. Iproute2 com iptables. Infelizmente não sei muito de iproute2.
    Pelo pouco que sei você pode "marcar" os pacotes que entram por uma interface usando o iptables e o iproute2 roteia os pacotes "marcados" para gateways diferentes.
    Como te disse não sei muito como configurar o iproute2, mas nada que uma pesquisa não resolva...

  5. #5

    Padrão Uma solução!

    Cara fiz uns testes aqui com o iproute2 e funcionou. Acho que dá pra resolver seu problema!


    1. Instala o iproute. Não sei qual sua distro mas se for Debian e afins um simples apt-get install iproute já funciona!

    2. Cria 3 regras no iptables. Essas regras vão marcar os pacotes pra que a gente conseguir diferenciar os tráfegos. Vou considerar que a eth1 seja a itnerface onde está conectado os 2 links de internet ok?
    Código :
    iptables -t mangle -A PREROUTING -i eth1 -p tcp --dport 80 -j MARK --set-mark 20
    iptables -t mangle -A PREROUTING -i eth1 -p tcp --dport 80 -j RETURN
    iptables -t mangle -A PREROUTING -i eth1 -j MARK --set-mark 10
    Não sei se você tem muita familiaridade com iptables. Na via das dúvidas vou explicar.
    A primeira regra está marcando todos os pacotes que entram pela eth1 e tem como destino a porta 80 (web) com o identificador 20.
    A segunda faz com que os pacotes que entram pela eth1 e tem como destino a porta 80 parem de ser processados pelo iptables nesse ponto. Se você quiser fazer qualquer tratamento de acesso ao servidor web tem que ser antes dessa linha.
    A terceira regra marca todos os outros pacotes que entram pela eth1 com o identificador 10.
    Dessa forma todo o trafego identificado como 20 será roteado para o link2 enquanto todo o restante do tráfego (que agora está marcado como 10) será roteado para o link1.
    Lembrando que essas regras não influenciam no Squid pois elas consideram a interface de entrada a eth1 enquanto o seu squid recebe pacotes na interface eth0!!!

    3. Criar as tabelas de roteamento:
    edite o arquivo /etc/iproute2/rt_tables
    Na última linha (após #1 inr.ruhep) adicione as seguintes linhas:
    Código :
    10 link1
    20 link2
    Isso mesmo agora você vai ter duas tabelas de roteamento! Muito cuidado com isso!

    4. Vincular o tráfego marcado como 10 à tabela de roteamento link1 e todo o tráfego marcado como 20 à tabela de roteamento link2.
    Código :
    ip rule add fwmark 10 table 10 prio 20
    ip rule add fwmark 20 table 20 prio 20
    Isso quer dizer que todo o tráfego marcado como 10 será tratado pela tabela 10 (link1) com prioridade 20 e todo tráfego marcado como 20 será tratado pela tabela 20 (link2) com prioridade 20.
    Para verificar essa vinculação utilize o comando:
    Código :
    ip rule list
    Ao emitir esse comando o número da tabela será exibido em hexadecimal.

    5. Remover toda e qualquer rota default que você possua!! Isso é muito importante!!

    6. Adicionar rotas default em cada tabela de roteamento. Como não sei qual o ip de cada modem que você tem vou considerar os IPs 192.168.1.253 (link1) e 192.168.1.254 (link2).
    Código :
    iproute add table link1 default via 192.168.1.253
    iproute add table link2 default via 192.168.1.254
    Para visualizar cada tabela de roteamento utilize o comando:
    Código :
    ip route list table link1
    ip route list table link2
    Pronto cara! É isso!! A essa altura já vai estar tudo funcionando!

    Revendo a solução: Ao receber um pacote pela eth1 o iptables separa o tráfego do servidor web do restante do tráfego. O tráfego do servidor web é roteado pela tabela 20 e o restante do tráfego é roteado pela tabela 10. A tabela 20 tem como gateway o seu modem ligado no "link2" enquanto a tabela 10 tem como gateway o seu modem ligado no "link1".

  6. #6

    Padrão

    E ai rdsat, resolveu o problema??