摘要:本文是關於Linux操做系統主機名(hostname)的文檔,對主要配置文件/etc/hosts進行簡要的說明 ;另外對基配具工具hostname也進行了舉例說明; 歡迎高手斧正,謝謝;
目錄
一、 什麼是主機名;
2. 主機名配置文件;
2.1 主機名配置文件 /etc/hosts解說;
2.2 主機名(hostname)和域名(Domain)的區別;
2.3 局域網的機器,不能經過主機名互訪的緣由;
三、主機名修改工具 hostname;
四、本文未盡事宜;
五、關於本文;
六、更新日誌;
七、參考文檔;
八、相關文檔;
++++++++++++++++++++++++++++++++++++++++
正文
++++++++++++++++++++++++++++++++++++++++
一、 什麼是主機名;
不管在局域網仍是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是爲外網服務的,那就另說了,不作也得作。對不對?
三、主機名修改工具 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
四、本文未盡事宜;
有時咱們在登入桌面時,會提示找不到hostname ,這時您要作的是修改/etc/hosts,爲您的機器添加一個主機名;先用 ifconfig -a 來查看主機的IP地址,而後把你主機的IP地址,指定主機名;
五、關於本文;
好多天沒有寫文檔了,不是由於我沒有時間,而是測試了一些我沒有用過的硬件。想寫幾篇硬件文檔,但因爲條件限制,硬件文檔沒寫出來,還把原本計劃好的網絡基礎系統文件給耽隔下來。這些天一直在想我這樣作是否是失誤了?事情已通過去,雖然努力未能成功,但並不能說我沒有努力,只是結果沒有獲得我所須要的。看來作任何事都不是一路順風的。只要支持下來,就可能出要咱們所想所要的。
今天又開始寫網絡文檔了,先寫一篇小一點的練練手,原本計劃了一篇比較大的網絡基礎文檔,一個本身的規劃就感受無從下手,內容太多,你們也讀着累,因此把大的文檔拆分紅小的文檔,這樣寫起來不累,並且讀着更不累。若是想知道更詳細的,我會把這些小文檔再組合起來,這樣就能成爲一個系列文檔了。
看來寫文檔規劃很重要,請你們給點建議或意見吧,謝謝;
本文是關於主機名的文檔,寫的有點簡單, 有些地方寫的太含乎,還請高手多多指點,謝謝;
—— 北南南北 at LinuxSir.Org
六、更新日誌;
2006-07-02 v0.1b 正文初稿完成 ;
七、參考文檔;
八、相關文檔;
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 | 回覆 我暈了, 看完前面的文章好像還明白點了,結果繼續看下來徹底不明白了.