Как использовать dnsmasq для пользовательских имен хостов в OpenVPN?

Как использовать dnsmasq для пользовательских имен хостов в OpenVPN?

Я пытаюсь настроить dnsmasq, чтобы я мог создавать пользовательские имена хостов через сервер OpenVPN. Так что когда машина подключается, имена хостов будут указывать на ресурсы, расположенные на хосте или в сети OpenVPN.

Например, файл /etc/hosts на сервере выглядит следующим образом:

db.private.resource 10.8.0.1
app.private.resource 10.8.0.1

Заставить клиента использовать туннель для поиска DNS довольно просто. В файле server.conf у меня есть:

push "dhcp-option DNS 10.8.0.1"

А в конфигурации клиента у меня:

dhcp-option DNS 10.8.0.1

И я могу проверить, что клиент использует OpenVPN в качестве своего DNS при подключении, выполнив:

# dnsmasq --no-daemon -q

В командной строке выполните команду ping с клиента, чтобы убедиться, что клиент действительно отправляет запросы поиска DNS на сервер OpenVPN через туннель и что сервер OpenVPN действительно обрабатывает эти запросы.

Проблема в том, что когда я пытаюсь выполнить ping db.private.resourceна указанный мной хост, я получаю:

dnsmasq: query[A] db.private.resource from 10.8.0.2
dnsmasq: config db.private.resource is NXDOMAIN

Из вывода dnsmasq. Так вот, по какой причине он, похоже, не возвращает значения, которые я определил в /etc/hosts. И что меня удивляет, так это то, что даже когда я запускаю dnsmasq с добавленным параметром адреса, я все равно получаю указанный выше результат.

# 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

Есть ли что-то неправильное в этом результате?

решение1

Сначала установите dnsmasq: sudo apt-get update; sudo apt-get install dnsmasq.

Сервер

На сервере добавьте эту строку в /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
...

Затем отредактируйте /etc/hostsфайл с именами хостов. Наконец, запустите sudo /etc/init.d/dnsmasq restart.

Если по какой-то причине вы не хотите редактировать /etc/hosts, вы можете создать новый файл по адресу /etc/dnsmasq.conf.d/addresses.confи заполнить его своими адресами:

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

При использовании второго метода вам также придется бежать sudo /etc/init.d/dnsmasq restartза ним.

Клиент

Серверы OpenVPN обычно самостоятельно назначают себе IP-адреса 10.8.0.1или 10.9.0.1. Поэтому на клиенте нам нужно сначала запросить эти серверы имен.

На данный момент, по крайней мере, я отредактировал /etc/resolv.confна клиенте, я добавил nameserver 10.8.0.1в начало первой строки файла. Так что на клиенте мой полный resolve.conf выглядит так:

nameserver 10.8.0.1
nameserver 8.8.8.8
nameserver 8.8.8.8
nameserver 127.0.1.1

Чтобы эти изменения сохранились при перезагрузке, внесите те же изменения в /etc/resolvconf/resolv.conf.d/head.

Также

Не забудьте запустить sudo /etc/init.d/dnsmasq restartпри добавлении хостов на сервер

Связанный контент