DNS funziona con host, ma non con wget


10

TL; DR

Ho una strana situazione in cui posso fare ricerche DNS su alcuni host ma non su altri. Questo sembra essere correlato a resolv.conf con una voce nameserver che punta al mio nameserver e un'altra che presumibilmente ha a che fare con la finestra mobile, ma non sono sicuro di come risolverlo.

Il problema

Ho letto l'eccellente introduzione di Stéphane Graber a LXD e volevo provarlo. Pertanto, ho fatto:

$ sudo usermod -a -G lxd <myusername>
$ newgrp lxd
$ sudo lxd init

L'ho configurato con tutte le impostazioni predefinite. Ho quindi digitato:

$ lxc image list images:
error: Get https://images.linuxcontainers.org/streams/v1/index.json: lookup images.linuxcontainers.org: no such host

Alcuni test

Ho provato ad accedere a quell'indirizzo da un browser Web su un altro PC e ha funzionato bene. Quindi ho pensato che qualcosa dovesse essere sbagliato nell'impostazione del DNS, ma:

$ 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

Quindi ho provato 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"

che mi ha fatto pensare che ci fosse un problema con la mia connessione Internet, ma se uso us.images.linuxcontainers.org (di cui ho visto la menzione da qualche parte sul 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]

Ho anche provato canonical.images.linuxcontainers.org, che (secondo quanto hostsopra) è ciò che images.linuxcontainers.org è un alias di e che ha funzionato anche, quindi sembra che hostpossa cercare images.linuxcontainers.org, mentre wgete lxcnon può, ma wget posso accedere a canonical.images.linuxcontainers.org e alla maggior parte degli altri siti che ho provato.

$ 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]

Ho anche provato wget -4e wget -6per escludere problemi di IPv6, ma i risultati erano gli stessi in entrambi i casi. Alla fine ho provato alcuni altri programmi come w3mma nessuna differenza neanche lì.

Mi manca ovviamente qualcosa; qualcuno può offrire qualche consiglio sul perché non riesco lxca scaricare l'elenco delle immagini?

Il PC

Il PC è un'installazione relativamente nuova che esegue Ubuntu Server 16.10 con pochissimi pacchetti aggiuntivi installati nell'host principale. Docker è installato e in esecuzione ma nessun contenitore è attivo. È interessante notare che di recente ho riavviato il kernel 4.8.6 per testare un altro problema che stavo riscontrando e con quel kernel avrei potuto accedere a images.linuxcontainers.org, ma la finestra mobile non si avviava, quindi mi chiedo se questo potrebbe avere a che fare con la finestra mobile .

Configurazione

/etc/resolv.confassomiglia a questo (ma per qualche motivo di cui non sono a conoscenza, è in realtà un link simbolico a /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 interrogo il primo nameserver elencato ottengo lo stesso risultato come se non aggiungessi l'indirizzo del nameserver:

$ 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 eseguo una query sul secondo, scade senza raggiungere un server:

$ host images.linuxcontainers.org 127.0.0.53
;; connection timed out; no servers could be reached

Se interrogo il secondo ma uso il nome canonico, funziona e quindi scade ???

$ 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

Modifica 1:

/etc/nsswitch.conf Somiglia a questo:

# /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

Modifica 2

Il nsswitch.conf modificato ora assomiglia a questo:

# /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

Modifica 3

Contenuto di /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

1
/etc/resolv.confdi solito è un collegamento simbolico su Ubuntu, è normale. Cosa /etc/nsswitch.confcontiene?
muru,

@muru L'ho aggiunto sopra (questo non è un link simbolico)
DrAl,

2
@ThatGuy Grazie per quello. Questo non funzionerà con tutti i server (poiché dipende dal fatto che il server cerchi il nome di dominio) - in questo caso potrei semplicemente usare canonical.images.linuxcontainers.org in quanto ciò sembra funzionare. Tuttavia, avrei anche bisogno di persuadere lxc image liste lxc launchusare questo al posto dell'indirizzo incorporato.
DrAl,

1
@DrAl, Questa è la prima volta che vedi la resolveparola chiave hosts, sembra sbagliato. Dovresti avere qualcosa di simile hosts: files dns [!UNAVAIL=return]o se hai installato mDNS files dns mdns4_minimal [NOTFOUND=return] mdns4. puoi rimuovere [NOTFOUND=return]o [!UNAVAIL=return], comunque, è l'azione predefinita se non è rimasto nulla da interrogare.
user.dz,

1
@ user.dz, ho provato a rimuoverlo (anche se è l'impostazione predefinita della mia installazione in quanto non ho mai toccato questo file in precedenza). Questo sembra consentire a wget di funzionare (anche se dopo alcuni secondi di ritardo "risoluzione di images.linuxcontainers.org). Grazie! Qualche idea sul perché questo potrebbe essere stato aggiunto al mio /etc/nsswitch.conf? L'elenco dei pacchetti che ho installato sul server è elencato in un collegamento nella sezione "Il PC" sopra.
DrAl,

Risposte:


2
  • Questa è la prima volta che vedi la resolveparola chiave hosts, sembra sbagliato. Dovresti avere qualcosa del genere

    hosts: files dns [NOTFOUND=return]
    

    o se hai installato mDNS

    hosts: files dns mdns4_minimal [NOTFOUND=return] mdns4
    

    Puoi rimuovere [NOTFOUND=return]o [!UNAVAIL=return], comunque, è l'azione predefinita se non è rimasto nulla da interrogare.

  • Bene, dopo alcuni scavi ho scoperto che c'è un modulo NSS nuovo per me

    libnss-resolve

    nss module to resolve names via systemd-resolved
    
    nss-resolve is a plugin for the GNU Name Service Switch (NSS) functionality
    of the GNU C Library (glibc) providing DNS and LLMNR resolution to programs via
    the systemd-resolved daemon (provided in the systemd package).
    
    Installing this package automatically adds resolve to /etc/nsswitch.conf.
    

    Potresti finire per installarlo in qualche modo e non con i pacchetti che hai citato. Non esiste un pacchetto dipende da questo.

    ~$ apt-cache rdepends libnss-resolve
    libnss-resolve
    Reverse Depends:
    

    Ma non posso dire nulla in questo momento, perché systemd-resolvedera inaffidabile. È meglio segnalarlo come bug in systemd.


1
Interessante, grazie. Ho provato a rimuovere "risoluzione" e sono wgetdiventato molto più veloce, quindi sembra che sia stato questo a causare il problema. La mia linea di host in nsswitch.conf ora ha solo "file dns".
DrAl,

1
Prima dpkg-query -l '*resolve*'controllavo e trovavo che libnss-resolvefosse installato, quindi ho installato aptitudeed eseguito aptitude why libnss-resolvee dice i ubuntu-standard Recommends libnss-resolve.
DrAl,

1
@DrAl, quale versione è questa? Ho U16.04 senza tale dipendenza tra ubuntu-standard& libnss-resolve.
user.dz,

1
Questo ci dà un po 'di luce sulla configurazione corrente, ma hai l'ultima correzione, il che significa che questo altro bug (systemd-resolved / nss-resolve non è affidabile). Il servizio è attivosystemctl status systemd-resolved.service
user.dz,

1
@DrAl, quindi utilizza i valori predefiniti, da man resolved.conf, ciò significa che siamo tornati a /etc/resolv.conf: /. resolvedovrebbe avere lo stesso effetto di dnsin nsswitch.conf.
user.dz,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.