Estoy intentando configurar dnsmasq para poder crear nombres de host personalizados en un servidor OpenVPN. De modo que cuando una máquina se conecte, los nombres de host apuntarán a los recursos ubicados en el host o la red OpenVPN.
Entonces, por ejemplo, el archivo /etc/hosts en el servidor se parece a lo siguiente:
db.private.resource 10.8.0.1
app.private.resource 10.8.0.1
Conseguir que el cliente utilice el túnel para la búsqueda de DNS es bastante sencillo. En el archivo server.conf tengo:
push "dhcp-option DNS 10.8.0.1"
Y en la configuración del cliente tengo:
dhcp-option DNS 10.8.0.1
Y puedo verificar que el cliente esté usando OpenVPN como su DNS cuando esté conectado ejecutando:
# dnsmasq --no-daemon -q
En la línea de comando, haga ping desde el cliente para verificar que el cliente efectivamente esté enviando solicitudes de búsqueda de DNS al servidor OpenVPN a través del túnel, y que el servidor OpenVPN efectivamente esté manejando las solicitudes.
El problema es que cuando intento hacer ping al db.private.resource
host que definí, aparece:
dnsmasq: query[A] db.private.resource from 10.8.0.2
dnsmasq: config db.private.resource is NXDOMAIN
Desde la salida de dnsmasq. Entonces, por alguna razón, no parece devolver los valores que definí en /etc/hosts. Y lo que me sorprende es que incluso cuando ejecuto dnsmasq con un parámetro de dirección agregado, sigo obteniendo el resultado anterior.
# dnsmasq --no-daemon -q --address=/db.private.resource/10.8.0.1/
dnsmasq: query[A] db.private.resource from 10.8.0.2
dnsmasq: config db.private.resource is NXDOMAIN
¿Hay algo que parezca incorrecto en este resultado?
Respuesta1
Primero instale dnsmasq:
sudo apt-get update; sudo apt-get install dnsmasq
.
Servidor
En el servidor, agregue esta línea a /etc/dnsmasq.conf
:
...
expand-hosts #Uses /etc/hosts on this machine for resolution
bind-interfaces #will bind on all available interfaces, including the openvpn one
listen-address=10.8.0.1 # i noticed recently that i also need to add this line, because by default it will only listen on 10.9.0.1 which isnt pushed to my clients
...
Luego, edite el /etc/hosts
archivo con sus nombres de host. Finalmente, corre sudo /etc/init.d/dnsmasq restart
.
Si no desea editar /etc/hosts
por algún motivo, puede crear un nuevo archivo en /etc/dnsmasq.conf.d/addresses.conf
y completarlo con sus direcciones:
address=/umomma.com/69.69.69.69
address=/oo.umomma.com/69.69.69.60
address=/ooooo.umomma.com/69.69.69.62
address=/ooooooooo.umomma.com/69.69.69.65
Con este segundo método, también querrás ejecutarlo sudo /etc/init.d/dnsmasq restart
después.
Cliente
Los servidores OpenVPN normalmente se autoasignan las direcciones IP 10.8.0.1
o 10.9.0.1
. Entonces, en el cliente, queremos asegurarnos de consultar esos servidores de nombres primero.
Por ahora, al menos, edité /etc/resolv.conf
en el cliente, antepuse nameserver 10.8.0.1
a la primera línea del archivo. Entonces, en el cliente, mi resolve.conf completo se ve así:
nameserver 10.8.0.1
nameserver 8.8.8.8
nameserver 8.8.8.8
nameserver 127.0.1.1
Para que estos cambios duren al reiniciar, realice el mismo cambio en /etc/resolvconf/resolv.conf.d/head
.
También
Recuerde ejecutar sudo /etc/init.d/dnsmasq restart
cuando agregue hosts en el servidor