TL; DR
Saya punya situasi aneh di mana saya bisa melakukan pencarian DNS pada beberapa host tetapi tidak yang lain. Ini tampaknya terkait dengan resolv.conf yang memiliki satu entri server nama yang menunjuk ke server nama saya dan yang lain yang mungkin berkaitan dengan buruh pelabuhan, tapi saya tidak yakin bagaimana cara memperbaikinya.
Masalah
Saya telah membaca pengantar Stéphane Graber yang luar biasa untuk LXD dan ingin mencobanya. Karena itu, saya melakukan:
$ sudo usermod -a -G lxd <myusername>
$ newgrp lxd
$ sudo lxd init
Saya mengkonfigurasinya dengan semua pengaturan default. Saya kemudian mengetik:
$ lxc image list images:
error: Get https://images.linuxcontainers.org/streams/v1/index.json: lookup images.linuxcontainers.org: no such host
Beberapa tes
Saya mencoba mengakses alamat itu dari browser web di PC lain dan itu berfungsi dengan baik. Jadi saya pikir ada yang salah dengan pengaturan DNS, tetapi:
$ 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
Jadi saya mencoba wget:
$ 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"
yang membuat saya berpikir bahwa ada masalah dengan koneksi internet saya, tetapi jika saya menggunakan us.images.linuxcontainers.org (yang saya lihat menyebutkan suatu tempat di web):
$ 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]
Saya juga mencoba canonical.images.linuxcontainers.org, yang (menurut di host
atas) adalah apa images.linuxcontainers.org adalah alias dari dan itu bekerja juga, jadi sepertinya host
bisa mencari images.linuxcontainers.org, sementara wget
dan lxc
tidak bisa, tetapi wget
dapat mengakses canonical.images.linuxcontainers.org dan sebagian besar situs lain yang pernah saya coba.
$ 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]
Saya juga sudah mencoba wget -4
dan wget -6
mengesampingkan masalah IPv6, tetapi hasilnya sama saja. Akhirnya saya mencoba beberapa program lain seperti w3m
tetapi tidak ada perbedaan di sana juga.
Saya jelas melewatkan sesuatu; adakah yang bisa memberikan saran mengapa saya tidak bisa lxc
mengunduh daftar gambar?
PC
PC adalah instalasi yang relatif baru yang menjalankan Ubuntu Server 16.10 dengan sangat sedikit paket tambahan yang diinstal pada host utama. Docker diinstal dan dijalankan tetapi tidak ada wadah yang menyala. Menariknya, saya baru-baru ini reboot ke kernel 4.8.6 untuk menguji masalah lain yang saya alami dan dengan kernel itu saya bisa mengakses images.linuxcontainers.org, tetapi buruh pelabuhan tidak mau memulai, jadi saya bertanya-tanya apakah ini mungkin ada hubungannya dengan buruh pelabuhan .
Konfigurasi
/etc/resolv.conf
terlihat seperti ini (tetapi karena beberapa alasan saya tidak menyadarinya, sebenarnya adalah symlink ke /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
Jika saya melakukan query server nama yang terdaftar pertama saya mendapatkan hasil yang sama seperti jika saya tidak menambahkan alamat server nama:
$ 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
Jika saya melakukan query yang kedua, itu akan habis tanpa mencapai server:
$ host images.linuxcontainers.org 127.0.0.53
;; connection timed out; no servers could be reached
Jika saya meminta yang kedua tetapi menggunakan nama kanonik itu berfungsi dan kemudian habis ???
$ 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
Edit 1:
/etc/nsswitch.conf
terlihat seperti ini:
# /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
Edit 2
Nsswitch.conf yang dimodifikasi sekarang terlihat seperti ini:
# /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
Edit 3
Isi dari /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
biasanya symlink di Ubuntu, itu normal. Apa yang/etc/nsswitch.conf
mengandung?lxc image list
danlxc launch
menggunakan ini alih-alih alamat bawaan.resolve
kata kunci host, sepertinya salah. Anda harus memiliki sesuatu sepertihosts: files dns [!UNAVAIL=return]
atau jika Anda menginstal mDNSfiles dns mdns4_minimal [NOTFOUND=return] mdns4
. Anda dapat menghapus[NOTFOUND=return]
atau[!UNAVAIL=return]
, itu adalah tindakan default jika tidak ada yang tersisa untuk ditanyakan.Jawaban:
Ini pertama kalinya melihat
resolve
kata kunci host, sepertinya salah. Anda harus memiliki sesuatu sepertiatau jika Anda memiliki mDNS diinstal
Anda dapat menghapus
[NOTFOUND=return]
atau[!UNAVAIL=return]
, itu adalah tindakan default jika tidak ada yang tersisa untuk ditanyakan.Nah, setelah beberapa penggalian saya bisa menemukan bahwa ada modul NSS yang baru bagi saya
libnss-resolve
Anda bisa menginstalnya entah bagaimana dan tidak dengan paket yang Anda sebutkan. Tidak ada paket tergantung padanya.
Tapi saya tidak bisa mengatakan apa-apa sekarang, mengapa
systemd-resolved
tidak bisa diandalkan. Lebih baik melaporkannya sebagai bug disystemd
.sumber
wget
hasilnya menjadi jauh lebih cepat, jadi sepertinya itulah yang menyebabkan masalah. Baris host saya di nsswitch.conf sekarang hanya memiliki "file dns".dpkg-query -l '*resolve*'
memeriksa dan menemukan bahwa itulibnss-resolve
sudah diinstal, jadi saya menginstalaptitude
dan menjalankanaptitude why libnss-resolve
dan dikatakani ubuntu-standard Recommends libnss-resolve
.ubuntu-standard
&libnss-resolve
.systemctl status systemd-resolved.service
man resolved.conf
, itu berarti kita kembali ke/etc/resolv.conf
: /.resolve
harus memiliki efek yang sama sepertidns
padansswitch.conf
.