Fórum Ubuntu Linux - PT
Suporte Técnico => Internet, Redes e Segurança => Tópico iniciado por: velox256 em 10 de Julho de 2014, 20:45
-
Moçada, montei um servidor Squid + DHCP + Gateway de internet e tudo funcionou direitinho. Porém surgiram alguns problemas. O Squid, para funcionar, deve ser configurado nas máquinas clientes (o proxy) para serem usados, mas isso é impraticável pois basta ir nas configurações de rede das máquinas clientes, tirar o proxy e as máquinas navegam pela internet. Então procurei por aqui um modo de forçar o redirecionamento de portas pelo Iptables para que as máquinas clientes usassem "na marra" o Squid (nem precisa de autenticação) com ou sem configuração de proxy nas máquinas. Usei essa linha de comando:
iptables -t nat -I PREROUTING -p tcp --dport 80 -j REDIRECT --to-port 3128
Funcionou, mas perdi o acesso ao meu webserver de fora de minha rede, ou seja, se eu digitar o meu endereço do NO-IP, dá que a configuração de controle de acesso impede que a sua requisição seja permitida nesse momento. Se eu tirar a linha e reiniciar a máquina o acesso externo volta a funcionar.
O meu script de gateway de internet completo é esse aqui:
modprobe iptable_nat
echo 1 > /proc/sys/net/ipv4/ip_forward
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
iptables -t nat -I PREROUTING -p tcp --dport 80 -j REDIRECT --to-port 3128
O meu Squid está como:
http_port 3128 transparent
Alguma dica?
-
Especifique com o "-i" a interface dos clientes!
iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 3128
iptables -t nat -A PREROUTING -i eth0 -p udp --dport 80 -j REDIRECT --to-port 3128
Substitua o "eth0" pela sua interface de rede local.
-
Duas sugestões...
1. Bloqueie o repasse direto de conexões. Mexeu na configuração de proxy? Seu navegador vai parar de funcionar, baby. Quem aprendeu a fazer, que aprenda a desfazer.
iptables -A FORWARD -p tcp -m multiport --dport 80,81,82,8080,443 -i eth0 -j REJECT
2. Continue fazendo proxy transparente, mas ao invés de especificar a interface com "-i" (ou, junto com), especifique o endereço de rede com "-s".
iptables -t nat -A PREROUTING -s 192.168.1.0/24 --dport 80 -j REDIRECT --to-port 3128
-
Blz, testei a jogada e funcionou, mantive a "transparent" do squid e foi na boa, tendo acesso ao webserver e sem precisar configurar o proxy nas máquinas.
Especifique com o "-i" a interface dos clientes!
iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 3128
iptables -t nat -A PREROUTING -i eth0 -p udp --dport 80 -j REDIRECT --to-port 3128
Substitua o "eth0" pela sua interface de rede local.
-
Zekkerj,
Não tive tempo para ver a sua solução, vou fazer isso mais tarde e posto aqui o que serviu (ou não). Acho que a opção 1 vai servir direitinho para uma segunda situação que estou montando, hehehehe... De qq maneira, consegui o que eu queria com a dica do Arthur, que foi forçar o uso do Squid sem a necessidade de configurar o proxy nas máquinas clientes E não perder o acesso externo ao meu webserver, que tem serviços de monitoramento e logs de acesso.
Duas sugestões...
1. Bloqueie o repasse direto de conexões. Mexeu na configuração de proxy? Seu navegador vai parar de funcionar, baby. Quem aprendeu a fazer, que aprenda a desfazer.
iptables -A FORWARD -p tcp -m multiport --dport 80,81,82,8080,443 -i eth0 -j REJECT
2. Continue fazendo proxy transparente, mas ao invés de especificar a interface com "-i" (ou, junto com), especifique o endereço de rede com "-s".
iptables -t nat -A PREROUTING -s 192.168.1.0/24 --dport 80 -j REDIRECT --to-port 3128