Instalar ipkg en Synology ds112plus
La idea es que los clientes de la red salgan a Internet a través del proxy e implementar un sistema de filtrado para bloquear publicidad de terceros, sitios conocidos de malware, spyware, filtrar contenido, etc. Esto último desde el propio squid y utilizando el paquete de listas negras blacklists.
La versión
DSM 4.1 de Synology ya incluye un servidor DNS por lo que sencillamante se instala y ejecuta. Para integrar toda la red puede utilizarse un dominio interno o grupo de trabajo. En este caso linux.bcn. Si se fija en la parte inferior de la imagen verá que pone Report Bugs, esto es porque acabo de actualizar (no es recomendable) a la versión Beta 4.2 del sistema operativo de Synology.
Entramos al nas a través del explorador:
Archivo /etc/hosts
Desde el cliente configurar resolv.conf impedir que el gestor de redes NetworkManager lo modifique al reiniciar y comprobar que el servidor dns funcione. En la primera consulta (Query time) tarda 78 mseg y en la segunda 1 mseg
[carlos@gentoo ~]$ dig @ds112plus google.es
Conectarnos al nas via ssh desde la terminal de Arch linux
Instalar squid utilizando ipkg en mi caso lo había instalado con anterioridad desde un cliente centos 6:
ds112plus> ipkg install squid
Inicializar directorios cahe:
ds112plus> squid -z
Iniciar squid:
ds112plus> /opt/etc/init.dS80squid start
Squid se inicia sin errores. Configurar squid utilizando el archivo de configuración squid.conf que he movido a la carpeta /opt/etc/squid/squid.conf. A continuación el archivo completo construido a partir del archivo de http://wl500g.info y de un pdf encontrado en la red cuya autoría pertenece a Jorge García Delgado con licencia crative commons (adjuntar listas negras a servidor proxy squid).
Comprobado en un nas Synology ds112+.
Descargar listas negras completas desde squidguard, crear carpeta listasnegras y descomprimir blacklists:
ds112plus> wget http://squidguard.mesd.k12.or.us/blacklists.tgz
# configuracion avanzada original mas wl500 url
# http://wl500g.info/showthread.php?17287-NAS-Create-your-own-caching-proxy
cache_mgr foot@gmail.com
visible_hostname fake.domain
cache_replacement_policy lru
# directorio cache 20 Gb
cache_dir ufs /opt/var/squid/cache/ 20000 16 256
minimum_object_size 0 KB
maximum_object_size 2097152 KB
maximum_object_size_in_memory 1024 KB
#
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 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 listanegra1 urlpath_regex "/opt/etc/squid/listasnegras/blacklists/redirector/urls"
acl listanegra2 urlpath_regex "/opt/etc/squid/listasnegras/blacklists/spyware/urls"
acl listanegra3 urlpath_regex "/opt/etc/squid/listasnegras/blacklists/gambling/urls"
acl CONNECT method CONNECT
http_access allow manager localhost
icp_access deny all
http_port 192.168.1.254:3128
http_port 192.168.1.254:8080
hierarchy_stoplist cgi-bin ?
access_log /opt/var/squid/logs/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 . 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
coredump_dir /opt/var/squid/cache
# Leave coredumps in the first cache dir
coredump_dir /opt/var/squid/cache
#
# Disable cachemgr password
cachemgr_passwd none all
#
refresh_pattern \.gif 1440 50% 40320 reload-into-ims
refresh_pattern \.jpg 1440 50% 40320 reload-into-ims
refresh_pattern \.tif 4320 50% 43200
refresh_pattern \.png 1440 50% 40320 reload-into-ims
refresh_pattern \.jpeg 1440 50% 40320 reload-into-ims
refresh_pattern ^http://*.google.*/.* 720 100% 4320
#
# refresh patterns to enable caching of MS windows update
refresh_pattern windowsupdate\.microsoft\.com/.*\.(cab|exe|psf) 4320 100% 120960 reload-into-ims
refresh_pattern update\.microsoft\.com/.*\.(cab|exe|psf) 4320 100% 120960 reload-into-ims
refresh_pattern office\.microsoft\.com/.*\.(cab|exe|psf) 4320 100% 120960
refresh_pattern windowsupdate\.com/.*\.(cab|exe|psf) 4320 100% 120960 reload-into-ims
refresh_pattern download\.microsoft\.com/.*\.(cab|exe|psf) 4320 100% 120960 reload-into-ims
refresh_pattern microsoft\.com 4320 100% 10080
#
# Rendre le proxy indetectable
via off
forwarded_for off # permet de masquer l'ip du client
header_access From deny all
header_access Server deny all
header_access WWW-Authenticate deny all
header_access Link deny all
header_access Cache-Control deny all
header_access Proxy-Connection deny all
header_access X-Cache deny all
header_access X-Cache-Lookup deny all
header_access Via deny all
header_access Forwarded-For deny all
header_access X-Forwarded-For deny all
header_access Pragma deny all
header_access Keep-Alive deny all
#
# limpieza automatica del cache de squid
cache_swap_low 90
cache_swap_high 95
# paginas de error castellano
error_directory /opt/share/squid/errors/Spanish
Comprobar fichero de configuración:
ds112plus> squid -k parse
Si se inicia Squid como root sin establecer cache_effective_user, Squid utiliza nobody
como valor por defecto.
ds112plus> ps | grep squid
9537 root 5032 S /opt/sbin/squid -f /opt/etc/squid/squid.conf
9549 nobody 16484 S (squid) -f /opt/etc/squid/squid.conf
13581 root 3552 S grep squid
Configurar clientes para utilizar proxy:
En Gentoo Linux
export http_proxy=http://192.168.1.254:8080
Arch linux Firefox:
Arch linux Chromium
Arch linux utilizando NetworkManager automático o manual:
Linux es genial!.