Problema com iptables

1. Problema com iptables

Leandro Almeida
almeidasgt

(usa Ubuntu)

Enviado em 25/01/2008 - 21:13h

Primeiramente uma boa noite a todos,

Estou implementando um servidor proxy transparente com squid e firewall iptables no meu trabalho, duas ferramentas que são uma mão na roda pra qualquer administrador de rede. O squid funciona sem gerar nenhum log de erro (até aí, tranqüílis!). O fato é que o servidor acessa a internet mas não a repassa a rede local. Uso duas interfaces de rede (eth0-> internet; eth1->rede local) e acho que o problema está na regra do Iptables que habilita o proxy transparente:

iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 3128


A regra redireciona os pacotes entrantes pela eth0, porta tcp 80 para a porta do squid. Está faltando alguma regra para fazer o tráfego dos pacotes do squid para a eth1 (que redistribuirá para a rede local)??



  


2. Re: Problema com iptables

jeandias
jeandias

(usa Debian)

Enviado em 26/01/2008 - 10:01h

seria isso?

iptables -t nat -A POSTROUTING -o eth1 -j MASQUERADE


3. Re: Problema com iptables

Davi Rodrigues
davirodrigues

(usa Debian)

Enviado em 26/01/2008 - 14:54h

e aew Resolveu?

acredito que era só o que o nosso companheiro falou mesmo!!!!

posta aew se tiver dado certo


4. Re: Problema com iptables

Leandro Almeida
almeidasgt

(usa Ubuntu)

Enviado em 26/01/2008 - 15:04h

Vou ficar devendo a vocês até segunda-feira quando volto ao trabalho (é que ainda não criei um túnel ssh rsrs), mas responderei. Desde já agradeço a todos pela atenção e cooperação. Valeu!!!


5. Re: Problema com iptables

Leandro Almeida
almeidasgt

(usa Ubuntu)

Enviado em 29/01/2008 - 10:55h

É. . . tá difícil . . . vou postar as regras aí pra ver onde está Wally:
#!/bin/bash
echo "1" >/proc/sys/net/ipv4/ip_forward
/sbin/modprobe ip_tables
/sbin/modprobe iptable_nat
ipt="/sbin/iptables"
$ipt -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 3128
$ipt -t nat -A POSTROUTING -o eth1 -j MASQUERADE




6. Squid?

Delton
giaco

(usa Debian)

Enviado em 29/01/2008 - 11:09h

E como está seu squid.conf?


7. Re: Problema com iptables

Leandro Almeida
almeidasgt

(usa Ubuntu)

Enviado em 29/01/2008 - 12:14h

Meu squid.conf:

http_port 3128 transparent
visible_hostname roteador
cache_mem 64 MB
cache_dir ufs /var/spool/squid 100 16 256
cache_access_log /var/log/squid/access.log.1
cache_log /var/log/squid/cache.log



#acls básicas do sistemas
acl rede src 10.1.1.0
acl all src 0.0.0.0/0.0.0.0
acl manager proto cache_object
acl localhost src 127.0.0.1/255.255.255.255
acl to_localhost dst 127.0.0.0/8
acl SSL_ports port 443 # https
acl SSL_ports port 563 # snews
acl SSL_ports port 873 #rsync
acl Safe_ports port 80 # http
acl Safe_ports port 21 # ftp
acl Safe_ports port 22 # ssh
acl Safe_ports port 70 # gopher
acl Safe_ports port 210 # wais
#acl Safe_ports port 1025-65535 # unregistered ports
acl Safe_ports port 280 # http-mgmt
acl Safe_ports port 488 # gss-http
acl Safe_ports port 591 # filemaker
acl Safe_ports port 777 # multiling http
acl Safe_ports port 631 # cups
acl Safe_ports port 901 # SWAT
acl Safe_ports port 5432 # mysql
acl Safe_ports port 3128 # squid
acl purge method PURGE
acl CONNECT method CONNECT
acl paginas_proibidas url_regex"/etc/squid/proibidos"


http_access allow rede
http_access allow manager localhost
http_access deny manager
http_access deny all
http_access deny !Safe_ports
http_access deny CONNECT !SSL_ports
http_access deny paginas_proibidas




8. Interfaces

Delton
giaco

(usa Debian)

Enviado em 29/01/2008 - 13:09h

Olhando de novo seus post, notei uma coisa:

eth0 = internet;
eth1 = rede;

iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 3128

Está errado! O correto é pegar todos os pacotes que vem da rede interna pela porta 80 e redirecioná-los para a porta 3128, assim:

echo 1 > /proc/sys/net/ipv4/ip_forward

iptables -t nat -A PREROUTING -i eth1 -s 10.1.1.0/24 -p tcp --dport 80 -j REDIRECT --to-port 3128

iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

Testa e poste se funcionou.



9. complementa ai

Fabio Noriller
kelloggs

(usa Debian)

Enviado em 29/01/2008 - 13:39h

seguinte em baixo de tudo que o nosso amigo ali em sima postou coloca essas duas linhas aqui

modprobe ip_nat_ftp
modprobe ip_conntrack_ftp

blz cara vai te ajudar tb... caso precise direcionar portas avisa ai

falow


10. RESOLVIDO

Leandro Almeida
almeidasgt

(usa Ubuntu)

Enviado em 30/01/2008 - 20:05h

Beleza!! Agradeço a todos pela cooperação e espero ajudá-los também. O bizú que o Giaco passou resolveu o problema:

iptables -t nat -A PREROUTING -s 10.1.1.0/8 -i eth1 -p tcp --dport 80 -j REDIRECT --to-port 3128

iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

Sendo eth0:internet e eth1:rede local



11. Re: Problema com iptables

Adriano
a.mendesaguiar

(usa Fedora)

Enviado em 01/02/2008 - 11:16h

############################################################
##### REGRA PARA REDIRECIONAR PORTA 80 PARA O SQUID #####
############################################################
#echo ""
#echo "$COLOR[44;37m Redirecionando porta 80 para o Squid $COLOR[0m"
#echo ""

## porta 3128 SQUID
iptables -A FORWARD -p tcp -d $ANY --dport 3128 -j ACCEPT
iptables -A FORWARD -p tcp -s $ANY --dport 3128 -j ACCEPT
iptables -A FORWARD -p tcp -d $ANY --sport 3128 -j ACCEPT
iptables -A FORWARD -p tcp -s $ANY --sport 3128 -j ACCEPT
iptables -A FORWARD -p udp -d $ANY --dport 3128 -j ACCEPT
iptables -A FORWARD -p udp -s $ANY --dport 3128 -j ACCEPT
iptables -A FORWARD -p udp -d $ANY --sport 3128 -j ACCEPT
iptables -A FORWARD -p udp -s $ANY --sport 3128 -j ACCEPT

iptables -A INPUT -p tcp -d $ANY --dport 3128 -j ACCEPT
iptables -A INPUT -p tcp -s $ANY --dport 3128 -j ACCEPT
iptables -A INPUT -p tcp -d $ANY --sport 3128 -j ACCEPT
iptables -A INPUT -p tcp -s $ANY --sport 3128 -j ACCEPT
iptables -A INPUT -p udp -d $ANY --dport 3128 -j ACCEPT
iptables -A INPUT -p udp -s $ANY --dport 3128 -j ACCEPT
iptables -A INPUT -p udp -d $ANY --sport 3128 -j ACCEPT
iptables -A INPUT -p udp -s $ANY --sport 3128 -j ACCEPT

iptables -A OUTPUT -p tcp -d $ANY --dport 3128 -j ACCEPT
iptables -A OUTPUT -p tcp -s $ANY --dport 3128 -j ACCEPT
iptables -A OUTPUT -p tcp -d $ANY --sport 3128 -j ACCEPT
iptables -A OUTPUT -p tcp -s $ANY --sport 3128 -j ACCEPT
iptables -A OUTPUT -p udp -d $ANY --dport 3128 -j ACCEPT
iptables -A OUTPUT -p udp -s $ANY --dport 3128 -j ACCEPT
iptables -A OUTPUT -p udp -d $ANY --sport 3128 -j ACCEPT
iptables -A OUTPUT -p udp -s $ANY --sport 3128 -j ACCEPT

.
.
.
.
.
#GERAL pela porta 3128
iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 3128


Da uma olhada ai .. para ver se isso ajuda em algo ...



12. Re: Problema com iptables

Elgio Schlemer
elgio

(usa OpenSuSE)

Enviado em 01/02/2008 - 11:34h

Oi Leandro!

Apenas a regra que tu colocou para proxy transparente está OK.

Contudo, um fato pode estar te atrapalhando: DNS!

Veja que se teus clientes usam proxy CONFIGURADO NO NAVEGADOR (não transparente) o navegador SABE que tem proxy. Logo, neste caso, quando tu coloca no navegador www.vivaolinux.com.br o navegador pega a URL e envia DIRETO para a porta 3128 do proxy.

Se estiver transparente o navegador PENSA que acessa a internet direto. Então ele vai precisar resolver o DNS www.vivaolinux.com.br antes. Se os clientes não tiverem DNS, não funciona!!

Portanto tu precisas de um DNS para os clientes ou permitir, via NAT, que eles acessem um servidor DNS externo.

Tu podes ver se o problema é este ao colocar no cliente uma URL via IP. Se funcionar com IP e não com URL o problema é exatamente este que mencionei.

[]´s



01 02



Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts