straceは、CentOS7のping / hostコマンドに/ etc / hostsをリストしません

CppLearner

私はhttps://zwischenzugs.com/2018/06/08/anatomy-of-a-linux-dns-lookup-part-i/読んでいて、作者のDebian / Ubuntuシステム/etc/hostsが使用されています。

しかし、CentOS 7でstraceを実行すると、表示されません。

以下のためのhostコマンド:

strace -e trace=open -f host google.com
open("/etc/ld.so.cache", O_RDONLY|O_CLOEXEC) = 3
open("/lib64/libdns.so.100", O_RDONLY|O_CLOEXEC) = 3
open("/lib64/liblwres.so.90", O_RDONLY|O_CLOEXEC) = 3
open("/lib64/libbind9.so.90", O_RDONLY|O_CLOEXEC) = 3
open("/lib64/libisccfg.so.90", O_RDONLY|O_CLOEXEC) = 3
open("/lib64/libisccc.so.90", O_RDONLY|O_CLOEXEC) = 3
open("/lib64/libisc.so.95", O_RDONLY|O_CLOEXEC) = 3
open("/lib64/libgssapi_krb5.so.2", O_RDONLY|O_CLOEXEC) = 3
open("/lib64/libkrb5.so.3", O_RDONLY|O_CLOEXEC) = 3
open("/lib64/libk5crypto.so.3", O_RDONLY|O_CLOEXEC) = 3
open("/lib64/libcom_err.so.2", O_RDONLY|O_CLOEXEC) = 3
open("/lib64/libcrypto.so.10", O_RDONLY|O_CLOEXEC) = 3
open("/lib64/libcap.so.2", O_RDONLY|O_CLOEXEC) = 3
open("/lib64/libpthread.so.0", O_RDONLY|O_CLOEXEC) = 3
open("/lib64/libGeoIP.so.1", O_RDONLY|O_CLOEXEC) = 3
open("/lib64/libxml2.so.2", O_RDONLY|O_CLOEXEC) = 3
open("/lib64/libz.so.1", O_RDONLY|O_CLOEXEC) = 3
open("/lib64/libm.so.6", O_RDONLY|O_CLOEXEC) = 3
open("/lib64/libdl.so.2", O_RDONLY|O_CLOEXEC) = 3
open("/lib64/libidn.so.11", O_RDONLY|O_CLOEXEC) = 3
open("/lib64/libc.so.6", O_RDONLY|O_CLOEXEC) = 3
open("/lib64/libkrb5support.so.0", O_RDONLY|O_CLOEXEC) = 3
open("/lib64/libkeyutils.so.1", O_RDONLY|O_CLOEXEC) = 3
open("/lib64/libresolv.so.2", O_RDONLY|O_CLOEXEC) = 3
open("/lib64/libattr.so.1", O_RDONLY|O_CLOEXEC) = 3
open("/lib64/liblzma.so.5", O_RDONLY|O_CLOEXEC) = 3
open("/lib64/libselinux.so.1", O_RDONLY|O_CLOEXEC) = 3
open("/lib64/libpcre.so.1", O_RDONLY|O_CLOEXEC) = 3
open("/etc/pki/tls/legacy-settings", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/usr/share/locale/en_US.UTF-8/libdns.cat", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/usr/share/locale/en_US.UTF-8/LC_MESSAGES/libdns.cat", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/usr/share/locale/en/libdns.cat", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/usr/share/locale/en/LC_MESSAGES/libdns.cat", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/usr/share/locale/en_US.UTF-8/libisc.cat", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/usr/share/locale/en_US.UTF-8/LC_MESSAGES/libisc.cat", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/usr/share/locale/en/libisc.cat", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/usr/share/locale/en/LC_MESSAGES/libisc.cat", O_RDONLY) = -1 ENOENT (No such file or directory)
strace: Process 3436 attached
strace: Process 3437 attached
strace: Process 3438 attached
[pid  3435] open("/usr/share/locale/en_US.UTF-8/libdst.cat", O_RDONLY) = -1 ENOENT (No such file or directory)
[pid  3435] open("/usr/share/locale/en_US.UTF-8/LC_MESSAGES/libdst.cat", O_RDONLY) = -1 ENOENT (No such file or directory)
[pid  3435] open("/usr/share/locale/en/libdst.cat", O_RDONLY) = -1 ENOENT (No such file or directory)
[pid  3435] open("/usr/share/locale/en/LC_MESSAGES/libdst.cat", O_RDONLY) = -1 ENOENT (No such file or directory)
[pid  3435] open("/etc/pki/tls/openssl.cnf", O_RDONLY) = 6
[pid  3435] open("/etc/resolv.conf", O_RDONLY) = 6
[pid  3435] open("/usr/lib/locale/locale-archive", O_RDONLY|O_CLOEXEC) = 6
google.com has address 172.217.164.142

