TL; DR
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 que deve estar relacionada ao docker, mas não tenho certeza de como corrigi-lo.
O problema
Estive lendo a excelente introdução de Stéphane Graber ao LXD e queria experimentá-la. Portanto, eu fiz:
$ sudo usermod -a -G lxd <myusername>
$ newgrp lxd
$ sudo lxd init
Eu o configurei com todas as configurações padrão. Eu então digitei:
$ lxc image list images:
error: Get https://images.linuxcontainers.org/streams/v1/index.json: lookup images.linuxcontainers.org: no such host
Alguns testes
Tentei acessar esse endereço de um navegador da Web em outro PC e funcionou bem. Então, achei que algo devia 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 o 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"
o que me fez pensar que havia um problema com minha conexão com a Internet, mas se eu usar us.images.linuxcontainers.org (que vi menção em algum lugar da 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 e funcionou também, então parece que host
pode procurar images.linuxcontainers.org, enquanto wget
e lxc
não pode, mas wget
pode acessar canonical.images.linuxcontainers.org e a maioria dos outros sites que experimentei.
$ 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 IPv6, mas os resultados foram os mesmos de qualquer maneira. Finalmente, tentei alguns outros programas, como também w3m
não há diferença.
Obviamente estou perdendo alguma coisa; alguém pode oferecer algum conselho sobre por que não consigo lxc
baixar a lista de imagens?
O PC
O PC é uma instalação relativamente nova, executando o Ubuntu Server 16.10, com muito poucos pacotes adicionais instalados no host principal. O Docker está instalado e em execução, mas não há contêineres. Curiosamente, eu reiniciei recentemente o kernel 4.8.6 para testar outro problema que eu estava tendo e com esse kernel eu pude acessar images.linuxcontainers.org, mas o docker não seria iniciado, então estou pensando se isso pode estar relacionado ao docker .
Configuração
/etc/resolv.conf
se parece com isso (mas, por algum motivo que não conheço, é 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, obtenho 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, atingirá o tempo limite sem acessar 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 depois 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
se parece com isso:
# /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 se parece com isso:
# /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 de /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
geralmente é um link simbólico no Ubuntu, isso é normal. O que/etc/nsswitch.conf
contém?lxc image list
elxc launch
usá-lo em vez do endereço interno.resolve
palavra-chave hosts, parece errado. Você deve ter algo parecidohosts: files dns [!UNAVAIL=return]
ou se tiver o mDNS instaladofiles dns mdns4_minimal [NOTFOUND=return] mdns4
. você pode remover[NOTFOUND=return]
or[!UNAVAIL=return]
, é a ação padrão de qualquer maneira, se não restar nada para consultar.Respostas:
Esta é a primeira vez que vê a
resolve
palavra-chave hosts, parece errado. Você deveria ter algo comoou se você possui o mDNS instalado
Você pode remover
[NOTFOUND=return]
or[!UNAVAIL=return]
, é a ação padrão de qualquer maneira, se não restar nada para consultar.Bem, depois de algumas pesquisas, descobri que há um módulo NSS novo para mim
libnss-resolve
Você pode acabar instalando-o de alguma forma e não com os pacotes que você mencionou. Não há pacote depende disso.
Mas não posso dizer nada agora, por que
systemd-resolved
não era confiável. É melhor denunciá-lo como errosystemd
.fonte
wget
fiquei muito mais rápido, então parece que foi isso que estava causando o problema. Minha linha de hosts no nsswitch.conf agora possui apenas "arquivos dns".dpkg-query -l '*resolve*'
verificar e descobri quelibnss-resolve
está instalado, então eu instaleiaptitude
e corriaptitude why libnss-resolve
e dizi ubuntu-standard Recommends libnss-resolve
.ubuntu-standard
e &libnss-resolve
.systemctl status systemd-resolved.service
man resolved.conf
, isso significa que estamos de volta a/etc/resolv.conf
: /.resolve
deve ter o mesmo efeito quedns
emnsswitch.conf
.