Como configurar o cliente para o proxy transparente do squid?

8

Detalhes do servidor

Squid Transparent Proxy Version: 3.3.8
OS: Ubuntu Server 14.04
Server IP: 192.168.1.3

Arquivo de configuração do Squid

(excluindo comentários usando o grep)

root@ubuntu:~# grep -v '^$\|^\s*\#' /etc/squid3/squid.conf
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 CONNECT method CONNECT
acl mylocalnetwork src 192.168.1.0/24
http_access deny !Safe_ports
http_access deny CONNECT !SSL_ports
http_access allow localhost manager
http_access allow mylocalnetwork
http_access deny manager
http_access allow localhost
http_access deny all
http_port 3128 transparent
cache_mem 8 MB
maximum_object_size_in_memory 32 KB
memory_replacement_policy heap GDSF
cache_replacement_policy heap LFUDA
cache_dir aufs /opt/squid/cache 10000 14 256
maximum_object_size 128000 KB
cache_swap_low 95
cache_swap_high 99
coredump_dir /var/spool/squid3
refresh_pattern ^ftp:       1440    20% 10080
refresh_pattern ^gopher:    1440    0%  1440
refresh_pattern -i (/cgi-bin/|\?) 0 0%  0
refresh_pattern (Release|Packages(.gz)*)$      0       20%     2880
refresh_pattern -i \.(gif|png|jp?g|ico|bmp|tiff?)$ 10080 95% 43200
refresh_pattern -i \.(rpm|cab|deb|exe|msi|msu|zip|tar|xz|bz|bz2|lzma|gz|tgz|rar|bin|7z|doc?|xls?|ppt?|pdf|nth|psd|sis)$ 10080 90% 43200
refresh_pattern -i \.(avi|iso|wav|mid|mp?|mpeg|mov|3gp|wm?|swf|flv|x-flv|axd)$ 43200 95% 432000
refresh_pattern -i \.(html|htm|css|js)$ 1440 75% 40320
refresh_pattern -i \.index.(html|htm)$ 0 75% 10080
refresh_pattern -i (/cgi-bin/|\?) 0 0% 0
refresh_pattern . 1440 90% 10080
quick_abort_min 0 KB
quick_abort_max 0 KB
quick_abort_pct 100
store_avg_object_size 13 KB
visible_hostname localhost

Logs de lula

-------------------------------------------------------------
-----------------------------------------------------------
----------------------------------------------------------
2014/07/03 22:11:57| ERROR: No forward-proxy ports configured.
2014/07/03 22:11:57| ERROR: No forward-proxy ports configured.
2014/07/03 22:11:57| ERROR: No forward-proxy ports configured.
2014/07/03 22:11:57| ERROR: No forward-proxy ports configured.
2014/07/03 22:11:57| ERROR: No forward-proxy ports configured.
2014/07/03 22:11:57| ERROR: No forward-proxy ports configured.
2014/07/03 22:11:57| ERROR: No forward-proxy ports configured.
2014/07/03 22:11:57| ERROR: No forward-proxy ports configured.
2014/07/03 22:11:57| ERROR: No forward-proxy ports configured.
2014/07/03 22:11:57| ERROR: No forward-proxy ports configured.
2014/07/03 22:11:57| ERROR: No forward-proxy ports configured.
2014/07/03 22:11:57| ERROR: No forward-proxy ports configured.
2014/07/03 22:11:57| Loaded Icons.
2014/07/03 22:11:57| HTCP Disabled.
2014/07/03 22:11:57| Pinger socket opened on FD 13
2014/07/03 22:11:57| Squid plugin modules loaded: 0
2014/07/03 22:11:57| Adaptation support is off.
2014/07/03 22:11:57| Accepting NAT intercepted HTTP Socket connections at local=0.0.0.0:3128 remote=[::] FD 11 flags=41
2014/07/03 22:11:57| Done reading /opt/squid/cache swaplog (2 entries)
2014/07/03 22:11:57| Finished rebuilding storage from disk.
2014/07/03 22:11:57|         2 Entries scanned
2014/07/03 22:11:57|         0 Invalid entries.
2014/07/03 22:11:57|         0 With invalid flags.
2014/07/03 22:11:57|         2 Objects loaded.
2014/07/03 22:11:57|         0 Objects expired.
2014/07/03 22:11:57|         0 Objects cancelled.
2014/07/03 22:11:57|         0 Duplicate URLs purged.
2014/07/03 22:11:57|         0 Swapfile clashes avoided.
2014/07/03 22:11:57|   Took 0.08 seconds ( 24.94 objects/sec).
2014/07/03 22:11:57| Beginning Validation Procedure
2014/07/03 22:11:57|   Completed Validation Procedure
2014/07/03 22:11:57|   Validated 2 Entries
2014/07/03 22:11:57|   store_swap_size = 12.00 KB
2014/07/03 22:11:57| ERROR: No forward-proxy ports configured.
2014/07/03 22:11:57| pinger: Initialising ICMP pinger ...
2014/07/03 22:11:57| pinger: ICMP socket opened.
2014/07/03 22:11:57| pinger: ICMPv6 socket opened
2014/07/03 22:11:57| Pinger exiting.
2014/07/03 22:11:58| storeLateRelease: released 0 objects

