天天看点

Linux杂谈之nsswitch.conf配置文件一、前言二、排坑过程三、nsswitch.conf配置文件介绍四、ssh连接慢问题处理五、写在最后

一、前言

        2020年12月23日同事反馈打不开网站,QQ正常,初步怀疑是DNS故障,经排查为114.114.114.114 DNS问题,更换为移动DNS(211.142.211.124)后网络恢复正常。处理过程中ssh登录服务器等待时间长,百度后需要修改sshd配置文件/etc/ssh/sshd_config,关闭dns解析。主要参照了此博文https://www.cnblogs.com/kingstarer/p/14113999.html

。一波操作之后ssh登录速度正常了。

二、排坑过程

       过了2天才发现整个服务器上不了网了。现象为此服务器下有运行在docker的spug服务,监控网站服务状态正常,宿主机本身访问外网IP地址通,访问域名失败,提示信息如下:

[[email protected] ~]# ping www.baidu.com

ping: www.baidu.com: 未知的名称或服务

       检查DNS配置正常

[[email protected] ~]# cat /etc/resolv.conf

#Generated by NetworkManager

nameserver 114.114.114.114

nameserver 8.8.8.8

       在出口防火墙上可以抓到此主机访问外网的包,且有回包。

       在宿主机上tcpdump抓包dns包,没有任何的dns包。

Linux杂谈之nsswitch.conf配置文件一、前言二、排坑过程三、nsswitch.conf配置文件介绍四、ssh连接慢问题处理五、写在最后

       不指定网卡可以抓到docker的dns请求和回包。

Linux杂谈之nsswitch.conf配置文件一、前言二、排坑过程三、nsswitch.conf配置文件介绍四、ssh连接慢问题处理五、写在最后

       至此确定是宿主机的问题,开始回忆这两天的配置调整。幸好本人有所有操作日志自动记录的习惯,找到了前天的操作系统,发现将nsswitch.conf这个配置文件hosts: files dns改为了hosts: files。修改回去后宿主机访问百度正常。自此排坑完成!

Linux杂谈之nsswitch.conf配置文件一、前言二、排坑过程三、nsswitch.conf配置文件介绍四、ssh连接慢问题处理五、写在最后

三、nsswitch.conf配置文件介绍

1、服务搜索顺序配置文件nsswitch.conf

       nsswitch.conf(name service switch configuration,名字服务切换配置)文件位于/etc目录下,由它规定通过哪些途径以及按照什么顺序以及通过这些途径来查找特定类型的信息,还可以指定某个方法奏效或失效时系统将采取什么动作。

Nsswitch.conf中的每一行配置都指明了如何搜索信息,每行配置的格式如下:

Info: method[[action]] [method[[action]]…]

       其中,info指定该行所描述的信息的类型,method为用来查找该信息的方法,action是对前面的method返回状态的响应。action要放在方括号里。

2、nsswitch.conf的工作原理

       当需要提供nsswitch.conf文件所描述的信息的时候,系统将检查含有适当info字段的配置行。它按照从左向右的顺序开始执行配置行中指定的方法。在默认情况下,如果找到期望的信息,系统将停止搜索。如果没有指定action,那么当某个方法未能返回结果时,系统就会尝试下一个动作。有可能搜索结束都没有找到想要的信息。

1)、信息(Info)

       Nsswitch.conf文件通常控制着用户(在passwd中)、口令(在shadow中)、主机IP和组信息(在group中)的搜索。下面的列表描述了nsswitch.conf文件控制搜索的大多数信息(Info项)的类型。
Linux杂谈之nsswitch.conf配置文件一、前言二、排坑过程三、nsswitch.conf配置文件介绍四、ssh连接慢问题处理五、写在最后

2)、方法(method)

下面列出了nsswich.conf文件控制搜索信息类型的方法,对于每一种信息类型,都可以指定下面的一种或多种方法:
Linux杂谈之nsswitch.conf配置文件一、前言二、排坑过程三、nsswitch.conf配置文件介绍四、ssh连接慢问题处理五、写在最后

