resolv.conf文件配置相关的案例
引言
操作系统中/etc/resolv.conf配置文件中的内容一般为空,如果该文件配置不正确,将导致ssh、route、netstat命令响应慢的问题。
在/etc/resolv.conf添加错误地内容,导致涉及域名解析相关的命令响应慢,是维护工作中较常遇到的问题。
相关案例
现象:使用其他机器ssh连接一机器,响应很慢,需要10多秒时间才有输入密码的提示响应。
问题解决:
被连接机器的/etc/resolv.conf文件中包含了以下内容:
XXXXX:~ # cat /etc/resolv.conf nameserver 202.102.152.3 search XXX
由于配置了/etc/resolv.conf文件,该机器成为DNS Client,而DNS Server为202.102.152.3这个ip对应的机器。
执行ssh时,该主机会根据以上配置进行域名解析,由于202.102.152.3这台机器ip不可达,主机将尝试多次域名解析,直到达到超时次数。
route/netstat命令输出慢
执行route和netstat命令时,也会进行域名解析,像以上那样错误地配置/etc/resolv.conf文件,也会导致route、netstat命令输出缓慢。
而执行route –n和netstat –n时则不会有缓慢的问题,因为加了-n选项,命令执行时将输出XXX.XXX.XXX.XXX点分十进制的ip地址,不进行域名解析。
strace跟踪分析
在《自助Linux之问题诊断工具strace》一文中,介绍了strace的用法,像这类命令执行相应慢或执行出错的问题,使用strace进行问题分析再适合不过了。
下面我们将大脑清空,“忘记”上文内容,来学习如何使用strace来分析ssh登陆慢的问题。
首先,我们在使用ssh的机器上使用strace跟一下ssh命令:
linux198 /root# strace -o ssh.strace -fT ssh 10.71.171.140
可以看到输出文件ssh.strace中,ssh命令在底层的一个select调用阻塞了15s:
…… write(, ) = <0.000010> , [], NULL, NULL, NULL) = (]) <15.098772> ……
尽管select系统调用本身是非阻塞的,ssh仍等待select的返回再往下执行。除此之外没有获得其他有用信息。
这时我们再在被ssh登陆慢的、有问题的机器,跟一下sshd进程,先查找sshd进程的pid:
slot10-sles10sp2:~ # ps aux | grep sshd | grep -v grep root ? Ss : : /usr/sbin/sshd -o PidFile=/var/run/sshd.init.pid root ? Ss : : sshd: root@pts/
再使用-p选项对运行中的进程使用strace跟踪:
slot10-sles10sp2:~ # strace -o sshd.strace -fT -p Process attached - interrupt to quit
以上命令执行时会挂住,等待ssh连接的到来。这时我们在另一台机器上使用ssh 10.71.171.140命令连接该机器。
使用ssh成功登陆之后,ctrl+c将strace命令停止,我们可以看到sshd.strace文件中有以下输出:
open("/etc/resolv.conf", O_RDONLY) = 4 <0.000026>
fstat(, {st_mode=S_IFREG|, st_size=, ...}) = <0.000023>
mmap(NULL, , PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -, ) = 0x2b0eb8dbf000 <0.000024>
read(4, "nameserver 202.102.152.3\nsearch "..., 4096) = 40 <0.000028>
read(, ) = <0.000023>
close() = <0.000024>
munmap() = <0.000026>
socket(PF_INET, SOCK_DGRAM, IPPROTO_IP) = 4 <0.000027>
connect(4, {sa_family=AF_INET, sin_port=htons(53), sin_addr=inet_addr("202.102.152.3")}, 28) = 0 <0.000025>
fcntl(, F_GETFL) = 0x2 (flags O_RDWR) <0.000024>
fcntl(, F_SETFL, O_RDWR|O_NONBLOCK) = <0.000023>
poll([{fd=, events=POLLOUT, revents=POLLOUT}], , ) = <0.000024>
sendto(, , , NULL, ) = <0.000117>
, events=POLLIN}], , ) = <5.000046>
poll([{fd=, events=POLLOUT, revents=POLLOUT}], , ) = <0.000024>
sendto(, , , NULL, ) = <0.000035>
, events=POLLIN}], , ) = <4.999760>
close() = <0.000028>
从以上输出可以看到,当有连接到来的时候,sshd进程会打开并读取/etc/resolv.conf文件的内容,对其中的DNS nameserver建立socket,然后调用poll函数,每个poll调用5s后超时返回。
进一步地,我们了解/etc/resolv.conf文件的作用,查看/etc/resolv.conf文件的配置,从而解决问题。
小结
本文讨论了/etc/resolv.conf文件配置错误,导致ssh登陆慢(包括从其他机器跳转慢、使用putty等软件登陆慢)、reoute/netstat命令执行慢的问题。
通过问题的复现,使用strace进行问题分析,我们也小试了一下牛刀,熟悉了strace的使用方法。
resolv.conf文件配置相关的案例的更多相关文章
- Cent0S 6.7直接在/etc/resolv.conf文件下修改DNS地址重启不生效问题【转】
CentOS 6.7/Linux下设置IP地址 1:临时修改: 1.1:修改IP地址 # ifconfig eth0 192.168.2.104 1.2:修改网关地址 # route add defa ...
- CentOS7.6 鲜为人知的/etc/resolv.conf 之 /etc/resolv.conf.save (保持/etc/resolv.conf不被修改:/etc/dhcp/dhclient-enter-hooks 无效之/etc/resolv.conf被清空的特殊案例)
目的: 用户可以自定义/etc/resolv.conf内容,且不被系统修改. 常规方法1: /etc/sysconfig/network-scripts/ifcfg-eth0 网卡配置文件中增加PEE ...
- Apache 中httpd.conf文件配置详解(转载)
httpd.conf文件配置详解 Apache的基本设置主要交由httpd.conf来设定管理,我们要修改Apache的相关设定,主要还是通过修改httpd.cong来实现.下面让我们来看看htt ...
- CentOS yum有时出现“Could not retrieve mirrorlist ”的解决办法——resolv.conf的配置
国内服务器在运行命令yum -y install wget的时候,出现: Could not retrieve mirrorlist http://mirrorlist.centos.org/?rel ...
- /etc/resolv.conf文件自动恢复的解决方法
/etc/resolv.conf文件自动恢复的解决方法: service NetworkManager stop #后台进程关闭 chkconfig NetworkManager off #配置关闭, ...
- 漫画:Linux中/etc/resolv.conf文件和puppet工具解析
今天办公室里来了一个程序员妹子飞鸟,小鱼是给她分配的导师,初次见面~ 午饭时间 Linux目录结构 resolv.conf文件 nameserver 唯一的必选关键字.表明DNS 服务器的IP 地址, ...
- Ubuntu 中/etc/resolv.conf 文件修改丢失的解决方案
方法一 1.需要创建一个文件/etc/resolvconf/resolv.conf.d/tail sudo vi /etc/resolvconf/resolv.conf.d/tail 2.在该文件中写 ...
- Ubuntu 下 /etc/resolv.conf文件总是自动清除问题的解决方案
最近学习Linux,在虚拟机中安装的是Ubuntu操作系统,用了几天发现Ubuntu无法上网,打开命令终端,输入命令: ping www.baidu.com -c2 结果显示名称无法识别,而直接与宿主 ...
- /etc/resolv.conf文件中的search项作用
resolv.conf文件中有search项时,主机名解析规则顺序: DNS配置文件如下: # vi /etc/resolv.conf # Generated by NetworkManager se ...
随机推荐
- Ural 2062:Ambitious Experiment(树状数组 || 分块)
http://acm.timus.ru/problem.aspx?space=1&num=2062 题意:有n个数,有一个值,q个询问,有单点询问操作,也有对于区间[l,r]的每个数i,使得n ...
- Python与C/C++相互调用
参考链接:https://www.cnblogs.com/yanzi-meng/p/8066944.html
- async与await详解
async和await只是编译器功能.编译器会用Task类创建代码.如果不适用这两个关键字,也可以用C#4.0和Task类实现同样的功能,只是没有那么方便. 题主在概念上确实混淆的不行,但是确实asy ...
- C语言 实验设备管理系统
实验设备信息管理系统 简单的思路,简单的算法 题目简述:实验室设备信息用文件存储,提供文件的输入输出操作:要能够完成设备的录入和修改,需要提供设备添加和修改操作:实现对设备进行分类统计,需要提供排序操 ...
- Python重试模块retrying
Python重试模块retrying 工作中经常碰到的问题就是,某个方法出现了异常,重试几次.循环重复一个方法是很常见的.比如爬虫中的获取代理,对获取失败的情况进行重试. 刚开始搜的几个博客讲的有点问 ...
- msf出现Database not connected等问题【已解决】
kali启动msf后,出现Module database cache not built yet, using slow search,或是Database not connected,或是 ...
- 和朱晔一起复习Java并发(三):锁(含锁性能测试)
这个专题我发现怎么慢慢演化为性能测试了,遇到任何东西我就忍不住去测一把.本文我们会大概看一下各种锁数据结构的简单用法,顺便也会来比拼一下性能. 各种并发锁 首先,我们定一个抽象基类,用于各种锁测试的一 ...
- Docker笔记(六):容器管理
原文地址:http://blog.jboost.cn/2019/07/21/docker-6.html 容器是Docker中的另一核心概念,在Docker中,应用的运行都是在容器内进行的,容器则基于镜 ...
- 简单题[期望DP]
也许更好的阅读体验 \(\mathcal{Description}\) 桌面上有R张红牌和B张黑牌,随机打乱顺序后放在桌面上,开始一张一张地翻牌,翻到红牌得到1美元,黑牌则付出1美元.可以随时停止翻牌 ...
- I/O的简介
文本我们能读懂的都可以认为是字符流,文章 java文件都是字符流数据 流的分类 输入流 输出流 1.输出流 Writer:关于字符流的父类,抽象类.与之相对的输入流 Reader类 一.字符流 字符流 ...