Ubuntu 18, VPN и DNS: curl не разрешает VPN-хост, но nslookup и dig могут

я обнаружил, что, по-видимому, в Ubuntu 18 вся настройка DNS очень запутана. Я подключен через pritunl VPN к моему kube-кластеру и пытаюсь использовать сервер kube-dns. Поэтому я сначала попытался использовать https://github.com/jonathanio/update-systemd-resolved для обновления моих настроек DNS с помощью переданного DNS-сервера из VPN, но кажется, что в настоящее время что-то не работает (https://github.com/jonathanio/update-systemd-resolved/issues/64). Поскольку я в порядке с жестким кодированием IP-адреса DNS где-то, я попытался указать IP в некоторых местах: установить resolvconf и поместить его в /etc/resolvconf/resolv.conf.d/head, поместить его в /etc/systemd/resolved.conf, конечно, также пытаясь поместить его прямо в /etc/resolv.conf, так как я наивный человек . После перезапуска некоторых вещей пару раз я достиг еще более запутанного состояния:

% dig pritunl-ui.infra.svc.cluster.local                      
[...]
;; ANSWER SECTION:
pritunl-ui.infra.svc.cluster.local. 30 IN A 10.15.246.61
[...]

Итак, это выглядит хорошо, но:

% curl 'https://pritunl-ui.infra.svc.cluster.local' --insecure
curl: (6) Could not resolve host: pritunl-ui.infra.svc.cluster.local

Однако вызов IP работает:

% curl 'https://10.15.246.61' --insecure
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
<title>Redirecting...</title>
<h1>Redirecting...</h1>
<p>You should be redirected automatically to target URL: <a href="https://10.15.246.61/login">https://10.15.246.61/login</a>.  If not click the link.

Я также попытался выключить и снова включить его (моя хост-машина), но остается прежним. nslookup тоже работает нормально, tracepath нет.

% systemd-resolve --status
Global
         DNS Servers: 10.15.240.10
          DNS Domain: svc.cluster.local
          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 3 (tun0)
      Current Scopes: DNS
       LLMNR setting: yes
MulticastDNS setting: no
      DNSSEC setting: no
    DNSSEC supported: no
         DNS Servers: 10.15.240.10
          DNS Domain: default.svc.cluster.local
                      ~.

Link 2 (wlp2s0)
      Current Scopes: DNS
       LLMNR setting: yes
MulticastDNS setting: no
      DNSSEC setting: no
    DNSSEC supported: no
         DNS Servers: 192.168.178.1
                      fd00::cece:1eff:feba:6468
          DNS Domain: ~.
                      fritz.box

Любые идеи, как заставить это работать?


person leberknecht    schedule 03.06.2019    source источник
comment
этот вопрос не здесь, он принадлежит superuser.com или askubuntu. com (вероятно, последнее)   -  person hanshenrik    schedule 14.06.2019


Ответы (1)


Чтобы ответить на мой собственный вопрос: я копнул немного глубже и немного узнал о avahi, nscd, systemd-resolve и магии nsswitch. Так что, видимо, проблема заключалась в этой строке в моем /etc/nsswitch.conf:

hosts:          files mdns4_minimal [NOTFOUND=return] resolve [!UNAVAIL=return] dns myhostname

Я пропустил этот ридми из update-systemd-resolved, который действительно рекомендовал изменить эту строку. Поэтому я изменил его на

hosts:          files dns resolve myhostname

И вуаля, теперь curl может достучаться до хоста:

$ getent ahosts pritunl-ui.infra.svc.cluster.local
10.15.246.61    STREAM pritunl-ui.infra.svc.cluster.local
10.15.246.61    DGRAM  
10.15.246.61    RAW    

Я также пытался просто удалить часть [NOTFOUND=return], и это, кажется, имеет тот же эффект, это также работает. Может быть, он говорит что-то вроде «если mdns не работает, остановитесь здесь и игнорируйте остальное»..? Что было бы очень странной стратегией, я думаю.

person leberknecht    schedule 13.06.2019