Bom dia!
Venho desesperado atras da ajuda de vcs.
Estou tentando fazer um Servidor cache com squid tansparente, o servidor esta funcionado perfeitamente mais sem ser transparente.
Vou colocar breviamente a minha instalação e o squid.conf e a regra de firewall que criei.
Tenho instalado o Ubuntu server 10.04 baixei o desktop e instalei do squid 3.19 coloquei todas as linhas de comando que queria como mostra abaixo e funcionou perfeitemente mais na hora de colocalo como transpaente instalei o firewaal no init.d dei permissão no chmod +x firewall mais não teve jeito.
Segue abaixo o Squid e o firewall.
# WELCOME TO SQUID 3.0.STABLE19
# ----------------------------
# Squid normally listens to port 3128
http_port 3128 transparent
#Default:
cache_mem 64 MB
#Default:
cache_swap_low 90
cache_swap_high 95
#Default:
cache_dir ufs /var/spool/squid3 30000 16 256
#Default:
maximum_object_size 100 MB
#Default:
maximum_object_size_in_memory 64 KB
#Default:
minimum_object_size 0 KB
#Suggested default:
refresh_pattern ^ftp: 1440 20% 10080
refresh_pattern ^gopher: 1440 20% 1440
refresh_pattern (cgi-bin|\?) 0 0% 0
refresh_pattern . 0 20% 4320
acl manager proto cache_object
acl localhost src 127.0.0.1/32 10.2.0.0/24
acl to_localhost dst 127.0.0.0/8 0.0.0.0/32
acl acesso_total src "/etc/squid3/acesso_total"
acl acesso_restrito src "/etc/squid3/acesso_restrito"
acl liberado url_regex -i "/etc/squid3/liberado"
acl download url_regex -i "/etc/squid3/download"
acl bloqueado url_regex -i "/etc/squid3/bloqueado"
#### BLOQUEIA TUDO E LIBERA ALGUNS SITES ####
acl bloqueado1 url_regex "/etc/squid3/bloqueado1"
acl liberado1 url_regex "/etc/squid3/liberado1"
acl SSL_ports port 443
acl Safe_ports port 80 # http
acl Safe_ports port 21 # ftp
acl Safe_ports port 443 # https
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 110
#acl Safe_ports port 25
acl CONNECT method CONNECT
#Default:
http_access allow manager localhost
http_access deny manager
http_access deny !Safe_ports
http_access deny CONNECT !Safe_ports
http_access allow acesso_total
http_access allow liberado
http_access deny download
http_access deny bloqueado
http_access allow acesso_restrito
http_access allow liberado1
http_access deny bloqueado1
http_access deny all
#http_access allow localnet
http_access allow localhost
#icp_access allow localnet
icp_access deny all
#htcp_access allow localnet
htcp_access deny all
#We recommend you to use at least the following line.
hierarchy_stoplist cgi-bin ?
access_log /var/log/squid3/access.log squid
#Default:
cache_log /var/log/squid3/cache.log
#Default:
cache_store_log /var/log/squid3/store.log
error_directory /usr/share/squid3/errors/Portuguese/
Agora o Firewall
#!/bin/bash
firewall_start(){
echo "####>> Ativando o compartilhamento da internet <<####"
echo 1 > /proc/sys/net/ipv4/ip_forward
echo "Limpando as regras do firewall"
iptables -F
iptables -X
iptables -t nat -F
iptables -t nat -X
iptables -t mangle -F
iptables -t mangle -X
iptables -P INPUT DROP
iptables -P FORWARD DROP
iptables -P OUTPUT ACCEPT
iptables -A INPUT -i lo -j ACCEPT
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT
# Limite contra ping da morte e DoS
iptables -A INPUT -p icmp --icmp-type echo-request -m limit --limit 1/s -j ACCEPT
iptables -A INPUT -p icmp --icmp-type echo-reply -m limit --limit 1/s -j DROP
##>> Abre a faixa de endereços da rede local
#iptables -A INPUT -s 10.2.0.0/255.255.255.0 -j ACCEPT
iptables -A INPUT -p tcp --dport 3128 -i eth0 -j ACCEPT
##>> COMPARTILHAMENTO E PROXY TRANSPARENTE
echo "####>> Mascarando a placa de rede eth0 (Rede externa) <<####"
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
echo "####>> Ativando o proxy transparente <<####"
iptables -t nat -A PREROUTING -s 10.2.0.0/255.255.255.0 -p tcp --dport 80 -j REDIRECT --to-port 3128
##>> BLOQUEAR ACESSO AO MSN MESSENGER
#iptables -A FORWARD -s 192.168.254.0/24 -p tcp --dport 1863 -j REJECT
#iptables -A FORWARD -s 192.168.254.0/24 -d loginnet.passport.com -j REJECT
##>> ABERTURAS E REDIRECIONAMENTO DE PORTAS
echo "####>> Abrindo a porta do servidor ssh (54323) <<####"
iptables -A INPUT -p tcp --dport 54323 -j ACCEPT
iptables -A OUTPUT -p tcp --dport 54323 -j ACCEPT
echo "####>> Abrindo a porta do Terminal (3389)
<<####"
iptables -A INPUT -p tcp --dport 22 -j ACCEPT
iptables -A INPUT -p tcp --dport 3389 -j ACCEPT
iptables -A OUTPUT -p tcp --dport 3389 -j ACCEPT
echo "####>> Redirecionando portas Terminal Service <<####"
iptables -I FORWARD -p tcp -i eth1 --dport 3389 -j ACCEPT
iptables -t nat -A PREROUTING -p tcp --dport 3389 -j DNAT --to-destination 10.2.0.254:3389
##>> CONECTIVIDADE SOCIAL
echo "#### >> Liberando ip's da caixa economica (cmt.gov.br) <<####"
iptables -t nat -I PREROUTING -d 200.223.17.180/255.255.0.0 -j ACCEPT
iptables -t nat -I PREROUTING -d 200.201.173.168/255.255.0.0 -j ACCEPT
#### >> Ignora pings
#echo "1" > /proc/sys/net/ipv4/icmp_echo_ignore_all
#### >> Proteção contra IP spoofing << ####
echo 1 > /proc/sys/net/ipv4/conf/default/rp_filter
# Protege contra synflood
echo "1" > /proc/sys/net/ipv4/tcp_syncookies
# Proteção contra ICMP Broadcasting
echo "1" > /proc/sys/net/ipv4/icmp_echo_ignore_broadcasts
# Bloqueia traceroute
iptables -A INPUT -p udp --dport 33435:33525 -j DROP
# Proteções diversas contra portscanners, ping of death, ataques DoS, etc.
iptables -A INPUT -m state --state INVALID -j DROP
# Abre para a interface de loopback.
# Esta regra é essencial para o KDE e outros programas gráficos funcionarem adequadamente.
iptables -A INPUT -i lo -j ACCEPT
# Fecha as portas udp de 1 a 1024
iptables -A INPUT -p udp --dport 1:1024 -j ACCEPT
iptables -A INPUT -p udp --dport 59229 -j DROP
# Esta regra é o coração do firewall,
# ela bloqueia qualquer conexão que não tenha sido permitida acima, justamente por isso ela é a última da cadeia.
iptables -A INPUT -p tcp --syn -j DROP
echo "O Firewall esta sendo carregado..."
sleep 1
echo "Tudo pronto!"
sleep 1
}
firewall_stop(){
iptables -F
iptables -X
iptables -P INPUT ACCEPT
iptables -P FORWARD ACCEPT
iptables -P OUTPUT ACCEPT
}
case "$1" in
"start")
firewall_start
;;
"stop")
firewall_stop
echo "O Firewall esta sendo desativado"
sleep 2
echo "ok."
;;
"restart")
echo "O Firewall esta sendo desativado"
sleep 1
echo "ok."
firewall_stop; firewall_start
;;
*)
iptables -L -n
esac
Agurado a resposta de vcs.
Observação: Eth0 que recebe a net ip 192.168.1.1
Eth1 que sai para rede interna 10.2.0.254