Como usar o dnsmasq para nomes de host personalizados no OpenVPN?

Como usar o dnsmasq para nomes de host personalizados no OpenVPN?

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.resourcehost 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/hostsarquivo com seus nomes de host. Finalmente, corra sudo /etc/init.d/dnsmasq restart.

Se não quiser editar /etc/hostspor algum motivo, você pode criar um novo arquivo em /etc/dnsmasq.conf.d/addresses.confe 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 restartatrás.

Cliente

Os servidores OpenVPN geralmente atribuem a si mesmos os endereços IP 10.8.0.1ou 10.9.0.1. Portanto, no cliente, queremos ter certeza de consultar esses servidores de nomes primeiro.

Por enquanto, pelo menos, editei /etc/resolv.confno 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 restartao adicionar qualquer host no servidor

informação relacionada