Linux

主機名 - 它們是關於什麼的?

  • December 2, 2017

我最近“被迫”執行一些系統管理員工作,雖然這不是我絕對喜歡做的事情,但我一直在閱讀、試驗和學習很多東西。

我無法掌握伺服器配置的一個基本方面 -主機名

例如,在 Ubuntu 中,應該像這樣設置主機名(根據Linode Library):

echo "plato" > /etc/hostname
hostname -F /etc/hostname

文件:/etc/hosts

127.0.0.1        localhost.localdomain        localhost
12.34.56.78      plato.example.com            plato

我假設這plato是一個任意名稱,即plato.example.comFQDN。

現在我的問題是:

  • 它是強制性的嗎?
  • 達到什麼目的?
  • 它在哪裡需要/使用?
  • 為什麼我不能將“localhost”定義為每台機器的主機名?
  • 我必須為plato.example.comFQDN 設置 DNS 條目嗎?
  • 應該plato.example.com用作我的 IP 的反向 DNS 條目嗎?

此外,是否有任何選擇主機名的“最佳實踐”?我見過人們使用希臘字母、行星名稱甚至神話人物……當我們用完字母/行星時會發生什麼?

如果這是一個愚蠢的問題,我很抱歉,但我對網路配置從來沒有太熱情過。

如今,一個系統可能有多個介面,每個介面都有多個地址,每個地址甚至可能有多個與其關聯的 DNS 條目。那麼“系統主機名”是什麼意思呢?

許多應用程序在與其他地方通信時將使用系統主機名作為預設標識符。例如,如果您在中央伺服器上收集 syslog 消息,則這些消息都將使用原始系統的主機名進行標記。在理想情況下,您可能會忽略這一點(因為您不一定要信任客戶端),但預設行為(如果您將所有系統命名為“localhost”)會導致您收到一堆日誌消息將無法與特定係統關聯。

正如其他人所指出的,如果您發現自己遠端訪問多個系統,系統主機名也是一個有用的標識符。如果您有五個視窗連接到名為“localhost”的系統,那麼您將很難保持它們正常。

同樣,我們嘗試使系統主機名與我們用於對系統進行管理訪問的主機名匹配。這有助於在提及系統時避免混淆(在電子郵件、對話、文件等中)。

關於DNS:

您希望為您的應用程序提供正確的正向和反向 DNS 條目以避免混淆。您需要一些轉發條目(名稱 -> ip 地址),以便人們能夠方便地訪問您的應用程序。由於多種原因,反向條目匹配很有用——例如,如果您在日誌中找到相應的 IP 地址,它可以幫助您正確辨識應用程序。

請注意,這裡我說的是“應用程序”而不是“系統”,因為——尤其是對於 Web 伺服器——一個系統上通常有多個 IP 地址,與不同的主機名和服務相關聯。

/etc/hosts隨著您管理越來越多的系統,試圖在文件中快速維護名稱到 ip 的映射變得很困難。本地主機文件很容易與 DNS 不同步,這可能會導致混淆,並且在某些情況下會出現故障(例如,因為某些東西試圖綁定到系統上不再存在的 IP 地址)。

引用自:https://serverfault.com/questions/228102