Erro após colocar o squid como transparente

Iniciado por jeandre, 26 de Março de 2012, 18:54

tópico anterior - próximo tópico

jeandre

Vou colocar os meus arquivos de configurações abaixo para ver o que pode estar acontecendo, sendo que a internet entra na eth0 e a rede interna esta na eth1.
Se eu colocar no servidor o proxy 127.0.0.1:3128 ele gera a cache e o log.
Mas nas máquinas não esta nem navegando, da um erro no windows dizendo que não pode esvaziar o cache dns, mas esta tudo para pegar automaticamente.
Cheguei a Retirar tudo do squid e deixei somente

http_port 3128
visible_hostname RD
acl all src 0.0.0.0/0.0.0.0
http_access allow all

E não funcionou, o que aconteceu foi o seguinte, o servidor dhcp não estava fornecendo IP dai percebi que havia colocado eth01 em vez de eth1 em INTERFACES="eth1". Após isto a net parou de funcionar nos micros windows (que estavam com ip fixo), mas começou a pegar ip automatico e dns que era o problema anterior, mas não navega e da aquele erro de esvaziamento de dns que comentei. No servidor funciona perfeitamente inclusive passando pelo squid.

Alguem tem como me ajudar?

Squid.conf

http_port 3128 transparent
visible_hostname RD

#cache

cache_mem 64 MB
maximum_object_size_in_memory 256 KB
maximum_object_size 512 MB
minimum_object_size 2 KB
cache_swap_low 90
cache_swap_high 95
cache_dir ufs /var/spool/squid 20000 16 256
cache_access_log /var/log/squid/access.log
refresh_pattern ^ftp: 15 20% 2280
refresh_pattern ^gopher: 15 0% 2280
refresh_pattern . 15 20% 2280

#Fim cache

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 SSL_ports port 443 563
acl Safe_ports port 80 # http
acl Safe_ports port 21 # ftp
acl Safe_ports port 443 563 # https, snews
acl Safe_ports port 70 # gopher
acl Safe_ports port 210 # wais
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 901 # swat
acl Safe_ports port 1025-65535 # portas altas
acl purge method PURGE
acl CONNECT method CONNECT

http_access allow manager localhost
http_access deny manager
http_access allow purge localhost
http_access deny purge
http_access deny !Safe_ports
http_access deny CONNECT !SSL_ports

acl site dstdomain siteproblematico.com
always_direct allow site

acl redelocal src 192.168.1.0/24
http_access allow localhost
http_access allow redelocal

http_access deny all

DHCPD.conf

ddns-update-style none;
default-lease-time 600;
max-lease-time 7200;
authoritative;

subnet 192.168.1.0 netmask 255.255.255.0 {
range 192.168.1.100 192.168.1.199;
option routers 192.168.1.1;
option domain-name "RD SERVER";
option domain-name-servers 201.10.120.3,201.10.1.2;
option broadcast-address 192.168.1.255;
}

RC.Local

modprobe iptable_nat
echo 1 > /proc/sys/net/ipv4/ip_forward
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

iptables -A FORWARD -p tcp --tcp-flags SYN,RST SYN -m tcpmss --mss 1400:1536 -j TCPMSS --clamp-mss-to-pmtu
iptables -t nat -A PREROUTING -i eth1 -p tcp --dport 80 -j REDIRECT --to-port 3128
iptables -t nat -A PREROUTING -i eth1 -p tcp --dport 443 -j REDIRECT --to-port 3128

iptables -A INPUT -p icmp --icmp-type echo-request -j DROP
echo 1 > /proc/sys/net/ipv4/conf/default/rp_filter
echo 1 > /proc/sys/net/ipv4/ip_forward
iptables -A INPUT -m state --state INVALID -j DROP
iptables -A INPUT -i lo -j ACCEPT
iptables -A INPUT -i eth0 -j ACCEPT
iptables -A INPUT -p tcp --dport 22 -j ACCEPT
iptables -A INPUT -p tcp --syn -j DROP

INTERFACES

auto lo eth0 eth1
iface lo inet loopback

iface eth1 inet static
address 192.168.1.1
netmask 255.255.255.0
#network 192.168.1.0
#broadcast 192.168.1.255

iface eth0 inet dhcp

zekkerj

Citaroption domain-name "RD SERVER";
Isto está errado. Um "domain name" não pode ter espaços.

Citarptables -A INPUT -p icmp --icmp-type echo-request -j DROP
echo 1 > /proc/sys/net/ipv4/conf/default/rp_filter
echo 1 > /proc/sys/net/ipv4/ip_forward
iptables -A INPUT -m state --state INVALID -j DROP
iptables -A INPUT -i lo -j ACCEPT
iptables -A INPUT -i eth0 -j ACCEPT
iptables -A INPUT -p tcp --dport 22 -j ACCEPT
iptables -A INPUT -p tcp --syn -j DROP
Cadê a regra liberando a entrada na porta 3128/tcp?
Pesquise antes de perguntar, sua dúvida pode já ter sido respondida.
Não respondo dúvidas por MP, coloque sua dúvida no fórum onde ela pode ser pesquisada pelos seus colegas!
Não venha ao fórum apenas para perguntar. Se você sabe a resposta de um problema, porque não ajudar seu colega? ;D

jeandre

Ok funcionou mas tive ainda que mudar mais algumas coisinhas no rc.local mas agora o que acontece se eu coloco o proxy localhost no servidor ele passa pelo squid e fal log e cache normal, mas as máquinas da rede não, elas acessam normalmente a internet mas não fazem cache nem log.

#ativando compartilhamento eth0 = placa da internet
echo 1 > /proc/sys/net/ipv4/ip_forward
iptables -A FORWARD -p tcp --tcp-flags SYN,RST SYN -m tcpmss --mss 1400:1536 -j TCPMSS --clamp-mss-to-pmtu

echo 1 > /proc/sys/net/ipv4/conf/default/rp_filter

#redirecionando da porta 80 para a 3128 do squid
iptables -t nat -A PREROUTING -d 192.168.1.0/24 -p tcp --dport 80 -j REDIRECT --to-port 3128
iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -o eth0 -j MASQUERADE

#liberando a porta 3128
iptables -A INPUT -i 192.168.1.0/24 -p tcp --dport 80
#bloqueando outras portas
iptables -A INPUT -p icmp --icmp-type echo-request -j DROP
iptables -A INPUT -m state --state INVALID -j DROP
iptables -A INPUT -i lo -j ACCEPT
iptables -A INPUT -i eth0 -j ACCEPT
#abre a porta 22 para conexao externa
iptables -A INPUT -p tcp --dport 22 -j ACCEPT
iptables -A INPUT -p tcp --syn -j DROP


e o save do iptable ta assim

# Generated by iptables-save v1.4.10 on Tue Mar 27 16:02:16 2012
*nat
:PREROUTING ACCEPT [506:36421]
:INPUT ACCEPT [47:9422]
:OUTPUT ACCEPT [717:43418]
:POSTROUTING ACCEPT [717:43418]
-A PREROUTING -d 192.168.1.0/24 -p tcp -m tcp --dport 80 -j REDIRECT --to-ports 3128
-A POSTROUTING -s 192.168.1.0/24 -o eth0 -j MASQUERADE
COMMIT
# Completed on Tue Mar 27 16:02:16 2012
# Generated by iptables-save v1.4.10 on Tue Mar 27 16:02:16 2012
*filter
:INPUT ACCEPT [17:1971]
:FORWARD ACCEPT [4326:2031918]
:OUTPUT ACCEPT [23865:11592314]
-A INPUT -i 192.168.1.0/24 -p tcp -m tcp --dport 80
-A INPUT -p icmp -m icmp --icmp-type 8 -j DROP
-A INPUT -m state --state INVALID -j DROP
-A INPUT -i lo -j ACCEPT
-A INPUT -i eth0 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 22 -j ACCEPT
-A INPUT -p tcp -m tcp --tcp-flags FIN,SYN,RST,ACK SYN -j DROP
-A FORWARD -p tcp -m tcp --tcp-flags SYN,RST SYN -m tcpmss --mss 1400:1536 -j TCPMSS --clamp-mss-to-pmtu
COMMIT
# Completed on Tue Mar 27 16:02:16 2012

zekkerj

Citar#liberando a porta 3128
iptables -A INPUT -i 192.168.1.0/24 -p tcp --dport 80
#bloqueando outras portas
iptables -A INPUT -p icmp --icmp-type echo-request -j DROP
iptables -A INPUT -m state --state INVALID -j DROP
iptables -A INPUT -i lo -j ACCEPT
iptables -A INPUT -i eth0 -j ACCEPT
#abre a porta 22 para conexao externa
iptables -A INPUT -p tcp --dport 22 -j ACCEPT
iptables -A INPUT -p tcp --syn -j DROP

Continua errado. Primeiro, está fora de ordem; coloque a linha nova no mesmo ponto onde vc colocou a liberação pra porta 22.
Pq isso? O iptables trabalha em modo sequencial. As regras são avaliadas pra execução em ordem, e uma vez que ele executa uma das regras, ele pára a avaliação. Então a primeira regra executada é a última; se vc coloca uma regra antes das outras, ela tem prioridade.

Colocando a regra pra liberar a porta 3128 antes das regras de controle de sanidade, vc vai aceitar qq coisa que chegue pro teu squid, mesmo que inválido.

E segundo... vc não tinha que liberar a porta 3128??? Pq liberou a porta 80???

Além disso, o parâmetro "-i" foi usado errado. Vc deveria ter usado "-s" ou "--source".
Pesquise antes de perguntar, sua dúvida pode já ter sido respondida.
Não respondo dúvidas por MP, coloque sua dúvida no fórum onde ela pode ser pesquisada pelos seus colegas!
Não venha ao fórum apenas para perguntar. Se você sabe a resposta de um problema, porque não ajudar seu colega? ;D

jeandre

zekkerj Muito obrigado era isto mesmo que estava acontecendo. Valeu