OpenVPN: настройки DNS и dnsmasq

Автор: | 02/22/2019
 

В продолжение OpenVPN: настройка OpenVPN Access Server и AWS VPC peering — пример настройки DNS.

UPD: решение, описанное в этом посте — рабочее, но есть более правильный вариант. См пост AWS: VPC peering DNS resolution и настройки DNS для OpenVPN AS.

Дано: домен ci.example.com, который должен резолвиться на публичный IP сервера с Jenkins при подключении напрямую, через Интернет, и на приватный IP — при подключении через VPN-соединение.

Для этого на сервере с OpenVPN устанавливаем dnsmasq:

apt -y install dnsmasq

Создаём файл /etc/dnsmasq.hosts, в котором хардкодим приватные адреса для нужных доменов:

10.0.5.10 ci.example.com
172.31.36.107 nexus-repo.example.com
10.0.3.105 rabbitadmin-production.example.com
10.0.1.6 monitor.example.com

Обновляем /etc/dnsmasq.conf — добавляем addn-hosts:

listen-address=127.0.0.1
listen-address=10.0.10.4
bind-interfaces
log-queries
addn-hosts=/etc/dnsmasq.hosts

Перезапускаем dnsmasq:

root@openvpnas2:~# service dnsmasq restart

Проверяем локально:

root@openvpnas2:~# dig @localhost ci.example.com +short
10.0.5.10

Переходим в админпанель OpenVPN AS, и в VPN Settings включаем Have clients use specific DNS servers:

Где в Primary DNS Server указываем приватный IP хоста с OpenVPN сервером.

Перезапускаем подключение локально:

sudo openvpn --config vpnroot-client.ovpn
...
Fri Feb 22 16:53:58 2019 /usr/bin/ip link set dev tun0 up mtu 1500
Fri Feb 22 16:53:58 2019 /usr/bin/ip addr add dev tun0 172.27.240.25/20 broadcast 172.27.255.255
Fri Feb 22 16:53:58 2019 /etc/openvpn/update-resolv-conf tun0 1500 1553 172.27.240.25 255.255.240.0 init
dhcp-option DNS 10.0.10.4
...

Проверяем локальный resolv.conf на рабочей машине:

cat /etc/resolv.conf
Generated by resolvconf
nameserver 10.0.10.4

Проверяем разрешение имён:

dig ci.example.com +short
10.0.5.10

И любой другой:

dig google.com +short
74.125.193.100
74.125.193.101
74.125.193.102

Готово.