DNSはホストでは機能しますが、wgetでは機能しません


10

TL; DR

一部のホストでDNSルックアップを実行できるが、他のホストでは実行できないという奇妙な状況があります。これは、私のネームサーバーを指す1つのネームサーバーエントリと、おそらくDockerに関係している別のネームサーバーエントリを持つresolv.confに関連しているようですが、それを修正する方法がわかりません。

問題

私はStéphaneGraberによる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

いくつかのテスト

別のPCのWebブラウザーからそのアドレスにアクセスしてみましたが、問題なく動作しました。そのため、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]

(に応じてIも試みcanonical.images.linuxcontainers.org、host上記)はimages.linuxcontainers.orgはの別名であり、それはのように見えるので、それは、あまりにも働いていたものですhostが、することができます検索images.linuxcontainers.org wgetlxcすることはできません、しかし、 canonical.images.linuxcontainers.orgおよび私が試した他のほとんどのサイトにアクセスwget できます。

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

私もIPv6の問題を排除しようwget -4wget -6しましたが、結果はどちらの方法でも同じでした。最後に私は他のいくつかのプログラムを試しましたw3mが、そこにも違いはありませんでした。

私は明らかに何かが欠けています。私がlxc画像リストをダウンロードできない理由について誰かが何かアドバイスを提供できますか?

PC

PCは、Ubuntu Server 16.10を実行する比較的新しいインストールであり、メインホストにインストールされている追加のパッケージはほとんどありません。Dockerはインストールされて実行されていますが、稼働中のコンテナーはありません。興味深いことに、私は最近カーネル4.8.6で再起動して、私が抱えていた別の問題をテストしました。そのカーネルでは、images.linuxcontainers.orgにアクセスできましたが、Dockerが起動しないので、Dockerに関係があるのではないかと思います。 。

構成

/etc/resolv.confこれは次のようになります(ただし、何らかの理由で気づいていないため、実際にはへのシンボリックリンクです/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

2番目のクエリを実行すると、サーバーに到達せずにタイムアウトになります。

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

2番目のクエリを実行しても正規の名前を使用すると、正常に動作し、タイムアウトしますか???

$ 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

1
/etc/resolv.conf通常、Ubuntuのシンボリックリンクですが、これは正常です。何が/etc/nsswitch.conf含まれていますか?
muru

@muru上に追加しました(これはシンボリックリンクではありません)
DrAl

2
@ThatGuyありがとうございます。これは、すべてのサーバーで機能するわけではありません(サーバーがドメイン名を検索するかどうかによって異なります)。この場合、canonical.images.linuxcontainers.orgを使用するだけでうまくいくようです。ただし、組み込みのアドレスの代わりにこれを説得lxc image listlxc launchて使用する必要もあります。
DrAl 2016

1
@ DrAl、resolvehostsキーワードを見るのは初めてですが、それは間違っているようです。あなたhosts: files dns [!UNAVAIL=return]はmDNSがインストールされているようなものを持っているべきですfiles dns mdns4_minimal [NOTFOUND=return] mdns4[NOTFOUND=return]または を削除でき[!UNAVAIL=return]ます。クエリするものが残っていない場合は、とにかくデフォルトのアクションです。
user.dz 2016年

1
@ user.dz、これを削除しようとしました(これは、以前にこのファイルに触れたことがないため、インストールによってセットアップされたデフォルトですが)。これにより、wgetが機能するように見えます(ただし、数秒遅れて "resolving images.linuxcontainers.org"が実行されます)。ありがとうございます!これが私の/etc/nsswitch.confに追加された理由はありますか?私が作成したパッケージのリストサーバーにインストールされているものは、上記の「PC」セクションのリンクにリストされています
DrAl

回答:


2
  • resolvehostsキーワードを見るのは初めてですが、それは間違っているようです。次のようなものが必要です

    hosts: files dns [NOTFOUND=return]
    

    またはmDNSがインストールされている場合

    hosts: files dns mdns4_minimal [NOTFOUND=return] mdns4
    

    [NOTFOUND=return]またはを削除でき[!UNAVAIL=return]ます。クエリするものが残っていない場合は、とにかくデフォルトのアクションです。

  • さて、少し掘り下げた後、私には新しいNSSモジュールがあることがわかりました

    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.
    

    あなたが言及したパッケージではなく、どういうわけかそれをインストールしてしまう可能性があります。それに依存するパッケージはありません。

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

    しかし、今は何も言えませんsystemd-resolved。なぜ信頼できなかったのですか。バグとして報告することをお勧めしsystemdます。


1
興味深い、ありがとうございます。「解決」を削除してみたwgetところ、かなり速くなったので、それが問題の原因だったようです。nsswitch.confの私のhosts行には、「files dns」のみが含まれています。
DrAl 2016年

1
私は使用dpkg-query -l '*resolve*'をチェックすると、それが見つけlibnss-resolve、私がインストールされて、インストールされているaptitudeとRAN aptitude why libnss-resolveと、それは言いますi ubuntu-standard Recommends libnss-resolve
DrAl 2016年

1
@DrAl、これはどのリリースですか?ubuntu-standard&の間にU16.04の依存関係はありません libnss-resolve
user.dz 2016年

1
これにより、現在の設定について少しわかりますが、最後の修正があります。これは、この別のバグを意味します(systemd-resolved / nss-resolveは信頼できません)。そのサービスを実行していますかsystemctl status systemd-resolved.service
user.dz

1
@DrAlなので、デフォルトのfromを使用します。man resolved.confつまり、/etc/resolv.conf:/に戻ります。resolveと同じ効果がdnsありnsswitch.confます。
user.dz 2016年
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.