Принудительное использование DNS-серверов, предоставляемых VPN, в Ubuntu 18.04

На обычном автономном сервере Ubuntu 18.04 клиент OpenVPN используется для подключения к удаленной сети в режиме подключения. Адрес, шлюз по умолчанию, DNS-серверы и т. Д. Предоставляются DHCP-сервером в удаленной сети.

Однако использование DNS-серверов, предоставляемых VPN, не является обязательным. Поскольку systemd-resolved по умолчанию используется в качестве преобразователя заглушек, это соответствующий вывод systemd-resolve --status :

Global
          DNSSEC NTA: 10.in-addr.arpa
                      16.172.in-addr.arpa
                      168.192.in-addr.arpa
                      17.172.in-addr.arpa
                      18.172.in-addr.arpa
                      19.172.in-addr.arpa
                      20.172.in-addr.arpa
                      21.172.in-addr.arpa
                      22.172.in-addr.arpa
                      23.172.in-addr.arpa
                      24.172.in-addr.arpa
                      25.172.in-addr.arpa
                      26.172.in-addr.arpa
                      27.172.in-addr.arpa
                      28.172.in-addr.arpa
                      29.172.in-addr.arpa
                      30.172.in-addr.arpa
                      31.172.in-addr.arpa
                      corp
                      d.f.ip6.arpa
                      home
                      internal
                      intranet
                      lan
                      local
                      private
                      test

Link 16 (tap1)
      Current Scopes: DNS
       LLMNR setting: yes
MulticastDNS setting: no
      DNSSEC setting: no
    DNSSEC supported: no
         DNS Servers: 10.0.0.2
          DNS Domain: foo.bar

Link 2 (ens192)
      Current Scopes: DNS
       LLMNR setting: yes
MulticastDNS setting: no
      DNSSEC setting: no
    DNSSEC supported: no
         DNS Servers: 192.168.0.1
          DNS Domain: foo2.bar2

Как видите, оба сервера DNS (из локальной сети DHCP и VPN-сеть DHCP).

  • Как я могу узнать, какой DNS-сервер фактически используется systemd-resolved , с помощью утилит командной строки?
  • Как я могу принудительно применить использование DNS-сервера, предоставленного VPN, для всех запросов? Теоретически это должно быть возможно, установив домен DNS на ~. , как указано в документации systemd-resolved . Однако из-за сложных взаимодействий между systemd-resolved , systemd-networkd , netplan и DHCP я не смог изменить этот параметр.
0
задан 6 January 2019 в 17:10
1 ответ

Я нашел решение своего второго вопроса:

  1. Удалите все конфигурации netplan для устройства ответвления, затем запустите netplan apply . Конфигурации Netplan всегда переопределяют пользовательские конфигурации systemd-networkd , но они не предоставляют необходимых нам опций.
  2. Добавьте конфигурацию systemd-networkd , например, в /etc/systemd/network/tap1.network[1150492 provided:

      [Матч]
    Имя = tap1
    
     [Ссылка]
    RequiredForOnline = нет
    
     [Сеть]
    DHCP = ipv4
    LinkLocalAddressing = ipv6
    Домены = ~.
    
     [DHCP]
    UseMTU = true
    RouteMetric = 100
    UseDomains = false
     
  3. Перезапустите сеанс VPN.

Теперь systemd-resolved использует ~. в качестве домена DNS, как и предполагалось. Ключевыми элементами являются [Network] Domains = ~. и [DHCP] UseDomains = false конфигурации systemd-networkd .

0
ответ дан 5 December 2019 в 04:37

Теги

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