Proxy Transparente Ubuntu [RESOLVIDO]

1. Proxy Transparente Ubuntu [RESOLVIDO]

diogo soares
diogo soares

(usa Linux Mint)

Enviado em 27/02/2009 - 09:49h

Galera estou configuranco o squid, fiz varios testes com bloqueios de palavras na URL e está tudo funcionando porém tiver que colocar no browser o ip:3128.
Caso eu tire do browser as configuracoes do proxy ja nao bloqueia mais nada fica tudo liberado, dei varias catadas no google a respeito desse assunto e vi que tem que deixar o proxy transparente porém todas minhas tentativas foram negadas.

O que devo fazer para resolver esse assunto? como deixar o proxy transparente para o squid?

Obs.: Estou usando o UBUNTU 8.10 e o squid 2.7


  


2. MELHOR RESPOSTA

Richard Andrade
richardandrade

(usa Debian)

Enviado em 27/02/2009 - 10:10h

Amigo para colocar proxy transparente edite o squid.conf e adicione na opção http_port :

http_port 3128 transparent

reincie ou force o squid a ler seus arquivos de configurações

#/etc/init.d/squid restart
ou
#invoke.rc-d squid restart
ou
#invoke.rc-d squid force-reload
entre outros

agora você precisará de fazer uma regra de iptables redirecionando todo acesso pela porta 80 para a porta 3128

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

lembrando que essa regra acima irá servir caso o seu firewall seja o servidor proxy também caso você tenha um servidor proxy a parte segue a regra abaixo:

#iptables -t nat -A PREROUTING -p tcp --dport 80 -j DNAT --to-destinaion ip:3128

valeu e abraço.

3. Re: Proxy Transparente Ubuntu [RESOLVIDO]

Julian Castaman
maninhx

(usa Slackware)

Enviado em 27/02/2009 - 10:12h

seu squid.conf te a linha abaixo?

http_port 3128 transparent


vo direcionou a porta 80 para a porta 3128?



4. Re: Proxy Transparente Ubuntu [RESOLVIDO]

diogo soares
diogo soares

(usa Linux Mint)

Enviado em 27/02/2009 - 10:21h

richardandrade,

exatamente o que vc falou foi o que eu fiz!!!

apos iniciar meu squid rodei essa linha

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

porém vc disse que "lembrando que essa regra acima irá servir caso o seu firewall seja o servidor proxy", e eu não sei se meu firewall esta como servidor de proxy, como posso verificar isso e caso nao esteja como faco para configurar?

Desde ja agradeco pela forca(y)



5. Re: Proxy Transparente Ubuntu [RESOLVIDO]

Richard Andrade
richardandrade

(usa Debian)

Enviado em 27/02/2009 - 10:36h

então diogo, você não configura o navegador na mão? quando você configurava você coloca o mesmo endereço de ip que o gateway? se for, o seu firewall é o próprio servidor proxy também... mas caso você configurasse com um outro endereço de IP ai você teria um servidor proxy a parte, logo você teria que seguir a última regra de iptables que eu coloquei na resposta acima.

valeu e abraço.


6. Re: Proxy Transparente Ubuntu [RESOLVIDO]

diogo soares
diogo soares

(usa Linux Mint)

Enviado em 27/02/2009 - 12:59h

Bom vou explicar detalhadamente como estou fazendo:

Estou fazendo alguns testes no meu notebook mais para aprendizado mesmo e quero bloquear urls digitadas no browser, instalei o squid fiz as configuraçoes no arquivo squid.conf fui no gerenciador de proxy da rede no ubuntu e coloquei um ip 127.0.0.1 : 3128 depois fui nas configuracoes de proxy do firefox e coloquei tbm o ip 127.0.0.1 : 3128 dei um squid -z, blz tudo funcionou bloqueou as palavras, porém tirei o proxy do firefox ai ele nao bloqueia mais as palavras, tem como deixar o proxy transparente para maquina local?

meu squid é esse



#Recommended minimum configuration:
acl all src all
acl manager proto cache_object
acl localhost src 127.0.0.1/32
acl to_localhost dst 127.0.0.0/8

# should be allowed
acl localnet src 10.0.0.0/8 # RFC1918 possible internal network
acl localnet src 172.16.0.0/12 # RFC1918 possible internal network
acl localnet src 192.168.0.0/16 # RFC1918 possible internal network

#
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 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 631 # cups
acl Safe_ports port 873 # rsync
acl Safe_ports port 901 # SWAT
acl purge method PURGE
acl CONNECT method CONNECT

# TAG: http_access

acl sites url_regex -i "/etc/squid/bloqueados/block.txt"
http_access deny sites all
http_access allow all
#http_access deny all

http_access deny CONNECT !SSL_ports

#http_access allow localnet
http_access allow localhost

# And finally deny all other access to this proxy
http_access deny all

#Allow ICP queries from local networks only
icp_access allow localnet
icp_access deny all


# Squid normally listens to port 3128
http_port 3128 transparent


#We recommend you to use at least the following line.
hierarchy_stoplist cgi-bin ?



#Default:
cache_mem 8 MB


# err, warning, notice, info, debug.
access_log /var/log/squid/access.log squid


#Suggested default:
refresh_pattern ^ftp: 1440 20% 10080
refresh_pattern ^gopher: 1440 0% 1440
refresh_pattern -i (/cgi-bin/|\?) 0 0% 0
refresh_pattern . 0 20% 4320


