Me encanta blocky porque es un servidor DNS que me permite bloquear toda la publicidad de un modo fácil y liviano en mi red local.
Wireguard es la mejor solución como VPN y SOCKS5 como servidor proxy para la navegación remota desde mi navegador, pero…. Que lástima no poder hacer las peticiones DNS de SOCKS5 y Wireguard a Blocky…. ¿Sería posible?…
Si que es posible y te voy a explicar como.
Para que funcione blocky, es necesario primero crear el archivo config.yml.
Esta es una plantilla muy básica del archivo de configuración:
upstream:
default:
- tcp-tls:1.1.1.1 # cloudflare TLS
blocking:
blackLists:
ads:
- blacklists/blacklist.txt
- https://raw.githubusercontent.com/StevenBlack/hosts/master/hosts
- https://adaway.org/hosts.txt
whiteLists:
ads:
- whitelist.txt
clientGroupsBlock:
default:
- ads
port: 53
httpPort: 4000
En el apartado ads, puedes agregar más listas para filtrar publicidad o el acceso a determinados servidores.
Este sería el docker compose. Está compuesto de los 3 servicios en un único docker-compose.yml
El secreto para que todo funcione, es crear una red ( 172.21.0.0/24
) y otorgar a cada servicio (docker) una IP fija. De este modo, al tener blocky una IP fija, desde los otros servicios podemos especificar que las peticiones DNS las haga a la IP de blocky.
En este ejemplo blocky tiene la IP 172.21.0.7
:
SOCKS5 tiene la IP 172.21.0.8
y hace las peticiones DNS a la IP 172.21.0.7
, que es la IP de blocky.
Si no utilizáramos blocky y quisieras hacer las peticiones DNS a un servidor que ya te filtra la publicidad como AdguardHome, sería tan sencillo como añadir la ruta del servidor DNS.
Wireguard tiene la IP 172.21.0.9
y hace las peticiones DNS a blocky a su IP 172.21.0.7
.
version: '3.7'
services:
blocky:
image: spx01/blocky
container_name: blocky
restart: unless-stopped
ports:
- "53:53/tcp"
- "53:53/udp"
- "4000:4000/tcp" # Prometheus stats (if enabled).
environment:
- TZ=Europe/Madrid
expose:
- "53"
volumes:
# config file
- ./config.yml:/app/config.yml
# write query logs in this directory. You can also use a volume
# put your custom white and blacklists in these directories
- ./blacklists:/app/blacklists
- ./whitelists:/app/whitelists/
# write query logs in this volume
- ./logs:/logs
cap_add:
- NET_ADMIN
restart: unless-stopped
networks:
containers:
ipv4_address: 172.21.0.7
socks5:
image: serjs/go-socks5-proxy
container_name: socks5
environment:
- PROXY_USER=usuario
- PROXY_PASSWORD=contraseña
restart: always
ports:
- 1080:1080
dns:
- 172.21.0.7
networks:
containers:
ipv4_address: 172.21.0.8
wg-easy:
environment:
# ⚠️ Required:
# Change this to your host's public address
- WG_HOST=midominio.duckdns.org
# Optional:
- PASSWORD=contraseña
- WG_PORT=51800
# - WG_DEFAULT_ADDRESS=10.8.0.x
- WG_DEFAULT_DNS=1.1.1.1
image: weejewel/wg-easy
container_name: wg-easy
restart: unless-stopped
volumes:
- .:/etc/wireguard
ports:
- "55000:51820/udp"
- "85:51821/tcp"
restart: unless-stopped
cap_add:
- NET_ADMIN
- SYS_MODULE
sysctls:
- net.ipv4.conf.all.src_valid_mark=1
- net.ipv4.ip_forward=1
dns:
- 172.21.0.7
networks:
containers:
ipv4_address: 172.21.0.9
networks:
containers:
ipam:
config:
- subnet: 172.21.0.0/24
Buenísimo el poder navegar desde tu PC o móvil filtrando la publicidad gracias a estos tres servicios.
Ahora puedes sacarle más partido a blocky, porque no solo filtra la publicidad en tu red local, sino que también fuera de ella.
Publicado por Angel el Monday 04 July del 2022
También te puede interesar:
Powered by org-bash-blog
Written in OrgMode with Emacs and converted to HTML with Pandoc
Este obra está bajo una licencia de Creative Commons Reconocimiento-NoComercial-CompartirIgual 4.0 Internacional.