web-dev-qa-db-ja.com

hostname-iが奇妙なIPアドレスを返す理由を理解する

次の質問は似ていますが同じではないため、参照しています。

CentOS 7システムで、ホスト名を変更した後、「hostname -i」から奇妙なIPアドレスを取得しましたが、なぜそうなるのかを理解しようとしています。

次のコマンドでホスト名を変更します。

# hostnamectl set-hostname saturn
# systemctl restart systemd-hostnamed

私の/ etc/hostsファイルは次のことを示しています。

 127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6

以下は私の/etc/nsswistch.confファイルにあります:

hosts:      files dns myhostname

私のサーバーのIPアドレスは192.168.1.13ですが、「hostname-i」は奇妙なIPアドレスを返します。

# hostname -i
92.242.140.21

ただし、「hostname-I」は問題ありません。

# hostname -I
192.168.1.13

Hostname-iが92.242.140.21を返すのはなぜですか。 DNSによってシステムに割り当てられたランダムな動的IPですか?誰かが説明できますか?ありがとう!

1
s2000coder

すべてのネットワークインターフェイスに設定されているすべてのIPアドレスを一覧表示するhostname -Iコマンドとは異なり、hostname -iコマンドは名前解決を実行します(hostnameのマニュアルページを参照)。

新しく割り当てられたホスト名は/etc/hostsファイルを使用して解決できないため、hostname -iを実行すると、システムの名前リゾルバーが外部DNSサーバーへのDNSクエリを生成します。このサーバー(私はあなたのISPに属していると思います)では、このクエリは空になります(NXDOMAINの結果:つまり、存在しないドメイン)。 ISPはNXDOMAINの結果を受け取るのではなく、Barefruitと提携しているため、クエリに応答してBarefruitのIPアドレスを受け取ります。

$ Dig +short -x 92.242.140.21
unallocated.barefruit.co.uk.

新しいホスト名を/etc/hostsファイルに追加すると、hostname -iコマンドを実行したときに奇妙なBarefruitIPアドレスが消えると思います。そうでない場合は、この回答を無視してかまいません:)


楽しみのために、Digコマンドを使用して、さまざまなネームサーバーに問い合わせることができます。応答の違いを確認するには、次の2つのコマンドを実行できます。

$ Dig saturn
$ Dig @8.8.8.8 saturn

1つ目は、システムの事前構成されたDNSサーバーを介した名前解決を引き起こし、BarefruitIPアドレスが返される可能性があります。 2番目のコマンドは Google Public DNS に名前を解決するように要求し、NXDOMAINステータスで戻ります。か否か?

もしそうなら、あなたのISPは DNSハイジャック の疑わしい慣行に関与しているかもしれません、そしてあなたはオプトアウトの可能性があるかどうかを理解するか、DNSサービスプロバイダーを変更したいかもしれません。

6
ozzy