xshell 中主机名从localhost变成bogon?

时间:2022-03-14 02:58:57

学过linux的都知道xshell是用来远程登录到虚拟机,xshell中的主机名更改了就是虚拟机中的主机名更改了。刚安装好使用的是默认主机名localhost,后来不知道怎么,在没有人修改的情况下,重启后就变成了bogon。导致我们的数据库等应用无法正常启动。在排除人为修改的原因后,检查了/etc/sysconfig/network等文件,发现里面HOSTNAME是localhost,并没有什么问题。后来经过联系红帽客服及在群里寻求帮助,当然 还有伟大的度娘和谷歌,终于算是基本搞明白了其中的原因。

解决方法:

最新CentOS 7出现了新的版本,升级后主机名变成了bogon,现提供以下解决方案: 

1、切换到root用户下,否则没有权限,

2、root用户:#hostname localhost 
                      #su 

成因分析:

linux系统启动时,会经历BOIS自检,系统引导,启动内核,初始化系统这几步 ,其中初始化系统时,会依次执行/etc/rc.sysinit,/etc/rc.d/rc* 等脚本文件,其中在rc.sysinit有这样 一段代码

  1. if [ "$HOSTNAME" = "localhost" -o "$HOSTNAME" = "localhost.localdomain" ]; then  
  2.          ipaddr=$(ip addr show to 0.0.0.0/0 scope global | awk '/[[:space:]]inet / { print gensub("/.*","","g",$2) }')  
  3.          for ip in $ipaddr ; do  
  4.                  HOSTNAME=  
  5.                  eval $(ipcalc -h $ip 2>/dev/null)  
  6.                  [ -n "$HOSTNAME" ] && { hostname ${HOSTNAME} ; break; }  
  7.          done  
  8.  fi  

这段代码先判断了主机名,如果主机名是localhost或者localhost.localdomain,则获取主机IP地址并执行DNS逆向解析,将解析到的结果赋值给HOSTNAME。假设我主机IP为192.168.1.47,手动执行下列命令,得到的返回值为bogon。也就是莫名其妙出现的主机名

经查阅资料,了解到有些DNS服务器,会将私有地址,保留地址这样的不应该出现在网络上的IP地址解析成bogon。