hostname和/etc/hosts的區(qū)別
很多人一提到更改hostname首先就想到修改/etc/hosts文件,認(rèn)為hostname的配置文件就是/etc/hosts。其實(shí)不是的。hosts文件的作用相當(dāng)于DNS,提供IP地址hostname的對應(yīng)。早期的互聯(lián)網(wǎng)計(jì)算機(jī)少,單機(jī)hosts文件里足夠存放所有聯(lián)網(wǎng)計(jì)算機(jī)。不過隨著互聯(lián)網(wǎng)的發(fā)展,這就遠(yuǎn)遠(yuǎn)不夠了。于是就出現(xiàn)了分布式的DNS
系統(tǒng)。由DNS服務(wù)器來提供類似的IP地址到域名的對應(yīng)。
Linux系統(tǒng)在向DNS服務(wù)器發(fā)出域名解析請求之前會查詢/etc/hosts文件,如果里面有相應(yīng)的記錄,就會使用hosts里面的記錄。由此,/etc/hosts于設(shè)置hostname是沒直接關(guān)系的,僅僅當(dāng)你要在本機(jī)上用新的hostname來映射自己的IP時(shí)候才會用到/etc/hosts文件。兩者沒有必然的聯(lián)系。redhat的hostname的配置文件是/etc/sysconfig/network.
www.
/etc/hosts內(nèi)容摘錄如下:
# Do not remove the following line, or various programs
# that require network functionality will fail.
192.168.1.102 localhost.localdomain localhost
127.0.0.1 localhost.localdomain localhost
::1 localhost6.localdomain6 localhost6
對以上內(nèi)容的解釋
作用:hosts 文件是用來把主機(jī)名字映射到IP地址的方法,這種方法比較簡單。但這種映射只是本地映射,也就是說每臺機(jī)器都是獨(dú)立的,所有的計(jì)算機(jī)都不能相互通過hostname來訪問。
格式: www.
一般情況下hosts的內(nèi)容關(guān)于主機(jī)名(hostname)的定義,每行為一個(gè)主機(jī),每行由三部份組成,每個(gè)部份由空格隔開。其中#號開頭的行做說明,不被系統(tǒng)解釋。
第一部份:網(wǎng)絡(luò)IP地址;
第二部份:主機(jī)名.域名,注意主機(jī)名和域名之間有個(gè)半角的點(diǎn),比如 localhost.localdomain
第二部份:主機(jī)名(主機(jī)名別名) ,其實(shí)就是主機(jī)名;
注釋:
1)127.0.0.1 是回環(huán)地址,比如我們不想讓局域網(wǎng)的其它機(jī)器看到我們測試的網(wǎng)絡(luò)程序,就可以用回環(huán)地址來測試。
2)為什么需要定義域名呢?其實(shí)理解也簡單,比如我們有三臺主機(jī),每臺做不同的事,一臺做MAIL服務(wù)器,一臺做FTP服務(wù)器,一臺做SMB服務(wù)器,所以我們就可以這樣來設(shè)計(jì)hostname; www.
127.0.0.1 localhost.localdomain localhost
192.168.1.2 ftp
192.168.1.3 mail.localdomain mail
192.168.1.4 smb.localdomin smb
把這上面這個(gè)配置文件的內(nèi)容分別寫入每臺機(jī)器的/etc/hosts內(nèi)容中,這樣這三臺局域網(wǎng)的機(jī)器就可以通過hostname來訪問了。也就是,在局域網(wǎng)中,主機(jī)名也是可以解析到IP上的,相當(dāng)于DNS域名解析。
對于主機(jī)名的修改有兩種方式:hostname和/etc/sysconfig/network
[sql]
[root@think ~]# hostname
thin www.
[root@think ~]# hostname think
[root@think ~]# hostname
think
通過hostname 這個(gè)kernel變量來設(shè)置主機(jī)名只是臨時(shí)的,下次重啟系統(tǒng)時(shí),此主機(jī)名將不會存在.hostname也可用于顯示:hostname -i。如果要永久修改RedHat hostname,就修改/etc/sysconfig/network文件,將里面的HOSTNAME這一行修改成HOSTNAME=NEWNAME,其中NEWNAME就是你要設(shè)置的hostname。