如何在 Linux 中可靠地控制主機名稱?

如何在 Linux 中可靠地控制主機名稱?

我試圖在 dhcp AP 關聯期間確定和控制實際主機名稱。

對 /etc/hostname 檔案的變更會破壞 sudo。

對journalctl -u NetworkManager 的檢查顯示網路管理器始終將自身設定為上述文件中的值。 Dmesg 關聯日誌沒有提及主機名稱。

根據man NetworkManager.conf,Nm 曾經包含一個主機名選項,允許在設定檔中為每個連接設定主機名,但這已被廢棄(出於某種原因,這意味著也許有更明顯的方法來實現相同的功能)。

主機名稱選項也出現在 dhclient.conf 中,與 NetworkManager.conf 選項非常相似;但網路管理員仍然顯示使用 hostnamed 將主機名稱設定為 /etc/hostname 中的值,無論 dhclient.conf 項目為何:

NetworkManager[9405]:[1595351700.9848] settings: hostname: using hostnamed
NetworkManager[9405]: <info>  [1595351700.9849] settings: hostname changed from (none) to "debian"

這似乎是一個安全基礎,至少如果可以在 AP 關聯日誌中嗅探或檢查主機名稱的話。

dhcp 協會真正提供的價值是什麼?

答案1

也許你一直看錯這個問題了。如果您只想要一個主機名,那麼您應該能夠在 /etc/hostname 中更改它,並且其他所有內容都應該圍繞它進行。

我注意到有時 sudo 在更改主機名稱後會抱怨,因為它無法找到新的主機名稱。我已將主機名稱新增至 /etc/hosts 中,這已經解決了問題。

您可以透過執行將 HOSTNAME 新增至 /etc/hosts echo "127.0.0.1 HOSTNAME" >> /etc/hosts(如果需要,請不要忘記 sudo)。之後,我就沒有遇到 sudo 問題,並且 /etc/hostname 中的主機名稱用於網絡,如 dhclient 等。

希望這有助於解決您的問題。

答案2

答案似乎是正確的。主機名稱可以使用hosts中的頂部項目進行更改,讀取127.0.0.1主機名稱debian,更改為主機名稱[name],而無需破壞sudo。

$ sudo journalctl -u NetworkManager | grep hostname
NetworkManager[5592]: <info>  [1595532318.9762] settings: hostname: using hostnamed
NetworkManager[5592]: <info>  [1595532318.9763] settings: hostname changed from (none) to "debian"
NetworkManager[7887]: <info>  [1595538936.1117] settings: hostname: using hostnamed
NetworkManager[7887]: <info>  [1595538936.1117] settings: hostname changed from (none) to "vegetables"

此外,很明顯,主機名稱已記錄在本地無線網路上,並且作業系統顯然已解決:

https://documentation.meraki.com/MR/Monitoring_and_Reporting/Hostname_Visibility

相關內容