¿Cómo configurar el cliente para el proxy transparente de calamar?

9

Detalles del servidor

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

Archivo de configuración de Squid

(excluyendo comentarios usando 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

Troncos de calamar

-------------------------------------------------------------
-----------------------------------------------------------
----------------------------------------------------------
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

Reglas de iptables

(utilizando la interfaz única "eth0" por el momento)

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

Configuración del cliente

El problema es que no pude acceder a Internet en mis máquinas cliente con IP de Squid como Gateway y DNS primario, como se muestra a continuación.

En un 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

En un cliente de Windows

ingrese la descripción de la imagen aquí

Cuando cambio el DNS en el cliente Ubuntu a dns-nameservers 192.168.1.1& cliente Windows a la misma ip del enrutador en 192.168.1.1lugar de la calamar ip (192.168.1.3), entonces podría acceder a internet en ambos. Es posible que esta no sea la forma de hacerlo, ya que la página puede representarse directamente desde el enrutador y puede que no sea desde el servidor squid usando caché (por supuesto, pude ver que los registros se generan en /var/log/squid3/cache.log). También noté que mi enrutador parpadeaba para las páginas a las que ya se tenía acceso, esto puede significar que envía la solicitud a través de Internet en lugar de buscarla en el caché de calamar.

Todavía no estoy comprometido. Si todavía pudiera acceder a las páginas visitadas en mis máquinas cliente desde la memoria caché con el Internet apagado, estaría satisfecho.

¿Cuál es el procedimiento para configurar clientes para Squid Transparent Proxy ?, ¿alguien me guía por favor?

Actualización 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

Actualización 2

Está funcionando en la edición anterior Ubuntu 10.04(lucid)con la versión de squid Squid Cache: Version 2.7.STABLE7, y a continuación se muestra el archivo de configuración de squid y pude acceder a Internet en las máquinas del cliente cuando la puerta de enlace y DNS del cliente están configurados en la ip de 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

No estoy seguro de por qué no funciona Ubuntu 14.04con la versión de Squid Squid Cache: Version 3.3.8. Definitivamente, me faltan algunas configuraciones en la nueva versión de calamar o en la nueva destrucción.

usuario53864
fuente
1
Podría estar diciendo lo obvio, pero ¿no es el objetivo de una configuración de proxy transparente que NO configure los clientes?
HBruijn
No, ¡acabo de mencionar las configuraciones del servidor si podría solucionar mejor el problema!
user53864
No entiendo cómo configurar clientes de calamar. No pude acceder a Internet en el cliente cuando uso la IP de Squid (192.168.1.3) como puerta de enlace y servidor DNS principal. ¡Creo que esta es la forma correcta de configurar clientes!
usuario53864
Sin advertencias ni mensajes de error squid3 -k parse, todo está limpio.
user53864
¿Cuál es el resultado de este comando: "iptables -t nat -L -n -v"?
TBI Infotech

Respuestas:

11

No estoy seguro, pero eche un vistazo a esta lista de verificación:

Edite el archivo squid.conf y cambie la siguiente línea para habilitar el modo proxy transparente:

http_port 3128

to

http_port 3128 intercept

reinicio de calamar de servicio recarga de calamar de servicio

Agregue una entrada a la tabla NAT de iptables para el tráfico entrante de reenvío de puertos en la interfaz interna (lado LAN) al servidor Squid en el puerto 3128 (suponiendo que eth0 es la interfaz interna con la dirección 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

Ahora puede ver sus iptables, la tabla de filtros predeterminada y la tabla nat, utilizando los siguientes comandos

iptables -L -t filter

iptables -L -t nat

Ahora puede agregar (agregar) a la tabla de filtros iptable con los siguientes comandos, para aceptar la entrada en el puerto 3128 para Squid

iptables -t filtro -A ENTRADA -p tcp --dport 3128 -j ACEPTAR

Prueba también esto

Necesita tanto un puerto de 'intercepción' como un 'proxy de reenvío' en la configuración, incluso si no usa el proxy de reenvío:

http_port 3129

http_port 3128 intercepción

Nota : La opción "transparente" ha quedado en desuso por la opción "interceptar" desde 2010.

TBI Infotech
fuente
Ya lo cambié a interceptlo sugerido por HBruijn. Las reglas nat de Iptables ya están implementadas y la ENTRADA al servidor proxy no está bloqueada para ningún puerto / fuente, todos los paquetes entrantes están permitidos por ahora.
user53864
¿puede verificar el puerto 3129 en lugar de 3128 como http_port 3129 interceptar?
TBI Infotech
@ user53864 verifica la respuesta actualizada
TBI Infotech
Lo intenté !, sin suerte, el resultado es el mismo. Intenté con el puerto 3129 en el calamar y también reemplacé las reglas de iptables con el nuevo puerto. Todavía no podía acceder a Internet en mis máquinas cliente.
user53864
Después de agregar ambos en squid.conf, ¿qué es el informe de registro de squid? http_port 3129 http_port 3128 intercepción
TBI Infotech
1

De acuerdo con Squid WiKi , tiene una configuración incorrecta en la opción http_port , con Squid 3.1+ y DNAT debería ser en interceptlugar de transparent.

http_port 3128 intercept

Aunque la salida de su registro de Squid parece indicar que los sockets interceptados están activos.

Una segunda cosa es que el servidor Linux necesita permitir el reenvío TCP-IP con sysctl net.ipv4.ip_forward=1

HBruijn
fuente
Cambié la configuración a intercept, el resultado es el mismo que no pude acceder a Internet en clientes con 192.168.1.3puerta de enlace y DNS principal. Sí, el reenvío TCP-IP está habilitado en sysctl.conf.
user53864
En realidad, ¿cuál es la forma correcta de configurar el cliente de calamar? ¿Debería el DNS ser la IP de Squid (192.168.1.3) o la IP del enrutador general (192.168.1.1)?
user53864
La configuración normal es que el enrutador / puerta de enlace predeterminada que recibe un cliente en su solicitud de DHCP tiene una regla de redireccionamiento, que intercepta el tráfico saliente al puerto TCP 80 y redirige esos paquetes al proxy transparente. Allí se procesarán y los resultados se devolverán al cliente. El DNS utilizado no importa.
HBruijn
Por lo tanto, debería funcionar con la configuración de la puerta de enlace en los clientes, todavía no sé por qué no pude acceder a Internet en los clientes.
user53864
¡Actualicé mi publicación!
user53864
1

Error: No forward-proxy ports configure(en /var/log/squid3/cache.log)

Leer Wiki .

En mi experiencia, el proxy transparente necesita un puerto NAT squid.conf(ambos)

 http_port 3128
 http_port 8080 intercept
sebix
fuente
0

Después de agregar "interceptar" a la opción http_port, sigo teniendo problemas en combinación con el modo de redireccionamiento de iptables, si los clientes están configurados para usar un proxy:

"ERROR: no hay puertos de proxy de reenvío configurados". y "ADVERTENCIA: bucle de reenvío detectado para:"

Después de pasar por las declaraciones anteriores, uso esto, como el mejor resultado ahora:

a) use una entrada de doble puerto en squid.conf así:

http_port 8080
http_port 3128 intercept

Esto presentará el puerto 8080 como puerto de reenvío ordinario para la configuración del lado del cliente y le dará un segundo puerto para reenviar el tráfico redirigido.

b) use una regla de iptables como esta:

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

De esta manera, tendrá un puerto proxy clásico (8080) para configurar en sus clientes y un puerto obligatorio para el tráfico no encriptado.

¿Por qué deberías querer hacer esto? Bueno, si no le gusta que el tráfico HTTPS omita el proxy (la necesidad de configurar clientes comunes de todos modos) y si desea admitir, pero no desea (o no puede) configurar, menos dispositivos o programas inteligentes.

BlueStar88
fuente
En Raspbian (y probablemente otros), ese comando de iptables da el error "iptables v1.4.21: no se puede inicializar la tabla iptables` NAT ': la tabla no existe (¿necesita insmod?) Quizás iptables o su núcleo necesitan actualizarse ". Cambiar "-t NAT" a "-t nat" resuelve esto.
glennr
-1

En Ubuntu 14.04 Squid Transparent Proxy Versión: 3.3.8, debe eliminar transparente de la configuración http_port 3128, es decir, simplemente salir

http_port 3128

no

http_port 3128 transparente

por alguna razón no está funcionando ahora.

Geyson Rodriguez
fuente
-2

con :

http_port 3128
http_port 8080 intercept

funciona

(Error: no se configuran puertos de proxy de reenvío en /var/log/squid3/cache.log)

mpman077
fuente