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

Автор: | 22/02/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:

[simterm]

# apt -y install dnsmasq

[/simterm]

Создаём файл /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:

[simterm]

root@openvpnas2:~# service dnsmasq restart

[/simterm]

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

[simterm]

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

[/simterm]

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

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

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

[simterm]

$ 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
...

[/simterm]

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

[simterm]

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

[/simterm]

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

[simterm]

$ dig ci.example.com +short
10.0.5.10

[/simterm]

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

[simterm]

$ dig google.com +short
74.125.193.100
74.125.193.101
74.125.193.102

[/simterm]

Готово.