TL; DR
Eu tenho uma situação estranha em que posso fazer pesquisas de DNS em alguns hosts, mas não em outros. Isso parece estar relacionado ao resolv.conf ter uma entrada de servidor de nomes apontando para o meu servidor de nomes e outra presumivelmente para fazer com o docker, mas não tenho certeza de como consertá-lo.
O problema
Eu tenho lido a excelente introdução de Stéphane Graber ao LXD e queria experimentar. Portanto, eu fiz:
$ sudo usermod -a -G lxd <myusername>
$ newgrp lxd
$ sudo lxd init
Eu configurei com todas as configurações padrão. Eu digitei:
$ lxc image list images:
error: Get https://images.linuxcontainers.org/streams/v1/index.json: lookup images.linuxcontainers.org: no such host
Alguns testes
Eu tentei acessar esse endereço de um navegador da web em outro PC e funcionou bem. Então imaginei que algo deve estar errado com a configuração do DNS, mas:
$ 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
Então eu tentei 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"
que me fez pensar que houve um problema com a minha conexão com a internet, mas se eu usar-me.images.linuxcontainers.org (que eu vi mencionar em algum lugar na 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]
Eu também tentei canonical.images.linuxcontainers.org, que (de acordo com host
acima) é o que images.linuxcontainers.org é um alias de e que funcionou também, então parece que host
pode procurar imagens. linuxcontainers.org, enquanto wget
e lxc
não podem, mas wget
podem acessar canonical.images.linuxcontainers.org e a maioria dos outros sites que eu tentei.
$ 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]
Eu também tentei wget -4
e wget -6
para descartar problemas de IPv6, mas os resultados foram os mesmos de qualquer maneira. Finalmente eu tentei alguns outros programas como w3m
mas também não houve diferença.
Eu obviamente estou perdendo alguma coisa; Alguém pode oferecer algum conselho sobre porque eu não consigo obter lxc
para baixar a lista de imagens?
O PC
O PC é uma instalação relativamente nova rodando o Ubuntu Server 16.10 com pouquíssimos pacotes adicionais instalados no host principal. O Docker está instalado e em execução, mas nenhum contêiner está ativo. Curiosamente, eu reiniciei recentemente no kernel 4.8.6 para testar outro problema que estava tendo e com esse kernel eu poderia acessar o images.linuxcontainers.org, mas o docker não iniciava, então estou pensando se isso poderia ser feito com o docker .
Configuração
/etc/resolv.conf
se parece com isso (mas por algum motivo eu não estou ciente, é na verdade um link simbólico para /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
Se eu consultar o primeiro servidor de nomes listado, recebo o mesmo resultado, como se não acrescentasse o endereço do servidor de nomes:
$ 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
Se eu consultar o segundo, ele expirará sem atingir um servidor:
$ host images.linuxcontainers.org 127.0.0.53
;; connection timed out; no servers could be reached
Se eu consultar o segundo, mas usar o nome canônico, ele funciona e expirará ???
$ 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
Editar 1:
/etc/nsswitch.conf
é assim:
# /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
Editar 2
O nsswitch.conf modificado agora está assim:
# /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
Editar 3
Conteúdo do /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