Descripción general
Internet está lleno de anuncios estos días y el pihole es una forma fantástica de bloquear todos estos anuncios de forma configurable. No todo el mundo tiene una Raspberry Pi de repuesto, pero algunas personas sí tienen un servidor con Docker instalado.
Esta publicación de blog mostrará algunos trucos realmente interesantes utilizando las redes Macvlan de Docker y las redes Linux para crear una instancia pihole conectada a su red local.
El resultado final será un contenedor acoplable pihole que se ejecutará con una IP dedicada, expuesta a su red local. Esto permitirá que todos los clientes lo utilicen como servidor DNS y habilitará bonitos gráficos de uso y desgloses de clientes en su panel de administración de pihole.
Usaremos el siguiente código:
version: '2'
services:
pihole:
container_name: pihole-vlan
image: pihole/pihole:latest # check the latest version on docker hub.
hostname: pihole # set an easy hostname to remember
domainname: exampledomain # your local domain name
mac_address: de:ad:be:ef:ff:01 # can change or leave this
cap_add:
- NET_ADMIN
networks:
macvlan: # same as network specified below
ipv4_address: 192.168.1.3 # the IP of the pihole container
dns:
- 127.0.0.1 # use local DNS, since the pihole
- 1.1.1.1 # optional fallback DNS
ports: # expose all pihole ports.
- 443/tcp
- 53/tcp
- 53/udp
- 67/udp
- 80/tcp
volumes: # mount our data volumes.
- '/Externo/pihole/etc-pihole:/etc/pihole/etc-pihole/:/etc/pihole/'
- '/Externo/pihole/etc-pihole:/etc/pihole/etc-dnsmasq.d/:/etc/dnsmasq.d/'
- '/Externo/pihole/etc-pihole:/etc/pihole/backups/:/backups/' # backups explained later
environment: # set variables for pihole configuration.
ServerIP: 192.168.1.3 # must match ipv4_address above
VIRTUAL_HOST: pihole.exampledomain # Must be hostname + domainname from above
WEBPASSWORD: "SirGamba"
TZ: 'Europe/Madrid' # pick your timezone
restart: unless-stopped
networks:
macvlan: # externally created network (later in article)
external: true
Explicación de algunas líneas del archivo acoplable:
- Configuramos el
container_name
,image
yhostname
como de costumbre. - Tenemos que especificar una dirección mac para que los enlaces de red funcionen correctamente más adelante.
- Agregamos la
NET_ADMIN
capacidad que permite la modificación de interfaces de red en el sistema host. - configuramos una estática
ipv4_address
en nuestramacvlan0
red (usada más adelante): esta es la dirección que será su DNS local para toda su red - Configuramos manualmente DNS en el contenedor de host en localhost, para que utilice el solucionador pihole
- Exponemos todos los puertos pihole.
- Establecemos algunas variables de entorno obligatorias. IMPORTANTE: asegúrese de que la
ServerIP
variable coincida con la dirección IP estática que eligió anteriormente.
Nota: también notarás que hacemos referencia a una red externa llamada macvlan0
, en lugar de incluir una sección como esta que define una red en el archivo docker-compose:
networks:
pihole_network:
driver: macvlan
driver_opts:
parent: eth0
ipam:
config:
- subnet: 10.0.37.9/24
gateway: 10.0.37.1
ip_range: 10.0.37.59/28
Esta sería una solución decente si solo usa un contenedor, pero para un mejor mantenimiento se recomienda crear la red macvlan externamente y simplemente conectar el contenedor configurando
networks:
macvlan0:
external: true
Esto asegurará que su red no desaparezca cuando ejecute un archivo docker-compose down
, ya que eso interrumpiría los scripts de inicio definidos a continuación.
Crear la red macvlan
Como se mencionó anteriormente, queremos crear la red acoplable manualmente:
docker network create -d macvlan \
--subnet=10.0.37.9/24 --gateway=10.0.37.1 \
--ip-range 10.0.37.59/28 \
-o parent=eth0 \
--aux-address="myserver=10.0.37.60" \
macvlan0
Aquí hay una explicación de las banderas :
-d
establece eldriver
, que en este caso es macvlan--subnet
dirección de su subred local. Tome la IP de su servidor y agregue la/24
bandera para que el rango se establezca de.1
a.254
--gateway
es la IP de su enrutador local, para que el contenedor acoplable pueda marcar a Internet-o
establece opciones específicas del controlador. En este caso, le informamos almacvlan
conductor que utilice laeth0
interfaz principal. Esto debe configurarse en la misma interfaz física que utiliza su servidor para la IP física.--aux-address
define una dirección reservada en esta nueva red. Esto garantiza que a ningún contenedor acoplable se le asigne esta IP, ya que provocaría una colisión de red. Debe elegir una dirección que esté dentro del rango de IP de macvlan.--ip-range
es el comando más importante aquí. Consulte a continuación una explicación sobre cómo configurar esto.
Nota: el rango de ip debe ser:
- Una subsección de su red local principal (es decir, dentro de la subred). En este caso, el rango de IP es
10.0.37.59/28
, que se expande a10.0.37.49
:10.0.37.62
- Debería
--aux-address
estar presente dentro del rango de IP, por lo que en este caso elegimos10.0.37.60
Set up a PiHole using Docker MacVlan Networks — Blog :: Ivan Smirnov
Deja una respuesta