服務器的主機名是一種可供人們方便識别和交流的可讀的字符串,它應該是可以大家熟悉而簡潔明确的名稱而不是一串數字或無意義的通用名稱(比如localhost,Server等)。通常,主機名是初始安裝時候就應該設置好(好的公司都會有規範的主機命名規範),但是由于業務變動或者其他原因,往往需要後期對其進行修改。在Linux上,設置主機名的方法很多,本文蟲蟲就給大家來介紹這些方法。
概述 由于曆史延續等的原因主機名往往包括兩方面的意義,主機管理員(筆記本電腦的所有者或服務器的root用戶)設置的和網絡方面(取決于協議和設置)。如果不能澄清這兩方面意義上的區别可能會導緻混亂。在使用DNS出現以前,必須通過在/etc/hosts文件中本地定義網絡上的主機。如果網絡上有31台主機,添加完物理機器後,還必須同步修改31台主機的/etc/hosts文件以顯示各自每正确IP地址和對應的主機名。這種方法限制太死,沒有靈活性和可擴展性,所以後來又發明了DNS,以應對現代互聯網這樣的大型網絡結構。所以,主機名的概念很大程度上從本機抽象,并交由網絡DNS來管理。
hostnamectl Linux下有三種主機名,臨時主機名、靜态主機名和優雅主機名:
臨時(transient):從網絡配置獲取(DNS,DHCP)并臨時分配的主機名。
靜态(static):由内核boot初始化時的主機名。
優雅(pretty):由用戶設置展示的主機名,該主機名設置沒有限制可以使用任何字符。
臨時主機名可以根據需要進行更改,以避免網絡中的名稱沖突。例如,你要設置主機名為chongchong,但網絡上已經存在其他主機已經使用這個名字,則你網絡主機名将變為Chongchong-1。
靜态和優雅的主機名是在本地設置,用于本地計算機上發生的活動,主要是為了方便用戶識别和交流。
systemd附帶的hostnamectl命令可以修改三種主機名:
在不帶任何參數的情況下調用hostnamectl會返回靜态主機名和優雅主機名,以及一些系統信息:
hostnamectl
設置優雅主機名和靜态主機名:
sudo hostnamectl set-hostname --pretty Web開發測試環境
sudo hostnamectl set-hostname --static Chongchong-test-1
hostnamectl
GNOME桌面設置 如果你使用的是Linux桌面,則可以在圖形應用程序中設置靜态主機名和優雅主機名,比如使用GNOME設置。
打開GNOME桌面左上角的活動菜單。在搜索字段中輸入Settings,或單擊左側停靠欄上的顯示應用程序圖标,然後在應用程序圖标中找到設置,如下所示:
在彈出設置窗口中設置Device name:
hostnamectl
Static hostname:chongchong-test
Pretty hostname: Chongchongs test
...
hostname util-linux軟件包中的hostname命令是用于查詢和設置臨時主機名的簡單工具。這也是大家熟識的,常用的修改主機名的方法。
要查詢當前的主機名,使用不帶參數的hostname命令:
hostname
cc
sudo hostname TT
hostnamectl
Static hostname: test
Pretty hostname: 蟲蟲測試機
Transient hostname: TT
Cockpit 紅帽系的Linux操作系統有一個 Cockpit的Web控制台應用程序,用于監視和配置本地和遠程計算機。通過Cockpit應用,我們可以更改自己的計算機或你管理的主機的靜态主機名。
首先,安裝并啟用Cockpit:
sudo yum install cockpit
啟動cockpid服務:
sudo systemctl enable -now cockpit
登陸後,在Web控制台中,單擊左列中的systm選項卡。單擊主機名條目,然後編輯優雅主機名和真實主機名(靜态主機名):
hostnamectl
Static hostname: vps
Pretty hostname: chongchong test web console computer
...
nmcli 更改靜态主機名的另一種方法是通過網絡管理器nmcli的命令行工具:
sudo nmcli general hostname chongchong
hostnamectl
Static hostname: chongchong
Pretty hostname: chongchong test
Transient hostname: chongchong-test
…
sysctl sysctl命令可以在Linux運行時配置内核參數。計算機的臨時主機名是内核參數,因此,可以使用以下命令以修改内核實時參數方式修改主機名:
sudo sysctl kernel.hostname = cc
hostnamectl
Static hostname: chongchong
Pretty hostname: chongchong test
Transient hostname: cc
...
/etc/hostname 可以通過配置/etc/hostname手動設置靜态主機名,這應該是大家熟識的修改主機名的方法。默認情況下,該文件僅包含一行。如果使用OS默認設置,則該行可能顯示為localhost.localdomain。如果使用hostnamectl更改過主機名,那麼此文件顯示修改過的主機名
一般建議不要手動編輯此文件,因為隻修改該文件,不會像hostnamectl應用那樣實時同步更新所有其他主機名設置,需要重啟系統該設置才生效。例如:
sudo echo test/etc/hostname
關于/etc/hosts 盡管/etc/hosts文件還被很多應用程序和協議使用,但它基本上是曆史遺留的慣例,常用于為主機創建快捷方式或者自定義DNS本地解析的很有用的方法。也可以使用它來設置主機名,但是通常情況下,隻是在IP地址127.0.0.1(主機網絡環回地址)上為localhost創建别名。
比如,如果修改/etc/hosts默認條目為:
cat /etc/hosts
127.0.0.1 chongchong chongchong.localdomain chongchong.localdomain4
::1 chongchong chongchong.localdomain chongchong.localdomain6
ping -c 1 chongchong
PING chongchong(chongchong (::1)) 56 data bytes 64 bytes from chongchong (::1): icmp_seq=1 ttl=64 time=0.181 ms
...
而此時的主機名,基本上都沒有變化:
hostnamectl
Static hostname: test
Pretty hostname: 蟲蟲測試機
Transient hostname: TT
總結 本文中我們介紹多種修改主機名的方法。其中最方便最好用當屬systemd自帶的hostnamectl工具了,大家比較常用的方法有hostname命令和設置/etc/hostname配合的方法。還有其他幾種方法是大家比較少見的方法,如果你還有其他文中沒有提到的方法,可以在此共享給大家。
,
更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!