Regras do Iptables

(usando a interface única "eth0" por enquanto)

iptables -t nat -A PREROUTING -i eth0 -p tcp -m tcp --dport 80 -j DNAT --to-destination 192.168.1.3:3128
iptables -t nat -A PREROUTING -i eth0 -p tcp -m tcp --dport 80 -j REDIRECT --to-ports 3128
iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -o eth0 -j MASQUERADE

Configuração do cliente

O problema é que eu não consegui acessar a internet nas máquinas dos meus clientes com o IP do Squid como Gateway & DNS primário, como mostrado abaixo.

Em um cliente Ubuntu

auto eth0
iface eth0 inet static
address 192.168.1.10
netmask 255.255.255.0
gateway 192.168.1.3

dns-nameservers 192.168.1.3

Em um cliente Windows

Quando altero o DNS no cliente Ubuntu para dns-nameservers 192.168.1.1 & Cliente Windows para o mesmo ip do roteador 192.168.1.1 ao invés do ip do squid (192.168.1.3), então eu poderia acessar a internet em ambos. Esta pode não ser a maneira de fazer como a página pode ser processada diretamente do roteador e pode não ser do servidor de squid usando o cache (claro que eu pude ver os logs sendo gerados em /var/log/squid3/cache.log). Também notei meu roteador piscando para as páginas que já estão acessadas, isso pode significar que ele envia a solicitação pela Internet em vez de buscar a partir do cache do squid.

Ainda não estou comprometida. Se eu ainda puder acessar as páginas visitadas em minhas máquinas cliente do cache com a internet desligada, ficarei satisfeito.

Qual é o procedimento para configurar clientes para o Squid Transparent Proxy ?, alguém me guia, por favor?

Atualização 1

