Расположите по приоритетам DNS-сервер VPN

Существует ли способ расположить по приоритетам конкретный сервер 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-серверы.

1
задан 28 February 2019 в 20:58

3 ответа

Поскольку Вы принимаете использование dnsmasq, как насчет этого:

  1. Укажите на свой resolv.conf на 127.0.0.1 (сервер имен 127.0.0.1)
  2. Попробуйте эту конфигурацию на своем 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) интерфейс.

2
ответ дан 3 December 2019 в 07:21

Благодаря ответу 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
1
ответ дан 3 December 2019 в 07:21

Можно сделать приоритет DNS с помощью

nmcli -p connection modify MY_VPN_CONNECTION ipv4.dns-priority -42

нашел здесь https://github.com/systemd/systemd/issues/ 6076

3
ответ дан 22 April 2020 в 13:09

Другие вопросы по тегам:

Похожие вопросы: