Postado originalmente por
Edilmar
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.