RHEL 5.7を実行しhostname
ていますが、コマンドは正しいホスト名を提供します。
しかしhostname -s
、hostname -f
リターン:Unknown host
。どうして?
/etc/hostname
何ですか?
hostname -f
DNSを使用していますが、IPの逆DNSエントリはありますか?
RHEL 5.7を実行しhostname
ていますが、コマンドは正しいホスト名を提供します。
しかしhostname -s
、hostname -f
リターン:Unknown host
。どうして?
/etc/hostname
何ですか?
hostname -f
DNSを使用していますが、IPの逆DNSエントリはありますか?
回答:
(SFに関する私の回答の1つからコピーされました)
このhostname
コマンドは、DNSおよびから結果を返します/etc/hosts
。
hostname
はuname -n
、ボックスの実際の「ホスト名」または「ノード名」に相当します。
他のすべてのhostname
引数は、このノード名を使用して情報を検索します。
したがって、先に進む前に、/etc/hosts
ファイル形式について説明する必要があります。
最初のフィールドはかなり明白で、そのIPアドレスは回線上のすべてのホスト名に解決されるはずです。2番目のフィールドは、そのIPのプライマリホスト名です。残りのフィールドはエイリアスです。
したがって、実行hostname -f
すると、まずノード名のIPを解決しようとします。あなたが持っているかに応じて、hosts:
で構成されたエントリ/etc/nsswitch.conf
この方法は異なります。
/etc/resolv.conf
、DNSからIPを取得するまで、設定された検索ドメインを使用します。 /etc/hosts
、プライマリホスト名またはエイリアス名が現在のノード名(uname -n
)である行を検索し、その行にIPアドレスを返します。 IPを取得すると、そのIPで逆ルックアップを試行します。繰り返しますが、これにDNSを使用し、ホストファイルに基づいてホストファイルを使用しますnsswitch.conf
。ホストファイルを使用する場合は、プライマリエントリ(ファイル内のIPの後の最初のフィールド)を返します。
hostname -a
DNSで逆引きを行うと1つの結果しか得られないため、hostsファイルでのみ機能します。hostsファイルでは、一致する行にエイリアスを返します(これは、最初のエントリであるプライマリホスト名の後のすべてです)。
つまり、問題の原因として考え/etc/hosts
られるのは、ホスト名(uname -n
)を含むエントリがないことです。
例
ノード名が「foobar」で、次のようなエントリがある場合/etc/hosts
:
127.0.0.1 foobar.example.com foobar localhost.localdomain localhost
次に、次のコマンド結果が表示されます。
# hostname
foobar
# uname -n
foobar
# hostname -f
foobar.example.com
# hostname -a
foobar localhost.localdomain localhost