TL; DR
ฉันมีสถานการณ์แปลก ๆ ที่ฉันสามารถทำการค้นหา DNS ในโฮสต์บางแห่ง แต่ไม่ใช่สถานที่อื่น ดูเหมือนว่าจะเกี่ยวข้องกับ resolv.conf โดยมีรายการเนมเซิร์ฟเวอร์หนึ่งที่ชี้ไปที่เนมเซิร์ฟเวอร์ของฉันและอีกรายการหนึ่งที่น่าจะเกี่ยวข้องกับนักเทียบท่า แต่ฉันไม่แน่ใจว่าจะแก้ไขได้อย่างไร
ปัญหา
ฉันได้อ่านการแนะนำที่ยอดเยี่ยมของStéphane Graber เกี่ยวกับ LXDและต้องการลองใช้งาน ดังนั้นฉันจึง:
$ sudo usermod -a -G lxd <myusername>
$ newgrp lxd
$ sudo lxd init
ฉันกำหนดค่าด้วยการตั้งค่าเริ่มต้นทั้งหมด ฉันพิมพ์แล้ว:
$ lxc image list images:
error: Get https://images.linuxcontainers.org/streams/v1/index.json: lookup images.linuxcontainers.org: no such host
การทดสอบบางอย่าง
ฉันพยายามเข้าถึงที่อยู่นั้นจากเว็บเบราว์เซอร์บนพีซีเครื่องอื่นและใช้งานได้ดี ดังนั้นฉันจึงคิดว่ามีบางอย่างผิดปกติกับการตั้งค่า DNS แต่:
$ 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
ดังนั้นฉันจึงลอง 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"
ซึ่งทำให้ฉันคิดว่ามีปัญหากับการเชื่อมต่ออินเทอร์เน็ตของฉัน แต่ถ้าฉันใช้ us.images.linuxcontainers.org (ซึ่งฉันเห็นการกล่าวถึงบางแห่งบนเว็บ):
$ 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]
ฉันยังลอง canonical.images.linuxcontainers.org ซึ่ง (ตามที่กล่าวไว้host
ข้างต้น) คือสิ่งที่ images.linuxcontainers.org เป็นนามแฝงของและที่ทำงานเกินไปดังนั้นดูเหมือนว่าhost
สามารถค้นหา images.linuxcontainers.org ในขณะที่wget
และlxc
ไม่สามารถแต่ wget
สามารถเข้าถึง canonical.images.linuxcontainers.org และเว็บไซต์อื่น ๆ ส่วนใหญ่ที่ฉันเคยลอง
$ 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]
ฉันได้ลองwget -4
และwget -6
ตัดปัญหาเรื่อง IPv6 ออกไปแล้ว แต่ผลลัพธ์ก็เหมือนกัน ในที่สุดฉันก็ลองโปรแกรมอื่น ๆ เช่นกันw3m
แต่ก็ไม่ต่างกัน
เห็นได้ชัดว่าฉันขาดอะไรไป ทุกคนสามารถให้คำแนะนำเกี่ยวกับสาเหตุที่ฉันไม่สามารถlxc
ดาวน์โหลดรายการรูปภาพได้หรือไม่
พีซี
พีซีเป็นการติดตั้งใหม่ที่ใช้งาน Ubuntu Server 16.10 พร้อมกับแพ็คเกจเพิ่มเติมจำนวนเล็กน้อยที่ติดตั้งในโฮสต์หลัก ตัวติดตั้งถูกติดตั้งและใช้งานอยู่ แต่ไม่มีคอนเทนเนอร์ น่าสนใจฉันเพิ่งรีบูตเป็นเคอร์เนล 4.8.6 เพื่อทดสอบปัญหาอื่นที่ฉันมีและด้วยเคอร์เนลที่ฉันสามารถเข้าถึง images.linuxcontainers.org แต่นักเทียบท่าจะไม่เริ่มทำงานดังนั้นฉันจึงสงสัยว่าสิ่งนี้จะเกี่ยวกับนักเทียบท่าหรือไม่ .
องค์ประกอบ
/etc/resolv.conf
มีลักษณะเช่นนี้ (แต่ด้วยเหตุผลบางอย่างที่ฉันไม่ทราบว่าจริง ๆ แล้วเป็น symlink ไป/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
หากฉันสอบถามรายชื่อเซิร์ฟเวอร์แรกที่ฉันได้รับผลลัพธ์เช่นเดียวกับถ้าฉันไม่ผนวกที่อยู่เซิร์ฟเวอร์ชื่อ:
$ 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
หากฉันสอบถามครั้งที่สองก็หมดเวลาโดยไม่ต้องไปถึงเซิร์ฟเวอร์:
$ host images.linuxcontainers.org 127.0.0.53
;; connection timed out; no servers could be reached
ถ้าฉันค้นหาครั้งที่สอง แต่ใช้ชื่อบัญญัติซึ่งใช้งานได้และหมดเวลาแล้ว ???
$ 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
แก้ไข 1:
/etc/nsswitch.conf
มีลักษณะเช่นนี้:
# /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
แก้ไข 2
ตอนนี้ nsswitch.conf ที่แก้ไขแล้วจะมีลักษณะเช่นนี้:
# /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
แก้ไข 3
เนื้อหาของ /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
lxc image list
และlxc launch
ใช้สิ่งนี้แทนที่อยู่ในตัว
resolve
คำหลักของโฮสต์ดูเหมือนว่าผิด คุณควรจะมีสิ่งที่ต้องการhosts: files dns [!UNAVAIL=return]
หรือหากคุณมี mDNS files dns mdns4_minimal [NOTFOUND=return] mdns4
ติดตั้ง คุณสามารถลบ[NOTFOUND=return]
หรือ [!UNAVAIL=return]
มันเป็นการกระทำเริ่มต้นหากไม่มีอะไรเหลือให้สอบถาม
/etc/resolv.conf
มักเป็น symlink บน Ubuntu นั่นเป็นเรื่องปกติ สิ่งที่/etc/nsswitch.conf
มี?