Estou tentando configurar o dnsmasq para poder criar nomes de host personalizados em um servidor OpenVPN. Assim, quando uma máquina se conectar, os nomes de host apontarão para recursos localizados no host ou rede OpenVPN.
Por exemplo, o arquivo /etc/hosts no servidor se parece com o seguinte:
db.private.resource 10.8.0.1
app.private.resource 10.8.0.1
Fazer com que o cliente use o túnel para pesquisa de DNS é bastante simples. No arquivo server.conf eu tenho:
push "dhcp-option DNS 10.8.0.1"
E na configuração do cliente eu tenho:
dhcp-option DNS 10.8.0.1
E posso verificar se o cliente está usando OpenVPN como DNS quando conectado executando:
# dnsmasq --no-daemon -q
Na linha de comando, faça ping do cliente para verificar se o cliente está realmente enviando solicitações de pesquisa de DNS para o servidor OpenVPN através do túnel e se o servidor OpenVPN está realmente processando as solicitações.
O problema é que quando tento fazer ping no db.private.resource
host que defini, recebo:
dnsmasq: query[A] db.private.resource from 10.8.0.2
dnsmasq: config db.private.resource is NXDOMAIN
Da saída de dnsmasq. Então, por alguma razão, ele não parece estar retornando os valores que defini em/etc/hosts. E o que me surpreende é que mesmo quando executo o dnsmasq com um parâmetro de endereço adicionado, ainda obtenho o resultado acima.
# 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
Há alguma coisa que parece errada neste resultado?
Responder1
Primeiro instale o dnsmasq:
sudo apt-get update; sudo apt-get install dnsmasq
.
Servidor
No servidor, adicione esta linha a esta linha /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
...
Em seguida, edite o /etc/hosts
arquivo com seus nomes de host. Finalmente, corra sudo /etc/init.d/dnsmasq restart
.
Se não quiser editar /etc/hosts
por algum motivo, você pode criar um novo arquivo em /etc/dnsmasq.conf.d/addresses.conf
e preenchê-lo com seus endereços:
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
Com esse segundo método, você também vai querer correr sudo /etc/init.d/dnsmasq restart
atrás.
Cliente
Os servidores OpenVPN geralmente atribuem a si mesmos os endereços IP 10.8.0.1
ou 10.9.0.1
. Portanto, no cliente, queremos ter certeza de consultar esses servidores de nomes primeiro.
Por enquanto, pelo menos, editei /etc/resolv.conf
no cliente, acrescentei nameserver 10.8.0.1
à primeira linha do arquivo. Então, no cliente, meu resolve.conf completo fica assim:
nameserver 10.8.0.1
nameserver 8.8.8.8
nameserver 8.8.8.8
nameserver 127.0.1.1
Para que essas alterações durem na reinicialização, faça a mesma alteração em /etc/resolvconf/resolv.conf.d/head
.
Também
Lembre-se de executar sudo /etc/init.d/dnsmasq restart
ao adicionar qualquer host no servidor