linux hostname -fコマンドがRHELで機能しない


13

RHEL 5.7を実行しhostnameていますが、コマンドは正しいホスト名を提供します。
しかしhostname -shostname -fリターン:Unknown host。どうして?


どんなディストリビューション?私のUbuntu 12.04システムでは、3つすべてが機能します。
アントン14年

どのオペレーティングシステムを使用していますか?Linuxの場合、どのディストリビューションですか?内容は/etc/hostname何ですか?
テルドン

1
hostname -fDNSを使用していますが、IPの逆DNSエントリはありますか?
バーマー

@terdon私はRHEL5(Red Hat Enterprise Linuxサーバーリリース5.7(tikanga))を使用していますが、そのようなファイルはありません(/ etc / hostname)
2014年

@BarmarホストにDNSが設定されていません。ホストファイル(/ etc / hosts)にIPアドレスとfqdnを追加しましたが、このエラーはdnsが構成されていないことの結果ですか?
14年

回答:


21

SFに関する私の回答の1つからコピーされました)

このhostnameコマンドは、DNSおよびから結果を返します/etc/hosts

hostnameuname -n、ボックスの実際の「ホスト名」または「ノード名」に相当します。
他のすべてのhostname引数は、このノード名を使用して情報を検索します。

したがって、先に進む前に、/etc/hostsファイル形式について説明する必要があります。
最初のフィールドはかなり明白で、そのIPアドレスは回線上のすべてのホスト名に解決されるはずです。2番目のフィールドは、そのIPのプライマリホスト名です。残りのフィールドはエイリアスです。

したがって、実行hostname -fすると、まずノード名のIPを解決しようとします。あなたが持っているかに応じて、hosts:で構成されたエントリ/etc/nsswitch.confこの方法は異なります。

  • DNSを使用するように設定している場合/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

価値を得る方法の説明は素晴らしいです!127.0.0.1行の末尾にFQDNがあり、プライマリホスト名としてlocalhostがありました。それらを削除し、FQDNを実際のIPがある行のみに残して、hostname -fがlocalhostを返すという問題を修正しました。
qwertzguy
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.