TL; DR
Ich habe eine seltsame Situation, in der ich DNS-Lookups auf einigen Hosts durchführen kann, auf anderen jedoch nicht. Dies scheint damit zu tun zu haben, dass resolv.conf einen Nameserver-Eintrag hat, der auf meinen Nameserver verweist, und einen anderen, der vermutlich mit Docker zu tun hat, aber ich bin nicht sicher, wie ich das beheben soll.
Das Problem
Ich habe Stéphane Grabers hervorragende Einführung in LXD gelesen und wollte es ausprobieren. Deshalb habe ich:
$ sudo usermod -a -G lxd <myusername>
$ newgrp lxd
$ sudo lxd init
Ich habe es mit allen Standardeinstellungen konfiguriert. Ich tippte dann:
$ lxc image list images:
error: Get https://images.linuxcontainers.org/streams/v1/index.json: lookup images.linuxcontainers.org: no such host
Einige Tests
Ich habe versucht, über einen Webbrowser auf einem anderen PC auf diese Adresse zuzugreifen, und es hat einwandfrei funktioniert. Also dachte ich, dass etwas mit der DNS-Einrichtung nicht stimmt, aber:
$ host images.linuxcontainers.org
images.linuxcontainers.org is an alias for canonical.images.linuxcontainers.org.
canonical.images.linuxcontainers.org has address 91.189.91.21
canonical.images.linuxcontainers.org has address 91.189.88.37
canonical.images.linuxcontainers.org has IPv6 address 2001:67c:1560:8001::21
canonical.images.linuxcontainers.org has IPv6 address 2001:67c:1562::41
Also habe ich wget versucht:
$ wget https://images.linuxcontainers.org/streams/v1/index.json
--2016-11-10 15:56:22-- https://images.linuxcontainers.org/streams/v1/index.json
Resolving images.linuxcontainers.org (images.linuxcontainers.org)... failed: Name or service not known.
wget: unable to resolve host address "images.linuxcontainers.org"
was mich denken ließ, dass es ein Problem mit meiner Internetverbindung gab, aber wenn ich us.images.linuxcontainers.org benutze (was ich irgendwo im Web erwähnt habe):
$ wget https://us.images.linuxcontainers.org/streams/v1/index.json
--2016-11-10 15:57:26-- https://us.images.linuxcontainers.org/streams/v1/index.json
Resolving us.images.linuxcontainers.org (us.images.linuxcontainers.org)... 91.189.91.21, 2001:67c:1562::41
Connecting to us.images.linuxcontainers.org (us.images.linuxcontainers.org)|91.189.91.21|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 3086 (3.0K) [application/json]
Saving to: "index.json"
index.json 100%[==================================================================================>] 3.01K --.-KB/s in 0s
2016-11-10 15:57:26 (8.36 MB/s) - "index.json" saved [3086/3086]
Ich habe auch canonical.images.linuxcontainers.org ausprobiert, was (laut host
oben) der Alias von images.linuxcontainers.org ist und das auch funktioniert hat. Es sieht also so aus, als ob host
images.linuxcontainers.org nachgeschlagen werden kann, während wget
und lxc
nicht, aber wget
kann auf canonical.images.linuxcontainers.org und die meisten anderen Websites zugreifen, die ich ausprobiert habe.
$ wget https://canonical.images.linuxcontainers.org/streams/v1/index.json
--2016-11-10 16:02:28-- https://canonical.images.linuxcontainers.org/streams/v1/index.json
Resolving canonical.images.linuxcontainers.org (canonical.images.linuxcontainers.org)... 91.189.91.21, 91.189.88.37
Connecting to canonical.images.linuxcontainers.org (canonical.images.linuxcontainers.org)|91.189.91.21|:443... connected.
ERROR: no certificate subject alternative name matches
requested host name "canonical.images.linuxcontainers.org".
To connect to canonical.images.linuxcontainers.org insecurely, use `--no-check-certificate'.
$ wget --no-check-certificate https://canonical.images.linuxcontainers.org/streams/v1/index.json
--2016-11-10 16:02:37-- https://canonical.images.linuxcontainers.org/streams/v1/index.json
Resolving canonical.images.linuxcontainers.org (canonical.images.linuxcontainers.org)... 91.189.88.37, 91.189.91.21
Connecting to canonical.images.linuxcontainers.org (canonical.images.linuxcontainers.org)|91.189.88.37|:443... connected.
WARNING: no certificate subject alternative name matches
requested host name "canonical.images.linuxcontainers.org".
HTTP request sent, awaiting response... 301 Moved Permanently
Location: https://uk.images.linuxcontainers.org/streams/v1/index.json [following]
--2016-11-10 16:02:37-- https://uk.images.linuxcontainers.org/streams/v1/index.json
Resolving uk.images.linuxcontainers.org (uk.images.linuxcontainers.org)... 91.189.88.37, 2001:67c:1560:8001::21
Connecting to uk.images.linuxcontainers.org (uk.images.linuxcontainers.org)|91.189.88.37|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 3086 (3.0K) [application/json]
Saving to: "index.json.1"
index.json.1 100%[==================================================================================>] 3.01K --.-KB/s in 0s
2016-11-10 16:02:38 (96.5 MB/s) - "index.json.1" saved [3086/3086]
Ich habe auch versucht wget -4
und wget -6
waren, IPv6 Probleme auszuschließen, aber die Ergebnisse des gleichen oder so. Schließlich habe ich einige andere Programme ausprobiert, w3m
aber auch dort keinen Unterschied.
Mir fehlt offensichtlich etwas; Kann mir jemand einen Rat geben, warum ich die Bilderliste nicht lxc
herunterladen kann?
Der PC
Der PC ist eine relativ neue Installation unter Ubuntu Server 16.10 mit sehr wenigen zusätzlichen Paketen, die auf dem Haupthost installiert sind. Docker ist installiert und läuft, aber es sind keine Container aktiv. Interessanterweise habe ich kürzlich einen Neustart in Kernel 4.8.6 durchgeführt, um ein anderes Problem zu testen. Mit diesem Kernel konnte ich auf images.linuxcontainers.org zugreifen, aber Docker wurde nicht gestartet, sodass ich mich frage, ob dies möglicherweise mit Docker zu tun hat .
Aufbau
/etc/resolv.conf
sieht so aus (aber aus irgendeinem Grund, den ich nicht kenne, ist eigentlich ein Symlink zu /run/resolvconf/resolv.conf
):
# Dynamic resolv.conf(5) file for glibc resolver(3) generated by resolvconf(8)
# DO NOT EDIT THIS FILE BY HAND -- YOUR CHANGES WILL BE OVERWRITTEN
nameserver 192.168.1.254
nameserver 127.0.0.53
search lan
Wenn ich den ersten aufgelisteten Nameserver abfrage, erhalte ich das gleiche Ergebnis, als würde ich die Nameserver-Adresse nicht anhängen:
$ host images.linuxcontainers.org 192.168.1.254
images.linuxcontainers.org is an alias for canonical.images.linuxcontainers.org.
canonical.images.linuxcontainers.org has address 91.189.91.21
canonical.images.linuxcontainers.org has address 91.189.88.37
canonical.images.linuxcontainers.org has IPv6 address 2001:67c:1560:8001::21
canonical.images.linuxcontainers.org has IPv6 address 2001:67c:1562::41
Wenn ich die zweite abfrage, tritt eine Zeitüberschreitung auf, ohne einen Server zu erreichen:
$ host images.linuxcontainers.org 127.0.0.53
;; connection timed out; no servers could be reached
Wenn ich den zweiten abfrage, aber den kanonischen Namen verwende, funktioniert er und tritt dann eine Zeitüberschreitung auf ???
$ host canonical.images.linuxcontainers.org 127.0.0.53
Using domain server:
Name: 127.0.0.53
Address: 127.0.0.53#53
Aliases:
canonical.images.linuxcontainers.org has address 91.189.88.37
canonical.images.linuxcontainers.org has address 91.189.91.21
;; connection timed out; no servers could be reached
;; connection timed out; no servers could be reached
Bearbeiten 1:
/etc/nsswitch.conf
sieht aus wie das:
# /etc/nsswitch.conf
#
# Example configuration of GNU Name Service Switch functionality.
# If you have the `glibc-doc-reference' and `info' packages installed, try:
# `info libc "Name Service Switch"' for information about this file.
passwd: compat
group: compat
shadow: compat
gshadow: files
hosts: files resolve [!UNAVAIL=return] dns
networks: files
protocols: db files
services: db files
ethers: db files
rpc: db files
netgroup: nis
Bearbeiten 2
Die modifizierte nsswitch.conf sieht nun folgendermaßen aus:
# /etc/nsswitch.conf
#
# Example configuration of GNU Name Service Switch functionality.
# If you have the `glibc-doc-reference' and `info' packages installed, try:
# `info libc "Name Service Switch"' for information about this file.
passwd: compat
group: compat
shadow: compat
gshadow: files
hosts: files resolve dns
networks: files
protocols: db files
services: db files
ethers: db files
rpc: db files
netgroup: nis
Bearbeiten 3
Inhalt von /etc/systemd/resolved.conf:
# This file is part of systemd.
#
# systemd is free software; you can redistribute it and/or modify it
# under the terms of the GNU Lesser General Public License as published by
# the Free Software Foundation; either version 2.1 of the License, or
# (at your option) any later version.
#
# Entries in this file show the compile time defaults.
# You can change settings by editing this file.
# Defaults can be restored by simply deleting this file.
#
# See resolved.conf(5) for details
[Resolve]
#DNS=
#FallbackDNS=8.8.8.8 8.8.4.4 2001:4860:4860::8888 2001:4860:4860::8844
#Domains=
#LLMNR=yes
#DNSSEC=no
#Cache=yes
/etc/resolv.conf
ist normalerweise ein Symlink unter Ubuntu, das ist normal. Was/etc/nsswitch.conf
enthält?lxc image list
undlxc launch
dies anstelle der eingebauten Adresse verwenden.resolve
das Schlüsselwort "hosts" angezeigt wird. Es scheint falsch zu sein. Sie sollten so etwas wiehosts: files dns [!UNAVAIL=return]
oder wenn Sie mDNS installiert habenfiles dns mdns4_minimal [NOTFOUND=return] mdns4
. Sie können entfernen[NOTFOUND=return]
oder[!UNAVAIL=return]
, es ist sowieso die Standardaktion, wenn nichts mehr abzufragen ist.Antworten:
Dies ist das erste Mal, dass
resolve
das Schlüsselwort "hosts" angezeigt wird. Es scheint falsch zu sein. Du solltest so etwas habenoder wenn Sie mDNS installiert haben
Sie können entfernen
[NOTFOUND=return]
oder[!UNAVAIL=return]
, es ist sowieso die Standardaktion, wenn nichts mehr abzufragen ist.Nun, nach einigem Graben konnte ich feststellen, dass es ein neues NSS-Modul für mich gibt
libnss-resolve
Sie könnten es am Ende irgendwie installieren und nicht mit den von Ihnen erwähnten Paketen. Es gibt kein Paket, das davon abhängt.
Aber ich kann momentan nichts sagen, warum
systemd-resolved
war unzuverlässig. Es ist besser, es als Fehler zu meldensystemd
.quelle
wget
viel schneller geworden. Es sieht also so aus, als ob dies das Problem verursacht hat. Meine Hosts-Zeile in der nsswitch.conf hat jetzt nur noch "files dns".dpkg-query -l '*resolve*'
überprüft, oblibnss-resolve
das installiert ist, also habe ich es installiertaptitude
und ausgeführtaptitude why libnss-resolve
und es stehti ubuntu-standard Recommends libnss-resolve
.ubuntu-standard
&libnss-resolve
.systemctl status systemd-resolved.service
man resolved.conf
, das heißt, wir sind zurück zu/etc/resolv.conf
: /.resolve
sollte den gleichen Effekt haben wiedns
innsswitch.conf
.