root@ubuntu:~# iptables -t nat -L -n -v
Chain PREROUTING (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination         
    0     0 DNAT       tcp  --  eth0   *       0.0.0.0/0            0.0.0.0/0            tcp dpt:80 to:192.168.1.3:3128
    0     0 REDIRECT   tcp  --  eth0   *       0.0.0.0/0            0.0.0.0/0            tcp dpt:80 redir ports 3128

Chain INPUT (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination         

Chain OUTPUT (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination         

Chain POSTROUTING (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination         
    0     0 MASQUERADE  all  --  *      eth0    192.168.1.0/24       0.0.0.0/0

Atualização 2

Está funcionando na edição anterior Ubuntu 10.04(lucid) com a versão do squid Squid Cache: Version 2.7.STABLE7 , e abaixo o arquivo de configuração do squid funcionou e eu pude acessar a internet nas máquinas clientes quando o gateway & DNS são configurados para o ip da lucid:

root@lucid:~# grep -v '^$\|^\s*\#' /etc/squid/squid.conf
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 0.0.0.0/32
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 mynet src 192.168.1.0/24    # 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
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
http_access allow localhost
http_access allow mynet
http_access deny all
icp_access allow localnet
icp_access deny all
http_port 3128 transparent
hierarchy_stoplist cgi-bin ?
cache_mem 8 MB
maximum_object_size_in_memory 32 KB
cache_dir ufs /var/spool/squid 2000 16 256
access_log /var/log/squid/access.log squid
refresh_pattern ^ftp:       1440    20% 10080
refresh_pattern ^gopher:    1440    0%  1440
refresh_pattern -i (/cgi-bin/|\?) 0 0%  0
refresh_pattern (Release|Package(.gz)*)$    0   20% 2880
refresh_pattern .       0   20% 4320
acl shoutcast rep_header X-HTTP09-First-Line ^ICY.[0-9]
upgrade_http0.9 deny shoutcast
acl apache rep_header Server ^Apache
broken_vary_encoding allow apache
extension_methods REPORT MERGE MKACTIVITY CHECKOUT
hosts_file /etc/hosts
offline_mode on
coredump_dir /var/spool/squid

Não sei por que não está funcionando em Ubuntu 14.04 com a versão do Squid Squid Cache: Version 3.3.8 . Definitivamente estou perdendo algumas configurações na nova versão do squid ou no novo destro!.

    
por user53864 04.07.2014 / 18:57

6 respostas

10

Não tenho certeza, mas, por favor, dê uma olhada nesta lista de verificação:

Edite o arquivo squid.conf e altere a seguinte linha para ativar o modo de proxy transparente:

http_port 3128

to

http_port 3128 intercept

reiniciar o squid de serviço recarga de squid de serviço

Adicione uma entrada à tabela NAT iptables para encaminhar o tráfego de entrada na interface interna (lado da LAN) para o servidor Squid na porta 3128 (assumindo que eth0 é a interface interna com o endereço IP 192.168.1.3

iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j DNAT --to (cont.) 192.168.1.3:3128

Agora você pode ver seus iptables, a tabela de filtros padrão e a tabela nat, usando os seguintes comandos

iptables -L -t filter

iptables -L -t nat

Agora você pode adicionar (anexar) à tabela de filtros iptable com os seguintes comandos, para aceitar entrada na porta 3128 para o Squid

iptables -t filter -A INPUT -p tcp --dport 3128 -j ACCEPT

Tente também isso

Você precisa de uma porta 'interceptar' e uma 'proxy de encaminhamento' na configuração mesmo que você não use o proxy de encaminhamento:

http_port 3129

http_port 3128 intercept

Observação : a opção "transparente" foi preterida pela opção "interceptar" desde 2010.

    
por 11.07.2014 / 07:44
1

De acordo com o Squid WiKi , você tem a configuração errada na link , com o Squid 3.1+ e o DNAT deve ser intercept em vez de transparent .

http_port 3128 intercept

Embora a saída do seu log do Squid pareça indicar que os sockets interceptados estão ativos.

A segunda coisa é que o servidor Linux precisa permitir o encaminhamento TCP-IP com sysctl net.ipv4.ip_forward=1

    
por 04.07.2014 / 19:10
0

Erro: No forward-proxy ports configure (em /var/log/squid3/cache.log )

Leia Wiki .

Na minha experiência, o proxy transparente precisa da porta NAT em squid.conf (ambos)

 http_port 3128
 http_port 8080 intercept
    
por 10.06.2015 / 19:56
0

Depois de adicionar "interceptar" à opção http_port, ainda tenho problemas em combinação com o modo de redirecionamento do iptables, se os clientes estiverem configurados para usar um proxy:

"ERRO: Nenhuma porta de proxy direto configurada." e "AVISO: loop de encaminhamento detectado para:"

Depois de passar pelas declarações acima eu uso isso como o melhor resultado agora:

a) use uma entrada de porta dupla no squid.conf assim:

http_port 8080
http_port 3128 intercept

Isso apresentará a porta 8080 como porta de encaminhamento comum para a configuração do lado do cliente e fornecerá uma segunda porta para encaminhar o tráfego redirecionado para.

b) use uma regra do iptables como esta:

iptables -A PREROUTING -t NAT -i $LAN_IF -p tcp --dport 80 -j REDIRECT --to-port 3128

Assim, você terá uma porta de proxy clássica (8080) para configurar em seus clientes e uma porta de imposição para tráfego não criptografado.

Por que você deveria querer fazer isso? Bem, se você não gosta de ter o tráfego HTTPS ignorando o proxy (a necessidade de configurar clientes comuns de qualquer maneira) e se você quer apoiar, mas não quer (ou não pode) configurar, menos dispositivos ou programas inteligentes.

    
por 11.07.2015 / 13:48
-1

No Ubuntu 14.04 Squid Versão Proxy Transparente: 3.3.8, você deve remover transparentes da configuração http_port 3128 Quer dizer apenas deixar

http_port 3128

não

http_port 3128 transparent

por algum motivo não está funcionando agora.

    
por 02.10.2014 / 21:35
-2

com:

http_port 3128
http_port 8080 intercept

funciona

(Erro: Nenhuma porta de proxy direto é configurada em /var/log/squid3/cache.log)

    
por 16.06.2015 / 23:14