我正在調試與 LDAP 登入相關的內容,Ldap SSH 登入不起作用 - 相同的配置在 20 多個其他伺服器上工作 - Ubuntu我注意到在某些伺服器中,日誌使用本機主機,而在其他伺服器中,日誌使用主機名稱。擁有主機名稱似乎最有意義,特別是如果我們要集中日誌檔案的話。
這是如何配置的?為什麼不預設使用主機名稱?只是有點讓我好奇......
例 :
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#Configure_Hostname
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。 rsyslog 在寫入日誌訊息時將使用 hostname --short 的輸出。如果您希望在日誌中包含完整的主機名,則需要將 $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() 函數將傳回 localhost.localdomain 作為本機的 FQDN。然後 /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)中選擇相關資訊。再次閱讀原始程式碼,我認為rsyslog
嘗試將系統主機名稱(hostname
命令的輸出)解析為 FQDN。
我認為這意味著上面說“gethostname 或 gethostbyname”的地方,它實際上應該說“gethostname和gethostbyname」。所以這些說明可能可以改進,但它們至少為您指出了正確的位置。
網路上也有人問了一個非常相似的問題rsyslog-用戶郵件列表。