以下のためのpingコマンド:

strace -e trace=open -f ping -c1 google.com
open("/etc/ld.so.cache", O_RDONLY|O_CLOEXEC) = 3
open("/lib64/libcap.so.2", O_RDONLY|O_CLOEXEC) = 3
open("/lib64/libidn.so.11", O_RDONLY|O_CLOEXEC) = 3
open("/lib64/libcrypto.so.10", O_RDONLY|O_CLOEXEC) = 3
open("/lib64/libresolv.so.2", O_RDONLY|O_CLOEXEC) = 3
open("/lib64/libm.so.6", O_RDONLY|O_CLOEXEC) = 3
open("/lib64/libc.so.6", O_RDONLY|O_CLOEXEC) = 3
open("/lib64/libattr.so.1", O_RDONLY|O_CLOEXEC) = 3
open("/lib64/libdl.so.2", O_RDONLY|O_CLOEXEC) = 3
open("/lib64/libz.so.1", O_RDONLY|O_CLOEXEC) = 3
open("/etc/pki/tls/legacy-settings", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/usr/lib/locale/locale-archive", O_RDONLY|O_CLOEXEC) = 3
PING google.com (172.217.15.78) 56(84) bytes of data.
open("/etc/host.conf", O_RDONLY|O_CLOEXEC) = 4
open("/etc/resolv.conf", O_RDONLY|O_CLOEXEC) = 4
64 bytes from iad23s63-in-f14.1e100.net (172.217.15.78): icmp_seq=1 ttl=47 time=1.68 ms

私は、各ツールという(、著者によると、語っていますhostpinggetentnslookup)おそらく別のAPIを使用しています。

/etc/hosts.conf

multi on

/etc/nsswtich.conf

hosts:      files dns myhostname
パトリックマター

hostnslookupおよびdigすべてのDNSユーティリティです:彼らは、DNSクエリを行い、ひいてはOS /通常経由のlibcが提供するnornal名前解決バイパスgethostbyname()getaddrinfo()通話。

彼らはまだ/etc/resolv.conf一種のブートストラップとして自分自身を使用していることに注意してください:あなたがサーバーを提供しない場合にどのサーバーに接続するかを知るために(そして通常のDNSトラブルシューティングはしばしば権威のあるクエリから始まるので、これらのツールでクエリするネームサーバーを指定することが常に望ましいですネームサーバーは再帰的なものだけになります。これは/etc/resolv.conf)に格納されている種類のものです。

pingはあらゆる種類のトラブルシューティングにはほとんど間違ったツールですが、名前解決のニーズに関しては、DNS、ローカルファイル、LDAP、NISの場合、名前解決がどのように行われるかを指示するOS / libcによって提供される標準ツールを使用します、mDNS、またはその他の情報源。これがの役割です/etc/nsswitch.confしたがって、ファイルが開いていることがわかります。

# strace -e open ping -c 1 www.example.com
open("/etc/ld.so.cache", O_RDONLY|O_CLOEXEC) = 3
open("/lib/x86_64-linux-gnu/libcap.so.2", O_RDONLY|O_CLOEXEC) = 3
open("/lib/x86_64-linux-gnu/libc.so.6", O_RDONLY|O_CLOEXEC) = 3
open("/lib/x86_64-linux-gnu/libattr.so.1", O_RDONLY|O_CLOEXEC) = 3
open("/etc/resolv.conf", O_RDONLY|O_CLOEXEC) = 4
open("/etc/resolv.conf", O_RDONLY|O_CLOEXEC) = 4
open("/etc/nsswitch.conf", O_RDONLY|O_CLOEXEC) = 4
open("/etc/ld.so.cache", O_RDONLY|O_CLOEXEC) = 4
open("/lib/x86_64-linux-gnu/libnss_files.so.2", O_RDONLY|O_CLOEXEC) = 4
open("/etc/host.conf", O_RDONLY|O_CLOEXEC) = 4
open("/etc/hosts", O_RDONLY|O_CLOEXEC)  = 4
open("/etc/ld.so.cache", O_RDONLY|O_CLOEXEC) = 4
open("/lib/x86_64-linux-gnu/libnss_dns.so.2", O_RDONLY|O_CLOEXEC) = 4
open("/lib/x86_64-linux-gnu/libresolv.so.2", O_RDONLY|O_CLOEXEC) = 4
PING www.example.com (93.184.216.34) 56(84) bytes of data.
open("/etc/hosts", O_RDONLY|O_CLOEXEC)  = 4
64 bytes from 93.184.216.34: icmp_seq=1 ttl=57 time=1.00 ms

--- www.example.com ping statistics ---
1 packets transmitted, 1 received, 0% packet loss, time 0ms
rtt min/avg/max/mdev = 1.003/1.003/1.003/0.000 ms
+++ exited with 0 +++

getentにリストされて/etc/nsswitch.confいるデータのソースから情報を照会するための汎用ユーティリティです。これで、ahostshosts使用できる「データベース」ができgetentました。の内容/etc/nsswitch.conf、および/etc/hostsifの内容がfilesこれらのデータベースのソースとしてリストされているかどうかに応じて、呼び出しはDNSを使用する場合と使用しない場合があります。

# strace -e open getent ahostsv4 www.example.com
open("/etc/ld.so.cache", O_RDONLY|O_CLOEXEC) = 3
open("/lib/x86_64-linux-gnu/libc.so.6", O_RDONLY|O_CLOEXEC) = 3
open("/usr/lib/locale/locale-archive", O_RDONLY|O_CLOEXEC) = 3
open("/usr/share/locale/locale.alias", O_RDONLY|O_CLOEXEC) = 3
open("/usr/lib/locale/UTF-8/LC_CTYPE", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
open("/etc/nsswitch.conf", O_RDONLY|O_CLOEXEC) = 3
open("/etc/host.conf", O_RDONLY|O_CLOEXEC) = 3
open("/etc/resolv.conf", O_RDONLY|O_CLOEXEC) = 3
open("/etc/ld.so.cache", O_RDONLY|O_CLOEXEC) = 3
open("/lib/x86_64-linux-gnu/libnss_files.so.2", O_RDONLY|O_CLOEXEC) = 3
open("/etc/hosts", O_RDONLY|O_CLOEXEC)  = 3
open("/etc/ld.so.cache", O_RDONLY|O_CLOEXEC) = 3
open("/lib/x86_64-linux-gnu/libnss_dns.so.2", O_RDONLY|O_CLOEXEC) = 3
open("/lib/x86_64-linux-gnu/libresolv.so.2", O_RDONLY|O_CLOEXEC) = 3
open("/etc/resolv.conf", O_RDONLY|O_CLOEXEC) = 3
93.184.216.34   STREAM www.example.com
93.184.216.34   DGRAM
93.184.216.34   RAW
+++ exited with 0 +++

最初/etc/hostsに開くため、最初にチェックを行うと推測することもできlibnss_filesます。この構成では、エントリが見つからないため、のおかげでDNSにフォールバックしますlibnss_dns

PS:/etc/gai.conf名前解決を処理するのがOS / libcである場合にも使用される可能性があることに注意してください。これは、IPアドレスの順序を定義するため(通常、IPv6がIPv4よりも優先される場合、またはその逆の場合)、 1つ以上のアドレスファミリの複数のアドレスを持つホスト。

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

ブラウザは/ etc / hostsにエイリアスを認識しません

分類Dev

docker-composeは/ etc / hostsにホスト名を追加しません

分類Dev

組み込みのコマンドラインを使用して/ etc / hostsにエントリを追加する方法

分類Dev

ホスト名の出力を/ etc / hostsにエコーします

分類Dev

/ usr / bin / hostは、再起動後も/ etc / hostsへの変更を取得しません

分類Dev

Kubernetesの/ etc / hostsにホストマッピングを追加します

分類Dev

centos7の/ etc / hostname vs / etc / hosts vs / etc / sysconfig / network

分類Dev

CentOS7の/etc/resolv.confはオプションを尊重していないようです

分類Dev

各コンテナの同じポートを使用して、コンテナをDockerホストの/etc/hostsに自動的にマッピングします

分類Dev

Augeasを使用して/ etc / hostsにlocalhostのエイリアスを追加します

分類Dev

/ etc / crontabのコマンドは再起動時に実行されませんか?

分類Dev

/ etc / hostsをシンボリックリンクにすることはできませんか?

分類Dev

ASP NET Core:docker-composeのエイリアスは/ etc / hostsに表示されません

分類Dev

/ etc / hostsには、ループバックアドレスにマップするFQDNのエントリを含める必要がありますか?

分類Dev

/ etc / hostsにアイテムを追加しても、Windows8のFacebookはブロックされません

分類Dev

CentOS7にRedisの最新の安定したリリースをインストールできません

分類Dev

/ etc / hostsを変更しても効果はありません

分類Dev

CMakeはRPMインストールのために「/ etc / hosts」をチェックします

分類Dev

/ etc / hostsファイルを使用したzshシェルでのsshコマンドのオートコンプリートのようなbash?

分類Dev

nginxがロードされていません(additional-hosts / *。conf;を含む)ディレクトリを変更しませんか?centos7

分類Dev

PHP7をインストールしましたが、/ etcにapache2ディレクトリが作成されません。それで?

分類Dev

/ etc / fstabにsudo-iコマンドを配置した場合の影響

分類Dev

/ etc / environmentに変数を設定しても影響はありませんが、コマンドラインで変数を設定するのは

分類Dev

/ etc / hostsにホスト名エイリアスを設定しますか?

分類Dev

CentOS7で「host-vhostname」コマンドを機能させる

分類Dev

/ etc / hostsを読み取るプログラム/アプリケーションまたはスクリプト

分類Dev

Firefoxは/ etc / hostsの前にリモート名ルックアップを使用します

分類Dev

'www'エントリを/ etc / hostsに追加します

分類Dev

/ etc / hostsファイルのホスト名を更新するためのスクリプトの作成中に複数の問題が発生しますか?

Related 関連記事

  1. 1

    ブラウザは/ etc / hostsにエイリアスを認識しません

  2. 2

    docker-composeは/ etc / hostsにホスト名を追加しません

  3. 3

    組み込みのコマンドラインを使用して/ etc / hostsにエントリを追加する方法

  4. 4

    ホスト名の出力を/ etc / hostsにエコーします

  5. 5

    / usr / bin / hostは、再起動後も/ etc / hostsへの変更を取得しません

  6. 6

    Kubernetesの/ etc / hostsにホストマッピングを追加します

  7. 7

    centos7の/ etc / hostname vs / etc / hosts vs / etc / sysconfig / network

  8. 8

    CentOS7の/etc/resolv.confはオプションを尊重していないようです

  9. 9

    各コンテナの同じポートを使用して、コンテナをDockerホストの/etc/hostsに自動的にマッピングします

  10. 10

    Augeasを使用して/ etc / hostsにlocalhostのエイリアスを追加します

  11. 11

    / etc / crontabのコマンドは再起動時に実行されませんか?

  12. 12

    / etc / hostsをシンボリックリンクにすることはできませんか?

  13. 13

    ASP NET Core:docker-composeのエイリアスは/ etc / hostsに表示されません

  14. 14

    / etc / hostsには、ループバックアドレスにマップするFQDNのエントリを含める必要がありますか?

  15. 15

    / etc / hostsにアイテムを追加しても、Windows8のFacebookはブロックされません

  16. 16

    CentOS7にRedisの最新の安定したリリースをインストールできません

  17. 17

    / etc / hostsを変更しても効果はありません

  18. 18

    CMakeはRPMインストールのために「/ etc / hosts」をチェックします

  19. 19

    / etc / hostsファイルを使用したzshシェルでのsshコマンドのオートコンプリートのようなbash?

  20. 20

    nginxがロードされていません(additional-hosts / *。conf;を含む)ディレクトリを変更しませんか?centos7

  21. 21

    PHP7をインストールしましたが、/ etcにapache2ディレクトリが作成されません。それで?

  22. 22

    / etc / fstabにsudo-iコマンドを配置した場合の影響

  23. 23

    / etc / environmentに変数を設定しても影響はありませんが、コマンドラインで変数を設定するのは

  24. 24

    / etc / hostsにホスト名エイリアスを設定しますか?

  25. 25

    CentOS7で「host-vhostname」コマンドを機能させる

  26. 26

    / etc / hostsを読み取るプログラム/アプリケーションまたはスクリプト

  27. 27

    Firefoxは/ etc / hostsの前にリモート名ルックアップを使用します

  28. 28

    'www'エントリを/ etc / hostsに追加します

  29. 29

    / etc / hostsファイルのホスト名を更新するためのスクリプトの作成中に複数の問題が発生しますか?

ホットタグ

アーカイブ