Centos7主機名變成bogon的原因及解決方法

問題描述

虛擬機在設置完靜態IP後,莫名其妙地主機名就變成了bogon,並且問題會穩定復現,就是說每次重啓都會。如下圖所示:

看着不順眼不說,聽說可能還會影響某些服務,如可能導致oracle安裝過程網絡配置出錯等問題,嚇得我趕緊想辦法改回來。

原理分析

查了一些資料,bogon是指那些不該出現在internet路由表的地址。

Linux在初始化系統時,會先判斷主機名,如果主機名是localhostlocalhost.localdomain,則會獲取主機IP地址並執行DNS逆向解析,將解析到的結果賦值給HOSTNAME。問題是,有些DNS服務器,會將私有地址,保留地址這樣不應該出現在網絡上的IP地址解析成bogon

解決方案1(推薦)

值得推薦的方案就是讓本地IP地址解析時不經過DNS服務器,直接使用hosts文件,直接將本機的IP地址解析爲localhost

具體的操作就是在/etc/hosts文件中追加一行:

192.168.196.3 localhost

上面代碼中前半段是自己系統的本地IP地址。

修改後的文件內容如下:

127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.196.3 localhost 

最後重啓電腦即可。

解決方案2

修改主機名,只要主機名不是localhost或者localhost.localdomain,操作系統就不會執行DNS反向解析等操作,問題自然也不會出現。

具體的操作是,修改/etc/sysconfig/network文件中HOSTNAME的值,下面的演示將把hostname修改爲myname:

NETWORKING=yes
HOSTNAME=myname

當然,修改了hostname,也要修改對應的/etc/hosts文件,修改如下:

#127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
127.0.0.1  myname
#::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
::1        myname

然後,重啓系統就行了。

但是,我要說但是了,Centos7以上使用的hostname的定義和修改與之前版本略有不同。可以使用下面的命令

hostnamectl set-hostname myname

同樣的,這個命令也需要手動更新/etc/hosts,方法跟上面的一樣。

最後還是一如既往地重啓系統!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章