# Apache to signal ETag correctly on such responses
acl apache rep_header Server ^Apache
broken_vary_encoding allow apache


# You can add up to 20 additional "extension" methods here.
extension_methods REPORT MERGE MKACTIVITY CHECKOUT


visible_hostname ubuntu
#Default:
# none


#Default:
# hosts_file /etc/hosts
#
hosts_file /etc/hosts




7. Re: Proxy Transparente Ubuntu [RESOLVIDO]

Richard Andrade
richardandrade

(usa Debian)

Enviado em 27/02/2009 - 13:03h

tem sim amigo. segue a regra de iptables para proxy transparente local.

#iptables -t nat -A OUTPUT -p tcp --dport 80 -j REDIRECT --to-port 3128

valeu e abraço.


8. Re: Proxy Transparente Ubuntu [RESOLVIDO]

Jucinaldo Braga Barbosa
jucinaldo

(usa Debian)

Enviado em 27/02/2009 - 13:15h

Se vc pois no squid.conf "http_port 3128 transparet"e sua questão provavelmente esta no firewall, segue o a linha pra iptables que tem que ser posto
"iptables -t nat -A PREROUTING -s 172.18.27.0/255.255.255.0 -p tcp --dport 80 -j REDIRECT --to-port 3128 "


9. Re: Proxy Transparente Ubuntu [RESOLVIDO]

Richard Andrade
richardandrade

(usa Debian)

Enviado em 27/02/2009 - 13:17h

jucinaldo... essa regra é pacotes destinados ao firewall... não pacotes de origem o firewall.

valeu e abraço.


10. Re: Proxy Transparente Ubuntu [RESOLVIDO]

Elgio Schlemer
elgio

(usa OpenSuSE)

Enviado em 27/02/2009 - 13:21h

ruchardandrade: perfeito. Tuas respostas foram ótimas e assino embaixo.

Exceto esta última do desvio local!

Se o proxy está nesta máquina e queres desviar conexões da porta 80 para 3128 a tua regra iptables:

iptables -t nat -A OUTPUT -p tcp --dport 80 -j REDIRECT --to-port 3128

irá gerar um looping de roteamento!

Tu, no teu navegador local, acessa um site. O iptables desvia LOCALMENTE para a porta 3128. O squid atende. Por sua vez o squid irá buscar a requisição via porta 80 e irá, ugualmente, cair na mesma regra iptables.

Captou?

Se o redir for para outro IP, tudo bem:
#iptables -t nat -A OUTPUT -p tcp --dport 80 -j DNAT --to OUTRO_IP:3128

Mas para ele mesmo cai neste problema.

Para sair desta situação, muito embora seja estranha (porque alguém iria navegar com proxy no servidor de proxy?) só mesmo usando owner, não capturando os pacotes gerados pelo usuário do squid. A diretiva owner do iptables só pode ser usada localmente pois o identificador do usuário não viaja junto com os pacotes!

Exemplo: (supondo que o owner que roda o squid seja proxy, com o UID sendo 13, fato comum no Ubuntu)

# deixa sairem conexoes na porta 80 originadas pelo squid
iptables -t nat -A OUTPUT -m owner --uid 13 -p tcp --dport 80 -j ACCEPT

# captura as demais
iptables -t nat -A OUTPUT -p tcp --dport 80 -j REDIRECT --to-port 3128

(este tópico já fugiu muito do esperado pelo seu autor)


11. Re: Proxy Transparente Ubuntu [RESOLVIDO]

Richard Andrade
richardandrade

(usa Debian)

Enviado em 27/02/2009 - 13:28h

perfeito elgio mais uma coisa que aprendo com você... agradeço. você é fera...


12. Como diria Jack: vamos por partes

Elgio Schlemer
elgio

(usa OpenSuSE)

Enviado em 27/02/2009 - 13:32h

Calma ai. Erros de interpretação são problemáticos.

A PRIMEIRA resposta do Richard me parece a mais correta, dependendo do cenário que nosso amigo diogo não conseguiu explicar direito.
(a tua sugestão, lucinaldo, funciona se a rede de origem for realmente 172.18.27.0/24 e se firewall e proxy forem a mesma máquina)

Diogo: voltemos a sugestão do Richard (post numero 2).

Perguntas;
a) qual é o IP do teu gateway/firewall/
b) qual é o IP que tu estavas colocando na configuração do navegador quando usavas proxy?

A e B são o mesmo IP?
Então a primeira regra do post 2 do Richard é PERFEITO:

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

A e B são Ips diferentes?
Então insere a regra 2 do Richard no firewall:

iptables -t nat -A PREROUTING -p tcp --dport 80 -j DNAT --to-destinaion ipProxy:3128

Agora se proxy e clientes estiverem NA MESMA REDE, ou seja, clientes e o proxy são máquinas VIZINHAS, cuja comunicação não passa pelo gateway, ai NÃO VAI FUNCIONAR, exceto com o uso de gambiarras muito mais esdrúluxas.

Exemplo hipotético:

Clientes: 10.1.0.0/16
Gw: 10.1.0.1
Proxy: 10.1.0.1
OK. Caso A e não terias problemas

Clientes: 10.1.0.0/16
Gw: 10.1.0.1
Proxy: 172.16.0.1
OK. Caso B, com a segunda regra e não terias problemas

Clientes: 10.1.0.0/16
Gw: 10.1.0.1
Proxy: 10.1.0.5
DANÇOU! Não rola de maneira fácil. Ai exige um pouco mais de Harry Potter.




01 02



Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts