一部のログでは Localhost が使用され、他のログではホスト名が使用されるのはなぜですか - 異なるサーバー

一部のログでは Localhost が使用され、他のログではホスト名が使用されるのはなぜですか - 異なるサーバー

LDAPログインに関連するものをデバッグしています。Ldap SSH ログインが機能しない - 同じ構成が 20 台以上の他のサーバーで機能しました - Ubuntuまた、一部のサーバーではログに localhost が使用され、他のサーバーではホスト名が使用されていることに気付きました。特にログ ファイルを一元管理する場合は、ホスト名を使用するのが最も理にかなっているようです。

これはどのように設定されているのでしょうか? ホスト名を使用するのがデフォルトではないのはなぜでしょうか? ちょっと気になったのですが...

例:

Oct 29 11:23:56 daily sshd[20625]: pam_unix(sshd:session): session opened for user LDAPUSERNAME by (uid=0)

または

Oct 29 10:56:36 localhost sshd[2560]: pam_unix(sshd:auth): check pass; user unknown

アップデート:

user@qa-ops:~$ hostname
qa-ops
user@daily:~$ hostname
daily.domain.com

おそらく、Daily がホスト名に完全なドメイン名を持っていることに関係しているのでしょうか? 私は常に、/etc/hostname はホスト名の完全な hostname.domain.com などではなく、ホスト名の短い部分であるべきだと考えていました。

答え1

https://wiki.archlinux.org/index.php/rsyslog#ホスト名の設定

Rsyslog は、glibc ルーチン gethostname() または gethostbyname() を使用して、ローカル マシンのホスト名を決定します。BIND または NIS を使用していない場合は、gethostname() または gethostbyname() ルーチンは、/etc/hosts完全修飾ドメイン名 (FQDN) の内容をチェックします。

具体的には、localhostで IP のエントリが最初にある場合/etc/hosts、それが優先されます。

( がの行filesの最初の値であると仮定します。または、ホスト名が DNS を使用して解決できないと仮定します)。hosts:/etc/nsswitch.conf


Arch Wiki ページでは次のように説明されています:

hostname --fqdn を実行すると、ローカル マシンの現在設定されている FQDN を確認できます。hostname --short の出力は、ログ メッセージを書き込むときに rsyslog によって使用されます。ログに完全なホスト名を含める場合は、ファイルの先頭に $PreserveFQDN を追加する必要があります (ファイルに書き込むディレクティブを使用する前に)。これは、rsyslog が設定ファイルを読み取り、その場で適用してから、後続の行を読み取るためです。

/etc/hosts ファイルには、FQDN を IP アドレスにマッピングし、エイリアスを FQDN にマッピングする行が多数含まれています。以下の /etc/hosts ファイルの例を参照してください。

/etc/ホスト

#<ip-address> <hostname.domain.org>   <hostname>
#<ip-address>      <actual FQDN>                       <aliases>
127.0.0.1 localhost.localdomain somehost.localdomain  localhost somehost
::1               localhost.localdomain somehost.localdomain  localhost somehost

localhost.localdomain は IP アドレスに続く最初の項目なので、gethostbyname() 関数はローカル マシンの FQDN として localhost.localdomain を返します。その後、/var/log/messages ファイルはホスト名として localhost を使用します。

somehost をホスト名として使用するには、somehost.localdomain を最初の項目に移動します。

/etc/ホスト

#<ip-address> <hostname.domain.org>                           <hostname>
#<ip-address>      <actual FQDN>                                              <aliases>
127.0.0.1 somehost.localdomain localhost.localdomain  localhost somehost
::1               somehost.localdomain localhost.localdomain  localhost somehost

さまざまな状況で、関連情報がどのように/etc/hosts(または DNS から) 選択されるかを正確に判断するのは難しいかもしれません。ソース コードをもう一度読んでみると、システム ホスト名 (コマンドの出力) を FQDN にrsyslog解決しようとしていると思います。hostname

これは、上記の「gethostnameまたはgethostbyname」と書かれているところを、実際には「gethostnameそして「gethostbyname」です。したがって、これらの手順はおそらく改善される可能性がありますが、少なくとも正しい場所を指し示しています。

非常に似た質問がrsyslog-users メーリングリスト

関連情報