RHEL 5.7を実行しhostnameていますが、コマンドは正しいホスト名を提供します。
しかしhostname -s、hostname -fリターン:Unknown host。どうして?
/etc/hostname何ですか?
hostname -fDNSを使用していますが、IPの逆DNSエントリはありますか?
RHEL 5.7を実行しhostnameていますが、コマンドは正しいホスト名を提供します。
しかしhostname -s、hostname -fリターン:Unknown host。どうして?
/etc/hostname何ですか?
hostname -fDNSを使用していますが、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 -aDNSで逆引きを行うと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