歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux基礎 >> Linux教程 >> Linux hosts文件詳解+mac主機名被莫名其妙修改

Linux hosts文件詳解+mac主機名被莫名其妙修改

日期:2017/2/28 13:46:40   编辑:Linux教程

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  
Copyright © Linux教程網 All Rights Reserved