3)、搜索顺序(从左至右)

       两个或者更多方法所提供的信息可能会重叠。举例来说,files和nis可能都提供同一个用户的口令信息。如果出现信息重叠现象,就需要考虑将哪一种方法作为权威方法(优先考虑),并将该方法放在方法列表中靠左的位置上。

       默认nsswitch.conf文件列出的方法并没有动作项,并假设没有信息重叠(正常情况)。在这种情况下,搜索顺序无关紧要:当一种方法失败之后,系统就会尝试下一种方法,只是时间上受到一点损失。如果在方法之间设置了动作,或者重叠的项的内容不同,那么搜索顺序就变得重要起来。

例如下面两行nsswitch.conf文件配置行:

passwd files nis

host nis files dns

       第一行让系统在/etc/passwd文件中搜索口令信息,如果失败的话,就使用NIS来查找信息。如果正在查找的用户同时出现在这两个地方,就会使用本地文件中的信息,因此它就是权威信息。第二行先使用NIS搜索;如果失败的话,就搜索/etc/hosts文件;如果再次失败的话,核对DNS以找出主机信息。

4)、动作项([action])

       在每个方法后面都可以选择跟一个动作项,用来指定如果由于某种原因该方法成功抑或失败需要做些什么。动作项的格式如下:

[[!]STATUS =action]

       其中,开头和末尾的方括号属于格式的一部分,并不是用来指出括号中的内容是可选的。STATUS(按照约定使用大写字母,但本身并不区分大小写)是待测试的状态,action是如果STATUS匹配前面的方法所返回的状态将要执行的动作。开头的感叹号(!)是可选的,其作用是将状态取反。

Linux杂谈之nsswitch.conf配置文件一、前言二、排坑过程三、nsswitch.conf配置文件介绍四、ssh连接慢问题处理五、写在最后

5)、compat方法:passwd、group和shadow文件中的"±"

       可以在/etc/passwd、/etc/group和/etc/shadow文件中放入一些特殊的代码,(如果在nsswitch.conf文件中指定compat方法的话)让系统将本地文件和NIS映射表中的项进行合并和修改。

       在这些文件中,如果在行首出现加号’+’,就表示添加NIS信息;如果出现减号’-’,就表示删除信息。举例来说,要想使用passwd文件中的这些代码,可以在nsswitch.conf文件中指定passwd: compat。然后系统就会按照顺序搜寻passwd文件,当它遇到以+或者 开头的行时,就会添加或者删除适当的NIS项。

       虽然可以在passwd文件的末尾放置加号,在nsswitch.conf文件中指定passwd: compat,以搜索本地的passwd文件,然后再搜寻NIS映射表,但是更高效的一种方法是在nsswitch.conf文件中添加passwd: file nis而不修改passwd文件。

四、ssh连接慢问题处理

Linux杂谈之nsswitch.conf配置文件一、前言二、排坑过程三、nsswitch.conf配置文件介绍四、ssh连接慢问题处理五、写在最后

原因:DNS解析异常导致连接缓慢

解决方案一:

       以ssh -v调试模式远程登录,根据ssh调试信息,观察执行缓慢的开始位置。

若在debug1: SSH2_MSG_SERVICE_ACCEPT received开始慢,则需要修改服务端;若在debug1: Next authentication method: gssapi-with-mic开始慢,则需要修改客户端;若两者都慢,则客户端和服务端都需要修改。需要修改的文件均为resolv.conf。

解决方案二:

       linux环境修改/etc/ssh/sshd_config配置文件,将如下三个参数yes修改为no:

GSSAPIAuthentication no

GSSAPICleanupCredentials no

UseDNS no

五、写在最后

       我们遇到问题的时候通常百度一番就开始对着操作,这里反思几点。

1、如果是自己不清楚或者没有使用过的文件修改一定要先行确认;

2、修改解决了已知问题最后多做些验证是否有其他未知问题;

3、所有操作记录日志是一个好习惯。

继续阅读