Существует ли способ расположить по приоритетам конкретный сервер DNS только при соединении с VPN (OpenVPN) через Администратора сети или один из его конфигурационных файлов?
У меня есть VPN (192.168.1.*
) Я часто соединяюсь с этим, имеет DNS (192.168.1.53
) настроенный для разрешения имен хостов формы *.internal.example.com
в его сети. Мой локальный маршрутизатор (192.168.0.1
) имеет DD-WRT на нем с установкой DNS Google (это не строго необходимо).
Я заменил systemd /etc/resolv.conf
тупик с символьной ссылкой на /run/systemd/resolve/resolv.conf
так, чтобы имена хостов на самом деле разрешили использование сервера DNS VPN. Вчера это хорошо работало, потому что сервер DNS VPN был наверху списка.
# /etc/resolv.conf -> /run/systemd/resolve/resolv.conf
# This file is managed by man:systemd-resolved(8). Do not edit.
# ...
nameserver 192.168.1.53
nameserver 192.168.0.1
nameserver 8.8.8.8
# Too many DNS servers configured, the following entries may be ignored.
nameserver 8.8.4.4
search Home internal.example.com
Однако, когда я соединился сегодня, записи DNS были переупорядочены.
# /etc/resolv.conf -> /run/systemd/resolve/resolv.conf
# This file is managed by man:systemd-resolved(8). Do not edit.
# ...
nameserver 192.168.0.1
nameserver 8.8.8.8
nameserver 8.8.4.4
# Too many DNS servers configured, the following entries may be ignored.
nameserver 192.168.1.53
search Home internal.example.com
Порядок часто изменяется после перезагрузки. Иногда после повторного соединения к VPN я замечаю изменения порядка (после того, как, испытывая проблему разрешения).
systemd-resolve
работает просто великолепно и может разрешить хосты с помощью надлежащего сервера DNS.
$ systemd-resolve --status --no-pager
Global
DNSSEC NTA: ...
Link 10 (tun0)
Current Scopes: DNS
LLMNR setting: yes
MulticastDNS setting: no
DNSSEC setting: no
DNSSEC supported: no
DNS Servers: 192.168.1.53
DNS Domain: internal.example.com
Link 2 (eno1)
Current Scopes: DNS
LLMNR setting: yes
MulticastDNS setting: no
DNSSEC setting: no
DNSSEC supported: no
DNS Servers: 192.168.0.1
8.8.8.8
8.8.4.4
192.168.1.53
DNS Domain: Home
$ systemd-resolve srv1.internal.example.com
srv1.internal.example.com: 192.168.1.113
-- Information acquired via protocol DNS in 2.1ms.
-- Data is authenticated: no
ping
, nslookup
, и ssh
весь сбой все же.
$ ping srv1.internal.example.com
ping: srv1.internal.example.com: Name or service not known
$ nslookup srv1.internal.example.com
Server: 192.168.0.1
Address: 192.168.0.1#53
** server can't find srv1.internal.example.com: NXDOMAIN
$ ssh srv1.internal.example.com
ssh: Could not resolve hostname srv1.internal.example.com: Name or service not known
Несколько примечаний.
Я соединяюсь с VPN через Администратора сети. У меня есть DNS VPN, вручную указанный на VPN под: IPv4> DNS-серверы.
Я пытался использовать отдельное проводное соединение Ethernet, настроенное с DNS VPN под: IPv4> Другие DNS-серверы.
Поскольку Вы принимаете использование dnsmasq, как насчет этого:
server=/internal.example.com/192.168.1.53
server=8.8.8.8
Это использовало бы 192.168.1.53 для домена "internal.example.com" и 8.8.8.8 для всего остального.
Смотрите на "-S, - локальный, - сервер =" опция на dnsmasq странице справочника.
Обновление: можно также хотеть отключить DHCP, так для предотвращения конфликтов с локальным маршрутизатором. Возможно, слушая только на lo (127.0.0.1) интерфейс.
Благодаря ответу JucaPirama для направления мне было нужно, это - моя заключительная установка с помощью dnsmasq перед systemd-разрешенным.
Отключите systemd-разрешенный тупиковый сервер DNS. В /etc/systemd/resolved.conf
изменение
#DNSStubListener=yes
кому:
DNSStubListener=no
Перезапуск systemd-разрешен.
sudo systemctl restart systemd-resolved
Установка dnsmasq.
sudo apt-get install dnsmasq
Установка dnsmasq. В /etc/dnsmasq.conf
, используйте resolv.conf файл systemd-resolved путем изменения
#resolv-file=/etc/resolv.conf
кому:
resolv-file=/run/systemd/resolve/resolv.conf
Установите сервер DNS VPN для просто его доменов путем добавления
server=/internal.example.com/192.168.1.53
Отключите DHCP для предотвращения любых потенциальных конфликтов путем изменения
#no-dhcp-interface=
кому:
no-dhcp-interface=
Перезапуск dnsmasq.
sudo systemctl restart dnsmasq
Удалить связь /etc/resolv.conf
из конфигурации systemd-resolved.
sudo unlink /etc/resolv.conf
Править /etc/resolv.conf
использовать dnsmasq. Этот шаг не мог бы быть необходим, потому что Администратор сети в какой-то момент переопределил его для указания на 127.0.0.53 так или иначе.
nameserver 127.0.0.53
Можно сделать приоритет DNS с помощью
nmcli -p connection modify MY_VPN_CONNECTION ipv4.dns-priority -42
нашел здесь https://github.com/systemd/systemd/issues/ 6076