TL; DR
Tôi đã gặp một tình huống kỳ lạ khi tôi có thể thực hiện tra cứu DNS trên một số máy chủ nhưng không phải là máy chủ khác. Điều này dường như có liên quan đến độ phân giải. Có một mục nhập máy chủ tên trỏ đến máy chủ tên của tôi và một mục khác có lẽ phải làm với docker, nhưng tôi không chắc cách khắc phục.
Vấn đề
Tôi đã đọc phần giới thiệu tuyệt vời của Stéphane Graber về LXD và muốn dùng thử. Do đó, tôi đã làm:
$ sudo usermod -a -G lxd <myusername>
$ newgrp lxd
$ sudo lxd init
Tôi cấu hình nó với tất cả các cài đặt mặc định. Sau đó tôi gõ:
$ lxc image list images:
error: Get https://images.linuxcontainers.org/streams/v1/index.json: lookup images.linuxcontainers.org: no such host
Một số bài kiểm tra
Tôi đã thử truy cập địa chỉ đó từ một trình duyệt web trên PC khác và nó hoạt động tốt. Vì vậy, tôi đã tìm ra một cái gì đó phải sai với thiết lập DNS, nhưng:
$ 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
Vì vậy, tôi đã cố gắng 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"
điều này khiến tôi nghĩ rằng có vấn đề với kết nối internet của mình, nhưng nếu tôi sử dụng us.images.linuxcontainers.org (mà tôi thấy đề cập đến ở đâu đó trên 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]
Tôi cũng đã thử canonical.images.linuxcontainers.org, mà (theo host
ở trên) là những gì hình ảnh.linuxcontainers.org là bí danh và nó cũng hoạt động, vì vậy có vẻ như host
có thể tra cứu hình ảnh.linuxcontainers.org, trong khi wget
và lxc
không thể, nhưng wget
có thể truy cập canonical.images.linuxcontainers.org và hầu hết các trang web khác mà tôi đã thử.
$ 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]
Tôi cũng đã thử wget -4
và wget -6
loại trừ các sự cố IPv6, nhưng kết quả cũng giống nhau. Cuối cùng tôi đã thử một số chương trình khác như thế w3m
nhưng cũng không có gì khác biệt.
Tôi rõ ràng đang thiếu một cái gì đó; bất cứ ai có thể cung cấp bất kỳ lời khuyên về lý do tại sao tôi không thể lxc
tải về danh sách hình ảnh?
Máy tính
PC là một bản cài đặt tương đối mới chạy Ubuntu Server 16.10 với rất ít gói bổ sung được cài đặt trong máy chủ chính. Docker được cài đặt và chạy nhưng không có container nào được đưa lên. Thật thú vị, gần đây tôi đã khởi động lại vào kernel 4.8.6 để kiểm tra một vấn đề khác mà tôi gặp phải và với hạt nhân đó tôi có thể truy cập vào hình ảnh.linuxcontainers.org, nhưng docker sẽ không bắt đầu, vì vậy tôi tự hỏi liệu điều này có thể xảy ra với docker không .
Cấu hình
/etc/resolv.conf
trông như thế này (nhưng vì một số lý do tôi không biết, thực ra là một liên kết tượng trưng đến /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
Nếu tôi truy vấn máy chủ tên được liệt kê đầu tiên, tôi sẽ nhận được kết quả tương tự như khi tôi không nối thêm địa chỉ máy chủ tên:
$ 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
Nếu tôi truy vấn lần thứ hai, nó sẽ hết thời gian mà không đến được máy chủ:
$ host images.linuxcontainers.org 127.0.0.53
;; connection timed out; no servers could be reached
Nếu tôi truy vấn thứ hai nhưng sử dụng tên chính tắc thì nó hoạt động và sau đó hết thời gian ???
$ 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
Chỉnh sửa 1:
/etc/nsswitch.conf
trông như thế này:
# /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
Chỉnh sửa 2
Các nsswitch.conf đã sửa đổi bây giờ trông như thế này:
# /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
Chỉnh sửa 3
Nội dung của /etc/systemd/resolve.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
và lxc launch
sử dụng điều này thay vì địa chỉ tích hợp.
resolve
từ khóa máy chủ, có vẻ như sai. Bạn nên có một cái gì đó như hosts: files dns [!UNAVAIL=return]
hoặc nếu bạn đã cài đặt mDNS files dns mdns4_minimal [NOTFOUND=return] mdns4
. bạn có thể xóa [NOTFOUND=return]
hoặc [!UNAVAIL=return]
, dù sao đó cũng là hành động mặc định nếu không còn gì để truy vấn.
/etc/resolv.conf
thường là một liên kết tượng trưng trên Ubuntu, điều đó là bình thường. Nó/etc/nsswitch.conf
chứa cái gì?