+ Responder ao Tópico



  1. #1

    Padrão iproute + iptables + squid

    Ola,

    Eu tenho 2 links, um ip dedicado para fornecer servicos de provedor para clientes externos (www,ftp,email,etc) e outro é uma ADSL para navegacao de usuarios internos (acessar servicos 21/22/80/443/3389 de servidores externos).

    Fiz o segte:
    0) mantive como rota default o ip do roteador dedicado
    1) /etc/iproute2/rt_tables: inclui tabela ADSL
    2) rodei os cmds abaixo para setar saida pela nova rota quando o pacote for marcado com 1:
    Código :
    ip route add default dev eth1 via 192.168.1.1 table adsl
    ip rule add fwmark 1 lookup adsl
    ip route flush cached
    3) coloquei estas configs para marcar pacotes das portas na saida:
    Código :
    iptables -t mangle -A PREROUTING -i eth0 -p tcp --dport 21 -j MARK --set-mark 1
    iptables -t mangle -A PREROUTING -i eth0 -p tcp --dport 22 -j MARK --set-mark 1
    iptables -t mangle -A PREROUTING -i eth0 -p tcp --dport 80 -j MARK --set-mark 1
    iptables -t mangle -A PREROUTING -i eth0 -p tcp --dport 443 -j MARK --set-mark 1
    iptables -t mangle -A PREROUTING -i eth0 -p tcp --dport 3128 -j MARK --set-mark 1
    iptables -t mangle -A PREROUTING -i eth0 -p tcp --dport 3389 -j MARK --set-mark 1
    Sendo que eu coloquei a porta 3128 "por desespero de causa"...
    4) eu ja tinha uma regra de proxy transparente:
    Código :
    iptables -t nat -A PREROUTING -s 192.168.200.0/24 -p tcp --dport 80 -j REDIRECT --to-port 3128

    Problema: o acesso FTP/21, SSH/22, HTTPS/443 e WTS/3389 funcionam. O acesso HTTP/80 nao é feito pela adsl, continua saindo pelo link dedicado.

    Acho que tem a ver com a regra que manda para o proxy, pois quando eu tiro ela a saida vai pela adsl.

    Ja tentei colocar as regras de mangle antes e depois da regra do proxy, mas tanto faz, da na mesma.

    Fazendo monitoramento pelo tcpdump, achei que o squid usa portas dinamicas para conectar no servidor remoto de porta 80, e deve mudar as coisas no pacote. Por isso o mangle da porta 80 nao funciona.

  2. #2

    Padrão

    Citação Postado originalmente por Edilmar Ver Post
    Ola,

    Eu tenho 2 links, um ip dedicado para fornecer servicos de provedor para clientes externos (www,ftp,email,etc) e outro é uma ADSL para navegacao de usuarios internos (acessar servicos 21/22/80/443/3389 de servidores externos).

    Fiz o segte:
    0) mantive como rota default o ip do roteador dedicado
    1) /etc/iproute2/rt_tables: inclui tabela ADSL
    2) rodei os cmds abaixo para setar saida pela nova rota quando o pacote for marcado com 1:
    Código :
    ip route add default dev eth1 via 192.168.1.1 table adsl
    ip rule add fwmark 1 lookup adsl
    ip route flush cached
    3) coloquei estas configs para marcar pacotes das portas na saida:
    Código :
    iptables -t mangle -A PREROUTING -i eth0 -p tcp --dport 21 -j MARK --set-mark 1
    iptables -t mangle -A PREROUTING -i eth0 -p tcp --dport 22 -j MARK --set-mark 1
    iptables -t mangle -A PREROUTING -i eth0 -p tcp --dport 80 -j MARK --set-mark 1
    iptables -t mangle -A PREROUTING -i eth0 -p tcp --dport 443 -j MARK --set-mark 1
    iptables -t mangle -A PREROUTING -i eth0 -p tcp --dport 3128 -j MARK --set-mark 1
    iptables -t mangle -A PREROUTING -i eth0 -p tcp --dport 3389 -j MARK --set-mark 1
    Sendo que eu coloquei a porta 3128 "por desespero de causa"...
    4) eu ja tinha uma regra de proxy transparente:
    Código :
    iptables -t nat -A PREROUTING -s 192.168.200.0/24 -p tcp --dport 80 -j REDIRECT --to-port 3128
    Problema: o acesso FTP/21, SSH/22, HTTPS/443 e WTS/3389 funcionam. O acesso HTTP/80 nao é feito pela adsl, continua saindo pelo link dedicado.

    Acho que tem a ver com a regra que manda para o proxy, pois quando eu tiro ela a saida vai pela adsl.

    Ja tentei colocar as regras de mangle antes e depois da regra do proxy, mas tanto faz, da na mesma.

    Fazendo monitoramento pelo tcpdump, achei que o squid usa portas dinamicas para conectar no servidor remoto de porta 80, e deve mudar as coisas no pacote. Por isso o mangle da porta 80 nao funciona.

    Tenho mais ou menos o q vc tem, so que aqui uso 4 links, nao vi o arquivo sobre a tables adsl completo, voce pode mostrar??

    Mas ja me adiantando, no arquivo, tem que ter o caminho tanto da adsl, tanto como pro link seu, vou tentar exemplificar..

    PS. tb coloco a output, nao so a prerouting.
    -A OUTPUT -s xxx.xx.xxx.xx -p tcp --dport 1863 -j MARK --set-mark 0x2


    aqui, como sao 2 links e 2 adsl fica assim
    table adsl
    xxx.xxx.xxx.xxx/29 dev eth4 scope link - esse link
    xxx.xxx.xxx.xxx/29 dev eth0 scope link - esse tb
    192.168.100.0/24 dev eth1 scope link
    192.168.2.0/24 dev eth3 scope link
    192.168.0.0/24 dev eth2 scope link
    192.168.90.0/24 dev eth4 scope link
    default via 192.168.0.1 dev eth2 - modem adsl

    table link
    xxx.xxx.xx.xxx/29 dev eth4 scope link
    xxx.xx.xx.xxx/29 dev eth0 scope link
    192.168.100.0/24 dev eth1 scope link
    192.168.2.0/24 dev eth3 scope link
    192.168.0.0/24 dev eth2 scope link
    192.168.90.0/24 dev eth4 scope link
    default via xxx.xx.xx.xxx dev eth4 - link

    e assim por diante,

    resumindo, o arquivo tem que ter o caminho para toda a sua rede



  3. #3

    Padrão

    Ola,

    Eu nao tenho o arquivo "adsl" conforme voce me passou... contudo, olhei alguns tutoriais sobre iproute2 e nao criaram tal arquivo. E pra mim está funcionando bem as rotas das outras portas (SSH,FTP,WTS,HTTPS). Somente do HTTP que nao funciona, por "culpa" do squid.

    Sera que se eu criar um arquivo adsl +/- do jeito que voce escreveu vai dar certo para o HTTP?

  4. #4

    Padrão

    Ola',

    Descobri que estou com outro problema além do supracitado de não conseguir redirecionar a porta 80 para a ADSL.

    Eu tinha configurado para redirecionar as portas 20 e 21 para a ADSL ao invés do link principal. Quando o servidor de FTP remoto aceita "FTP Ativo", funciona 100%, pois neste modelo usa-se as portas 20 e 21 mesmo. Contudo, quando o servidor usa "FTP Passivo" apenas eu não consigo conectar nele, haja vista que o "1o. contato" é pela porta 21, mas a troca de pacotes de dados ocorre por uma porta alta (acima de 1024), e o cliente de FTP se perde, pois os pacotes de controle usam a ADSL e os pacotes de dados usam o link principal.