首頁 > 軟體

Linux hosts檔案詳解+mac主機名被莫名其妙修改

2020-06-16 17:27:18

1、名詞解析

主機名:

  無論是在區域網還是在INTERNET上,每台主機都有一個IP地址,用來區分當前是那一台機器(其實底層是使用機器的實體地址),也就是說IP地址就是一個主機的門牌號,唯一的標示這一台機子。

公網:

  IP地址不方便記憶,所以又有了域名。域名只是在公網(INTERNET)中存在,每個域名對應著一個IP地址,但一個IP地址可以對應多個域名

區域網:

  每台機器都有一個主機名,用於主機與主機之間區別。我們可以為每一台機器設定主機名,便於以容易的方法來互相存取。比如我們在區域網中可以根據每台機的功用來為其命名。

  用途:例如我們可以通過主機名,通過ssh命令遠端得登入別人的電腦。

2、關於/etc/host,主機名和IP組態檔

   Hosts - The static table lookup for host name(主機名查詢靜態表)

用途

  hosts檔案是Linux系統中一個負責IP地址與域名快速解析的檔案,

儲存

  以ASCII格式儲存在“/etc”目錄下,檔名為“hosts”(不同的linux版本,這個組態檔也可能不同。比如Debian的對應檔案是/etc/hostname)。

內容

  hosts檔案包含IP地址和主機名之間的對映,還包括主機名的別名。

作用

  在沒有域名伺服器的情況下,系統上的所有網路程式都通過查詢該檔案來解析對應於某個主機名的IP地址,否則就需要使用DNS服務程式來解決。通常可以將常用的域名和IP地址對映加入到hosts檔案中,實現快速方便的存取。

3、優先順序

   優先順序 : dns快取 > hosts > dns服務

4、設定hosts檔案

  這個檔案可以設定主機ip及對應的主機名,對於伺服器型別的linux系統其作用還是不可忽略的。在區域網或是INTERNET上,每台主機都有一個IP地址,它區分開每台主機,並可以根據ip進行通訊。但IP地址不方便記憶,所以又有了域名。在一個區域網中,每台機器都有一個主機名,用於區分主機,便於相互存取。

  Linux主機名的相關組態檔就是/etc/hosts;這個檔案告訴本主機哪些域名對應那些ip,那些主機名對應哪些ip:

  比如檔案中有這樣的定義

192.168.1.100 linumu100 test100

  假設192.168.1.100是一台網站伺服器,在網頁中輸入http://linumu100或http://test100就會開啟192.168.1.100的網頁。

  通常情況下這個檔案首先記錄了本機的ip和主機名:

127.0.0.1 localhost.localdomain localhost 

  這就是在我們在偵錯web專案的時候,我們明明在瀏覽器的位址列中輸入的是localhost,他會知道我們是本地偵錯,因為他對映到了127.0.0.1(即本機)。

5、組態檔格式說明

  但這種對映只是本地機的對映,也就是說每台機器都是獨立的,只有在hosts檔案中進行了設定才能使用主機名來存取。

  在hosts檔案中,我們會看到類似下面的內容

127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4

127.0.0.1   localhost.localdomain localhost

192.168.1.195  debian.localdomain debian

  一般情況下hosts的內容關於主機名(Hostname)的定義,每行為一個主機,每行由三部份組成,每個部份由空格隔開。其中#號開頭的行做說明(即注釋的作用),不被系統解釋。

 hosts檔案格式:

ip地址 主機名/域名 (主機別名)

  第一部份:網路IP地址;

  第二部份:主機名或域名;

  第三部份:主機名別名;

  當然每行也可以是兩部份,即主機IP地址和主機名;比如 192.168.1.100 linmu100。

主機名(hostname)和域名(Domain)的區別:

  • 主機名通常在區域網內使用,通過hosts檔案,主機名就被解析到對應ip;
  • 域名通常在internet上使用,但如果本機不想使用internet上的域名解析,這時就可以更改hosts檔案,加入自己的域名解析。

6、hosts檔案的用途

6.1 解決遠端登入linux主機過慢問題

  有時用戶端想遠端登入一台linux主機,但每次登入輸入密碼後都會等很長一段時間才會進入,這是因為linux主機在返回資訊時需要解析ip,如果在linux主機的hosts檔案事先加入用戶端的ip地址,這時再從用戶端遠端登入linux就會變很快。

  註:這裡所說的遠端登入不僅僅是ssh,還可能是mysql遠端登入,或是檔案共用的查詢等。

6.2 雙機互連

  當兩台主機只是雙機互連時,這時兩台主機都需要設定自己的ip,同時在對方的hosts檔案裡加入自己的ip和主機名。

 7、修改主機名

其實主機名的修改也有專用工具,就是hostname

hostname - show or set the system’s host name

顯示主機名:

# hostname

zhengcanrui

此主機的主機名是zhengcanrui,不加引數是用來顯示當前主機的主機名;

臨時設定主機名:

# hostname test100

# hostname 註:顯示主機名

test100

通過hostname 工具來設定主機名只是臨時的,下次重新啟動系統時,此主機名將不會存在;

顯示主機IP:

# hostname -i

192.168.1.100

8、遇到的一個mac上面的問題

  有時候會出現你的共用主機名被莫名修改的情況。

  現象:你的主機名變了,變成了一串莫名其妙的數位加字元,我就變成了2015-2016.gz.cvte.com這樣子一個主機名,過一陣子又會變回正常你以前的主機名(坑啊啊。。。。)

  產生的影響:在AirDrop共用裡面找不到你的主機名,  假如你使用了tomcat部署專案,還會報一個奇怪的錯誤,告訴你2015-2016.gz.cvte.com(上面被修改過的主機名)不是一個合法的主機名。(這種問題網上的解決辦法是去hosts檔案你面設定2015-2016.gz.cvte.com 對應的ip是172.0.0.1即可,這樣子是能解決的,已經試過了)

  原因:在同個區域網中有人跟你的(共用)主機名是一樣的,為了同個主機名辨別,會將你的主機變成一個唯一的不重複的主機名,當沒有重名的主機的時候,又會恢復正常的主機名。。。。。。

  徹底解決辦法——》改你的主機名和共用主機名

修改主機名稱

sudo scutil --set HostName water 

修改共用名稱

 sudo scutil --set ComputerName water  

本文永久更新連結地址http://www.linuxidc.com/Linux/2016-11/137526.htm


IT145.com E-mail:sddin#qq.com