問題描述
虛擬機在設置完靜態IP後,莫名其妙地主機名就變成了bogon,並且問題會穩定復現,就是說每次重啓都會。如下圖所示:
看着不順眼不說,聽說可能還會影響某些服務,如可能導致oracle安裝過程網絡配置出錯等問題,嚇得我趕緊想辦法改回來。
原理分析
查了一些資料,bogon是指那些不該出現在internet路由表的地址。
Linux在初始化系統時,會先判斷主機名,如果主機名是localhost或localhost.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,方法跟上面的一樣。
最後還是一如既往地重啓系統!