歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux基礎 >> Linux技術 >> Linux操作系統主機名(hostname)簡介

Linux操作系統主機名(hostname)簡介

日期:2017/3/1 18:11:12   编辑:Linux技術
摘要:本文是關於Linux操作系統主機名(hostname)的文檔,對主要配置文件/etc/hosts進行簡要的說明 ;另外對基配具工具hostname也進行了舉例說明; 歡迎高手斧正,謝謝;
目錄
1、 什麼是主機名;
2. 主機名配置文件;
2.1 主機名配置文件 /etc/hosts解說;
2.2 主機名(hostname)和域名(Domain)的區別;
2.3 局域網的機器,不能通過主機名互訪的原因;
3、主機名修改工具 hostname;
4、本文未盡事宜;
5、關於本文;
6、更新日志;
7、參考文檔;
8、相關文檔;
++++++++++++++++++++++++++++++++++++++++
正文
++++++++++++++++++++++++++++++++++++++++
1、 什麼是主機名;
無論在局域網還是INTERNET上,每台主機都有一個IP地址,是為了區分此台主機和彼台主機,也就是說IP地址就是主機的門牌號。但IP地址不方便記憶,所以又有了域名。域名只是在公網(INtERNET)中存在(以實驗為目的的局域網域網實驗性除外),每個域名都對應一個IP地址,但一個IP地址可有對應多個域名。域名類型 linuxsir.org 這樣的;
主機名是用於什麼的呢?在一個局域網中,每台機器都有一個主機名,用於主機與主機之間的便於區分,就可以為每台機器設置主機名,以便於以容易記憶的方法來相互訪問。比如我們在局域網中可以為根據每台機器的功用來為其命名。
主機名相關的配置文件:/etc/hosts;
2. 主機名配置文件;
主機名的配置文件大多是/etc/hosts ;
hosts - The static table lookup for host name(主機名查詢靜態表);
由於 Linux 發行版本眾多,與主機名相關的配置文件有時也有所不同。現在我們說說常見版本的主機名配置文件;
2.1 主機名配置文件 /etc/hosts解說;
Fedora/Redhat 或以Fedora/Redhat為基礎打包的發行版,主機名配置文件是 /etc/hosts
Debian或以Debian為基礎打包的發行版,主機名配置文件是 /etc/hostname 和/etc/hosts
Slackware的主機名配置文件是 /etc/hosts
那我們來讀讀 /etc/hosts的內容,看這個文件是用來做什麼的。hosts 配置文件是用來把主機名字映射到IP地址的方法,這種方法比較簡單。但這種映射只是本地機的映射,也就是說每台機器都是獨立的,所有的計算機都不能相互通過hostname來訪問。
注:在debian 中還有一個/etc/hostname的文件,這個文件就是直接把本地主機名寫進去就行了,但要和 /etc/hosts中的本地主機名保持一致。
/etc/hosts 的內容一般有如下類似內容:
127.0.0.1 localhost.localdomain localhost
192.168.1.195 debian.localdomain debian
注:
一般情況下hosts的內容關於主機名(hostname)的定義,每行為一個主機,每行由三部份組成,每個部份由空格隔開。其中#號開頭的行做說明,不被系統解釋。
第一部份:網絡IP地址;
第二部份:主機名.域名,注意主機名和域名之間有個半角的點,比如 localhost.localdomain
第二部份:主機名(主機名別名) ,其實就是主機名;
當然每行也可以是兩部份,就是主機IP地址和主機名;比如 192.168.1.195 debian
127.0.0.1 是回環地址,比如我們不想讓局域網的其它機器看到我們測試的網絡程序,就可以用回環地址來測試。
為什麼需要定義域名呢?其實理解也簡單,比如我們有三台主機,每台做不同的事,一台做MAIL服務器,一台做FTP服務器,一台做SMB服務器,所以我們就可以這樣來設計hostname;
127.0.0.1 localhost.localdomain localhost
192.168.1.2 ftp.localdomain ftp
192.168.1.3 mail.localdomain mail
192.168.1.4 smb.localdomin smb
把這上面這個配置文件的內容分別寫入每台機器的/etc/hosts內容中,這樣這三台局域網的機器就可以通過hostname來訪問了。
2.2 主機名(hostname)和域名(Domain)的區別;
主機名就機器本身的名字,域名是用來解析到IP的。但值得一說的是在局域網中,主機名也是可以解析到IP上的;比如我們前面所說舉的例子;
2.3 局域網的機器,不能通過主機名互訪的原因;
有的弟兄可能會說,我的hostname彼此不能互訪,其實這也問題也簡單,我們前面已經提到了一個簡單的解決辦法。就是要讓局域網中的所有主機都有一個通用的,並且包含所有主機的/etc/hosts文件;
另一個是做解決辦法是做局域網DNS服務器,如果您的主機特別少,就用前面所說的簡單方法就行;如何做DNS服務器,我將在以後的文檔中專題介紹;不過我值得一提的是做任何服務器都是以效率優先的原則為基礎。比如我們在局域網中兩台機器,我們還有必要做DNS服務器嗎?無論怎麼解決,最終的都是用最有效率的辦法解決問題;我們不能說明DNS多高級。如果DNS是為外網服務的,那就另說了,不做也得做。對不對?
3、主機名修改工具 hostname;
其實主機名的修改也有專用工具,就是hostname ;我認為如果用這個工具來修改主機名,不如直接修改 /etc/hosts 來的方便;您可以查看 hosname --help或 man hostname的幫助 。在這裡我們只說簡單的用法;
hostname 工具是用來顯示和設置系統主機名,看下面的洋文;
hostname - show or set the system’s host name
舉例解說:
* 顯示主機名:
[root@linuxsir01 ~]# hostname
linuxsir01
此主機的主機名是linuxsir01,不加參數是用來顯示當前操作的主機的主機名;
* 臨時設置主機名:
我們可以用 hostname 後接主機名,這樣就可以設置當前操作的主機的主機名,比如我們想把主機名設置為linuxsir02;
[root@linuxsir01 ~]# hostname linuxsir02
[root@linuxsir01 ~]# hostname 注:顯示主機名
linuxsir02
通過hostname 工具來設置主機名只是臨時的,下次重啟系統時,此主機名將不會存在;所以您想修改主機名,想一直有效的,還是用前面所說修改主機名配置文件 /etc/hosts;
* 顯示主機IP:
顯示當前主機名的IP,可以用-i參數;
[root@linuxsir01 ~]# hostname -i
192.168.1.3
4、本文未盡事宜;
有時我們在登入桌面時,會提示找不到hostname ,這時您要做的是修改/etc/hosts,為您的機器添加一個主機名;先用 ifconfig -a 來查看主機的IP地址,然後把你主機的IP地址,指定主機名;
5、關於本文;
好多天沒有寫文檔了,不是因為我沒有時間,而是測試了一些我沒有用過的硬件。想寫幾篇硬件文檔,但由於條件限制,硬件文檔沒寫出來,還把本來計劃好的網絡基礎系統文件給耽隔下來。這些天一直在想我這樣做是不是失誤了?事情已經過去,雖然努力未能成功,但並不能說我沒有努力,只是結果沒有得到我所需要的。看來做任何事都不是一帆風順的。只要支持下來,就可能出要我們所想所要的。
今天又開始寫網絡文檔了,先寫一篇小一點的練練手,本來計劃了一篇比較大的網絡基礎文檔,一個自己的規劃就感覺無從下手,內容太多,大家也讀著累,所以把大的文檔拆分成小的文檔,這樣寫起來不累,而且讀著更不累。如果想知道更詳細的,我會把這些小文檔再組合起來,這樣就能成為一個系列文檔了。
看來寫文檔規劃很重要,請大家給點建議或意見吧,謝謝;
本文是關於主機名的文檔,寫的有點簡單, 有些地方寫的太含乎,還請高手多多指點,謝謝;
—— 北南南北 at LinuxSir.Org
6、更新日志;
2006-07-02 v0.1b 正文初稿完成 ;
7、參考文檔;
8、相關文檔;
By 北南南北 at 2006/07/02 - 12:53 | 網絡基礎 | Linux | 基礎知識 | 參與評論 | 14223 閱讀
菜鳥也來問個問題...
剛碰到一個問題...好象是與這個話題相關的..不過我實在是網絡和Linux中新手中的新手,不要笑我. :(
我用的是Ubuntu 6-當前的版本.
我們公司內部的機器的域名是:hfwbx.hf.webex.com
而我機器名字是: hut-work.
在裝Ubuntu的時候我的機器名默認是hut-desktop (hut是我輸入的).
然後我到網絡設置裡面將我的用戶名和域改成 hut-work 和 hfwbx.hf.webex.com
此時:
PING hut-work.hfwbx.hf.webex.com (172.16.202.42) 56(84) bytes of data.
From 172.16.202.45 icmp_seq=1 Destination Host Unreachable
From 172.16.202.45 icmp_seq=2 Destination Host Unreachable
From 172.16.202.45 icmp_seq=3 Destination Host Unreachable
172.16.202.42是我以前機器的IP地址.
而當前我的IP地址是:172.16.202.45.
請問如何ping hut-work能指向我期望的當前的IP地址呢? [172.16.202.45]?
謝謝.
By Anonymous at 周一, 2007/03/19 - 16:55 | 回復
看過南北兄寫的好多文章,受益非淺,在此謝過
看過南北兄寫的好多文章,受益非淺,在此謝過
By Anonymous at 周五, 2007/01/26 - 11:12 | 回復
修改一下原文的錯誤吧,北南兄別見怪,呵呵
以我所用的ubuntu系統為例。
首先說一下hosts文件,這個文件每行分3個域:
IP 主機名 別名
原文提到別名是主機名,實際是不對的,別名只是為了方便使用,對它的修改是不會影響到之際名的。真正影響主機名的是hostname(在Debian系統是這樣的)。這裡特別提醒大家注意的是,如果在hostname中修改了主機名,一定要在hosts裡加入這樣的行:
127.0.0.1 localhost 你修改的主機名
或者這樣
127.0.0.1 你修改的主機名
因為在linux裡很多命令都會用到gethostbyname()這個函數,如果你改了主機名而又沒有在hosts裡更新,那麼這個命令是無法執行的。
ps:在FC系統中,配置文件與Debian不一樣,它的hostname設置是在/etc/sysconfig/network裡
By Anonymous at 周一, 2006/08/21 - 21:07 | 回復
謝謝
兄弟客氣了。哈哈。我寫網絡的時候,本來就是讓大家批著看的。
兄弟如果有時間最好能修訂一下全文,先謝謝 。。。
修改完成後,請發到我的信箱。
北南 呈上
By Anonymous at 周三, 2006/08/23 - 10:05 | 回復
修改主機名三部曲
1. 變更當前主機名
兩種方法: echo new-hostname > /proc/sys/kernel/hostname
或者: hostname new-hostname
2. 修改配置文件,使得下次重啟的時候,使用新的主機名
編輯文件: /etc/sysconfig/network
修改: HOSTNAME=new-hostname.domainname
3. 配置本機的域名解析文件,使得本機的應用程序能夠解析新的主機名
編輯文件: /etc/hosts
修改: xxx.xxx.xxx.xxx new-hostname.domainname new-hostname
(這裡的xxx代表本機的網絡地址,也可以是環回地址127.0.0.1)
By ahumdk at 周五, 2006/08/11 - 11:49 | 回復
錯了
在host裡面改是不行了,那個文件只是用來做dns解析用的,系統啟動的時候不會讀取裡面的東西,要在/etc/sysconfig/network裡面設置.下面的有反映說啟動不了了,其實等等就啟動了,只是裡面一個服務遇到了問題,postfix遇到問題了,說找不到localhost了.在host改後啟動後系統的名字是沒有便的,只有在上面的那個路徑下面文件該後才會正確顯示,在windows底下ping 自己的名字是能ping通的,而linux底下不知道為什麼不行,所以還要在host底下加一條新的名字解析.
By Anonymous at 周日, 2006/08/06 - 23:48 | 回復
個人覺得/etc/hosts並不是設置主機名的
我個人覺得/etc/hosts並不是設置主機名的,而是相當於DNS的作用的,這個東西和主機名應該是不同的
主機名是用來標志某一台主機的,但是未必是給別人機器使用的,而是給這台機器自身用的,比如在登錄的時候的提示,在Shell的提示符上,都可以顯示出來,這樣的話,使用者可以知道自己用的是哪台機器。而這台機器也未必需要在網絡上
而/etc/hosts卻是設定IP和對應的名稱的關系,這種關系甚至是隨意的,比如主機名可以叫A(如果設置好了的話,登錄和Shell的提示符上會顯示),但是在/etc/hosts中我可以給它設定對應於C,或者www.sohu.com,在我的機器上,就可以用C,或者是www.sohu.com這樣的名稱來訪問它,甚至兩個同時設置,但是主機名仍然應該是一個
可以這樣考慮:
我是在B主機上,並且在B主機上的/etc/hosts中設定C對應A主機的IP,在A機上開了sshd,那麼我可以在B上用類似ssh C這樣的命令來訪問A機,但是在A的登錄的提示上出現的應該還是A login:這樣的提示,而不是C login,在Shell的提示符中顯示的,應該是[user@A ~]$這樣的提示(如果設置的是顯示主機名的話),我覺得主機名的作用應該是在這個地方,確定所登錄的機器,免得誤操作或者用錯用戶名登錄(也許使用者在兩台不同的機器上擁有兩個不同的賬號)
還有另一個方法可以說明這個問題,比如你的/etc/hosts裡面設置的是A對應A的IP,那麼用hostname修改了主機名,比如叫test,之後再ping的時候,ping test是不起作用的,還是只能ping A,這說明ping的地方用的名稱或者其它網絡訪問時用的名稱(也就是由/etc/hosts設定的名稱)和主機名是不同的
所以我覺得,主機名和/etc/hosts沒什麼關系,只不過如果/etc/hosts中的IP和主機名不對應的話,就不能用主機名來訪問這台主機了,但是自己的機器的網絡操作並不是很多,所以也沒什麼大關系
所以手工設置主機名,應該改的是另外的一個配置文件(比如說是/etc/sysconfig/network,或者是其它的什麼),修改了之後“最好”把/etc/hosts也對應修改一下
By laneast at 周日, 2006/07/30 - 14:06 | 回復
有些道理
在本機上面設置了DNS後呢,一般訪問一個"名字"的時候,流程大致是這樣的,
command->Local host name->hosts files->dns server->wins->lmhost.windows地下這樣解析的順序,linux底下也一頁,既然第二步是解析Local host name,而第三步才是到hosts.想必倆個不是同類在一起的.windows裡面,hostname可以是多樣的,而host裡面的對應的,一般只有一個地址,那就是:127.0.0.1 localhost.host在以前的網絡中就是現在的dns作用一樣,後來隨著網絡的發展,它的缺點不適應了.所以現在host作用仍然是dns作用的.也不知道linux是不是把hostname歸結到host裡面了,不太清楚.呵呵.因為偶不知道在哪兒該hostname.不過我們假設先.假設hostname和host文件是倆馬事兒,看能不能解析,改變host文件後,我們測試新的的名字,肯定是能用的,因為計算機會到host找對照表一旦發現名稱對應了.那肯定是能夠訪問了.呵呵,所以還待有人幫我回答.到底是怎麼說才對
By Anonymous at 周日, 2006/08/06 - 23:07 | 回復
hosts在windows裡面只是為了解析域名用的
hosts在windows裡面只是為了解析域名用的,不知道在linux底下是不是有所歸在一起了?就是在系統啟動的時候加載host裡面的名字使得它成為計算機的名字呢?
By Anonymous (沒有被驗證) at 周日, 2006/08/06 - 23:28 | 回復
修改hostname出現的問題
昨天修改了一下hostname,結果導致今天不能登陸網絡。我使用的是DHCP + FC5。通過網絡配置工具,我已經正確建立了以太網連接和相應的硬件,但是卻不能激活。使用service network restart會出現如下的信息:
正在關閉接口 eth0: [確定]
關閉環回借口: [確定]
禁用 Ipv4 包傳送 [確定]
彈出環回接口: [確定]
彈出界面 eth0: [確定]
正在決定 eth0 的IP信息 ... 完成
RTNETLINK answers: No such device //問題所在呀
但是我通過lsmod命令確實看到了我的網絡驅動模塊b44.ko被加載了。而且通過lspci命令也可以看到檢測出來的網卡。
不知道怎麼處理,如知請回呀!!!
By Anonymous at 周二, 2006/08/01 - 21:46 | 回復
兩個第二部分?
第二部份:主機名.域名,注意主機名和域名之間有個半角的點,比如 localhost.localdomain
第二部份:主機名(主機名別名) ,其實就是主機名;
兩個第二部分?筆誤吧?
By Anonymous at 周三, 2006/07/19 - 08:18 | 回復
辛苦了
但是中文是不是應該好好改改,讀得雲裡霧裡!!!
By Anonymous at 周一, 2006/07/17 - 08:36 | 回復
還是我
只是一個小建議,沒時間就算了,不管怎樣,非常感謝您的辛勤勞動!!!
By Anonymous at 周一, 2006/07/17 - 09:20 | 回復
比如INTERNET網上的主機
比如INTERNET網上的主機,也就是公網上的主機。有時域名就是主機名。
北南兄,我覺得這句也不是太對,就算公網上的主機,域名也不就是主機名,我覺得應該是主機名和域名的總和才是網絡上的真是主機名!
By Anonymous (沒有被驗證) at 周一, 2006/07/10 - 22:36 | 回復
修改主機名不是修改
修改主機名不是修改/etc/hosts文件就可以的了!我測試過,修改/etc/hosts文件根本就不起作用的,應該修改/etc/sysconfig/network
By Anonymous (沒有被驗證) at 周一, 2006/07/10 - 22:31 | 回復
修改主機名不是修改
主機名見/etc/HOSTNAME文件
用hostname修改的是臨時的主機名
By Anonymous at 周五, 2006/09/15 - 22:45 | 回復
如果只修改/etc/hosts內的主機名
在很多時候,如果只修改/etc/hosts內的主機名,會導致下次啟動時出現不能找到主機名的問題,我認為除了修改/etc/hosts還應該修改/etc/sysconfig/network,北南,你覺得呢?
By Anonymous (沒有被驗證) at 周三, 2006/07/05 - 09:32 | 回復
兄弟說的有理,有時是必要的。
我測試過,有時不需要這樣做。兄弟所說的是RH/FC的系統;
比如主機的IP地址是 192.168.1.55 ,回環地址那行幾乎所有的機器都是那樣的。可改一改,也可以不改。
192.168.1.55 mailserver.localdomain mailserver
加上這行,主機名就變成了 mailserver 。我不敢完全確定。我測試過一回,是可以的。
如果 192.168.1.56 這台機器 ,比如他的主機名是 ftpserver。要讓 192.168.1.55能通過主機名來訪問。如果不做DNS的話,就可以修改 /etc/hosts,加入 192.168.1.56這台的主機名。當然也得修改 192.168.1.56這台機器的/etc/hosts;
127.0.0.1 localhost.localdomain localhost
192.168.1.55 mailserver.localdomain mailserver
192.168.1.56 ftpserver.localdomain ftpserver
其實我在本文中少了一個比較重要的東西。比如一台機器是多個IP地址,每個IP地址,就應該認定為是一台主機。主機名可以綁定到IP上。修改了 /etc/hosts之外,也可以在 /etc/sysconfig/network-scripts/ifcfg-ethX 中加入HOSTNAME的項。
By 北南南北 at 周三, 2006/07/05 - 13:53 | 回復
安裝過程中指定hostname
怎樣修改才能達到像在圖形化方式安裝過程中指定hostname的效果????如設hostname為A,,在登錄界面的右下方顯示由默認的localhost.localdomain變為A,,登錄後的shell中,由@localhost ~變為@A ~,,在ping A時的效果與ping localhost的效果相同,,我試過各位的方法,,都沒有成功,請指教。謝謝!!
By lmickie at 周四, 2006/08/10 - 13:25 | 回復
/etc/hosts
/etc/hosts 就不是個存主機名的地方~~
你們認為呢?
在這個文件裡面甚至可以什麼也不寫。
一般只有回環接口。
這只是一個查尋名字到地址的一個文件,完全可以用dns來取代之。
機器的名字是什麼,和這個文件我覺得沒關系。
大家認為呢?
By Anonymous at 周三, 2006/07/05 - 11:15 | 回復
我認為DNS有DNS的好處。hosts有hosts的好處;
如果只是有很少的機器,不妨直接修改hosts。這是極為簡單的。
當然DNS是方便,這是肯定的。我感覺也不能忽略了hosts的用處。對吧?
By 北南南北 at 周三, 2006/07/05 - 13:59 | 回復
討論一下
"主機名就機器本身的名字,域名是用來解析到IP的。"
這句話說的很不確切,域名指的是什麼,作用是什麼?
By Anonymous at 周二, 2006/07/04 - 11:13 | 回復
謝謝,請大家說說吧。
我正在思考中,網絡基礎我只能查看洋文的DOC。能理解的就寫了,不理解的也寫了一點。向大家請教了。。。
感覺HOSTNAME和DOMAINNAME的沒有說的太清楚。
不過有一點我是搞的清楚了。比如INTERNET網上的主機,也就是公網上的主機。有時域名就是主機名。
By 北南南北 at 周三, 2006/07/05 - 14:02 | 回復
有個錯字
第一句:
每台主動都有一個IP地址 應該為 :每台主機都有一個IP地址
By Anonymous at 周日, 2006/07/02 - 22:46 | 回復
不通
但IP地址忘記不方便
應為:
但IP地址不方便記憶.
謝謝你的文章.
By Anonymous at 周一, 2006/07/03 - 11:59 | 回復
已經修正,謝謝。
謝謝樓上的弟兄,極為真誠的。
北南 呈上
By 北南南北 at 周一, 2006/07/03 - 12:49 | 回復
早期internet網使用的是hosts
早期internet網使用的是hosts。由於internet的發展,主機數不斷增加,造成hosts不斷增加,解析困難,維護也不方便,於是出現了DNS來解決這一問題。
By Anonymous (沒有被驗證) at 周六, 2006/07/22 - 11:18 | 回復
我暈了,
看完前面的文章好像還明白點了,結果繼續看下來完全不明白了.
By Anonymous at 周日, 2007/03/04 - 23:14 | 回復
Copyright © Linux教程網 All Rights Reserved