Name or service not known问题解决和分析过程解析

目         录

一、问题描述

二、问题查处过程

(一)为何不能识别到bogon

(二)为何会出现bogon

(三)能不能更改bogon

(四)能识别其他host的名字

三、问题分析

四、问题解决

(一)解决掉bogon

1、查看dns

2、修改DNS

3、查看结果

(二)正常识别hostname

1、删除外部DNS解析

2、查看结果


一、问题描述

程序执行错误,查看日志信息发现出现:bogon 不能识别,于是进行如下查处:

[root@bogon vcms]#

[root@bogon vcms]# hostname

bogon

[root@bogon vcms]#

[root@bogon vcms]# cat /etc/hosts

127.0.0.1  localhost localhost.localdomain localhost4 localhost4.localdomain4

::1        localhost localhost.localdomain localhost6 localhost6.localdomain6

[root@bogon vcms]#

[root@bogon vcms]#vi /etc/hosts

认为bogon不在hosts列表,于是准备把bogon增加到hosts列表中,操作如下:

[root@bogon vcms]# cat /etc/hosts

127.0.0.1  localhost localhost.localdomain localhost4 localhost4.localdomain4 bogon

::1        localhost localhost.localdomain localhost6 localhost6.localdomain6 bogon

[root@bogon vcms]#

[root@bogon vcms]#sudo systemctl restart network

[root@bogon vcms]#

程序仍然执行错误,查看日志信息发现出现:bogon 不能识别。

现在应该如何办?

二、问题查处过程

(一)为何不能识别到bogon

        Linux系统在向DNS服务器发出域名解析请求之前会查询/etc/hosts文件。如果/etc/hosts文件中有相应的记录,系统就会使用这个文件中的记录。因此,如果hostname在/etc/hosts文件中没有对应的条目,或者条目不正确,那么系统可能无法正确解析hostname。

        于是我们编辑/etc/hosts文件,把bogon添加到hosts文件中对应的条目,但是结果还是不行。

[root@bogon vcms]#hostname -i

hostname: Name or service not known    

(二)为何会出现bogon

       我们了解到,一般情况下,当centos系统的hostname变为bogon时,这通常是由于网络配置或DNS解析问题导致的。bogon一词通常用来表示一个虚假的、不存在的或无效的IP地址。

       看来,不能出现bogon。

(三)能不能更改bogon

       根据上面的情况,我们就像改掉这个bogon,但是尝试了各种办法,都没办法凑效!

(四)能识别其他host的名字

       我们尝试了一下,包括localhost, localhost.localdomain,都不能解析

        使用hostname -i,发现出现错误

        hostname: Name or service not known    

        

三、问题分析

        理论上,在CentOSlinux系统中,解析主机名是由Name Service Switch LibraryNSS)和DNS服务器共同处理的。具体流程为:

  1. 当一个程序需要解析一个主机名时,它会调用gethostbyname()函数来获取IP地址。
  2. NSS是Linux下的一个服务,它使用gethostbyname()函数从/etc/hosts文件中查找主机名对应的IP地址。如果找到匹配的主机名,则返回对应的IP地址。
  3. 如果在/etc/hosts文件中没有找到匹配的主机名,NSS会继续使用DNS服务器来解析主机名。它通过发出一个网络请求到DNS服务器,请求该主机名的IP地址。
  4. DNS服务器收到请求后,会查询其数据库来找到相应的IP地址,然后返回给客户端。
  5. NSS接收到DNS服务器返回的IP地址后,将其返回给原始调用者,完成主机名的解析。

        因此,我们需要重NSS和DNS服务器上入手。

四、问题解决

通过以上分析,我们理出思路,应该就是主机名解析的问题

(一)解决掉bogon

1、查看dns

[root@bogon vcms]#cat /etc/sysconfig/network-scripts/ifcfg-exxx

……………………..

DNS1=192.168.10.3

DNS2=221.8.16.1

2、修改DNS

[root@bogon vcms]#vi /etc/sysconfig/network-scripts/ifcfg-exxx

……………………..

DNS1=8.8.8.8

DNS2=114.114.114.114

[root@bogon vcms]# sudo systemctl restart network

3、查看结果

[root@bogon vcms]#

[root@bogon vcms]# hostname

localhost

[root@bogon vcms]#

看来凑效了。但是,错误依旧,如下图:

[root@bogon vcms]#

[root@bogon vcms]# hostname -i

hostname: Name or service not known    

[root@bogon vcms]#

(二)正常识别hostname

        分析到,可能是外部dns进行了名字解析,若把外部dns去掉呢?        

1、删除外部DNS解析

[root@bogon vcms]#vi /etc/sysconfig/network-scripts/ifcfg-exxx

……………………..

#DNS1=8.8.8.8

#DNS2=114.114.114.114

[root@bogon vcms]# sudo systemctl restart network

2、查看结果

[root@bogon vcms]#

[root@bogon vcms]# hostname

localhost

[root@bogon vcms]#

[root@localhost vcms]# hostname -i

::1 127.0.0.1

[root@localhost vcms]#

看来凑效了。

然后,程序执行OK,看到了成功运行的久违的界面。

你可能感兴趣的:(unix,linux,centos,ubuntu,debian)