Linux为什么卡住了?

导读 通过SSH登录Linux服务器时,输完用户名就卡住了,要等待10秒钟才提示密码输入。这究竟是什么原因导致的呢?

10秒钟的时间并不算长,吃个薯片喝口咖啡就过去了。但是作为强迫症患者,我还是容不得它的存在,因此便决定写篇文章,向大家演示一下怎样用Wireshark一步步解决这个问题。

首先是抓包,步骤如下

  1. 在Linux服务器上启动抓包。
  2. 从笔记本SSH到Linux服务器,输入用户名并回车。
  3. 等待10秒左右,直到登录界面提示输入密码。
  4. 停止抓包。

这样就可以得到一个涵盖该现象的网络包了。一般在实验室中没有干扰流量,不用过滤也可以分析,不过我们最好在做实验时就养成过滤的习惯,以适应生产环境中抓到的包。因为我们是通过SSH协议登录的,所以可以直接用“ssh”来过滤,如图所示。SSH包都是加密了的,因此我们看不出每个包代表了什么意思,不过这并不影响分析。从图2中可以看到,21号包和25号包之间恰好就相隔10秒。

这两个包之间所发生的事件,可能就是导致这个现象的原因。于是我再用“frame.number> 21 && frame.number< 25”过滤,结果如图所示。

分析

从图中可以看到,Linux服务器当时正忙着向DNS服务器查询10.32.200.23的PTR记录(即反向解析),试图获得这个IP地址所对应的域名。该IP属于我们测试所用的笔记本,但由于DNS服务器上没有它的PTR记录,所以两次查询都等了5秒钟还没结果,总共浪费了10秒钟。

我们由此可以推出,这台Linux服务器在收到SSH访问请求时,会先查询该客户端IP所对应的PTR记录。假如经过5秒钟还没有收到回复,就再发一次查询。如果第二次查询还是等了5秒还没回复,就彻底放弃查询。我们甚至可以进一步猜测,如果DNS查询能成功,就不用白等那10秒钟了。

为了验证这个猜测,我在DNS服务器中添加了10.32.200.23的PTR记录,如图所示,然后再次登录。

这一次果然立即登录进去了。从图的Wireshark截屏可见,DNS查询是成功的,所以21号包和26号包之间几乎是没有时间停顿的。

结果

明白了DNS查询就是问题的起因,接下来就知道怎么进一步研究了。只要在Google搜索“ssh dns”,第一页出来的链接都是关于这个问题的。随便挑几篇阅读一下,就连我这样的Linux初学者都能把这个问题研究透了。原来这个行为是定义在“/etc/ssh/sshd_config”文件中的,默认配置是这样的:

[[email protected]_Server ~]# cat /etc/ssh/sshd_config |grep -i usedns #UseDNS yes 

改成下面这样就可以解决了,不用去动DNS服务器上的配置:

[[email protected]_Server~]# cat /etc/ssh/sshd_config |grep -i usedns UseDNS no

本文转载自:http://www.linuxprobe.com/linux-connect-slowly.html

更多Linux干货请访问:http://www.linuxprobe.com/

时间: 2024-10-11 05:00:01

Linux为什么卡住了?的相关文章

使用远程shell工具SSH登录Linux主机,输完用户名回车后就卡住,10秒后才提示输入密码

使用远程shell工具SSH登录Linux主机,输完用户名回车后就卡住,10秒后才提示输入密码. 使用wireshark抓全过程包 因为ssh是加密了的协议,所以弄不懂里面内容是正常的,但可以加以过滤. 过滤栏:SSH 找到时间间隔大概为10s的NO.是x到y 过滤栏:frame.number>x&&frame.number<y 观察得出此处是DNS查询行为 原因:Linux服务器在收到SSH访问请求时,先会查询该客户端IP对应的PTR记录.假如经过5s没有收到回复,就再次发一

应对ubuntu linux图形界面卡住的方法

有的时候,我的ubuntu图形界面会卡住,当然这个时候你可以重新启动,不过最好的办法应该是结束这个桌面进程 那桌面卡住了怎么来结束桌面进程呢? 这时候就需要打开tty了 按下键盘ctrl+alt+f1或f2或一直到f6 不要f7,因为ubuntu默认桌面就是在tty7里面打开的 此时输入你的用户名密码就可以了 然后我们在使用startx就又开起了一个图形界面 我们想把原来的图形界面给杀掉怎么做呢? 如下 ps -ef | grep tty7 在显示的里表中找出tty7的pid,比如我的 然后 k

paramiko模块执行linux下nohup卡住的问题。

今天做一个自动化部署的时候发现,服务端通过python的paramiko模块推命令的时候卡住了,没反映了.入下图: 我客户端那边是执行一个shell脚本,脚本里用nohup来启一个python脚本(执行jar包也一样样). 排查发现执行后光标是不能跳刀终端的起始位置的,(就是$或者#后面),需要敲一个回车才行.因为nohup启动脚本或者程序时如果默认不重定向到指定文件的话,默认或有一个错误输出.所以,我们在执行nohup的时候加上重定向到nohup.out中即可(错误输出最好也重定向到标准输出)

linux系统配置文件

1./etc/sysconfig/i18n(语言配置文件). LANG="zh_CN.UTF-8"              #中文 LANG="en_US.UTF-8"或LANG=""     #英文 2./etc/sysconfig/network-scripts/ifcfg-eth0(eth0配置文件) 静态: DEVICE=eth0 #网卡接口名称 HWADDR=00:0C:29:13:5D:74 #网卡设备MAC地址 TYPE=Ethe

干货!一篇文章集合所有Linux基础命令,适合所有菜鸟学习和老手回顾!

1 文件{ ls -rtl # 按时间倒叙列出所有目录和文件 ll -rt touch file # 创建空白文件 rm -rf 目录名 # 不提示删除非空目录(-r:递归删除 -f强制) dos2unix # windows文本转linux文本 unix2dos # linux文本转windows文本 enca filename # 查看编码 安装 yum install -y enca md5sum # 查看md5值 ln 源文件 目标文件 # 硬链接 ln -s 源文件 目标文件 # 符号

Kali Linux 渗透测试之拒绝服务攻击及防御

作为渗透测试人员,有时候需要对客户的系统进行DDOS攻击测试,那么这个时候就需要我们有一款合格的测试工具.而在Kali Linux上就集成了一些DDOS测试工具供测试者使用,下面就简单介绍一些测试工具. kali下的拒绝服务攻击: D(D)OS........................................1 yersinia......................................2 hping3................................

Linux课程第十九天学习笔记

####################DNS(接上一篇的内容)#################### =====主备DNS=====dns-server    172.25.254.115dns-slave    172.25.254.215 yum install bind -y [[email protected] ~]# firewall-cmd --permanent --add-service=dnssuccess[[email protected] ~]# firewall-cm

常见linux系统故障排查与修复

一.常见系统故障: 服务器能正常启动固然是极好的,但是由于管理员误操作,或者是磁盘的物理扇区损坏等都有可能对系统造成致命的打击,让系统无法启动,这时作为管理员的你不能坐视不管了吧?这就要求管理员的你要能应对系统的各种错误导致的系统无法启动. 我们知道系统的启动是分为多个步骤的,任意一个环节的错误都会使系统无法启动所以像是关键性的数据最好要做好备份工作以免出错时无法应对.因为有的数据可以修复,有的数据也是无法修复的,下面探讨一下可修复部分的数据的修复吧: 1.  MBR中grub损坏,1_5阶段的

Linux下进度条小程序

源码如下: 简单实现的在命令行下进行简单的进度条显示的功能,能模拟现实目前的进度并且用旋转的字符表示代码正在运行未卡住. 代码主要利用了printf的格式化输出,以及回车符/r,在这里%s前进行了-100的对齐,也就是左对齐100个字符. Linux 平台下与windows不同的是将换行符\n表示成两个动作\r\n,好比老式的打字机,\n回车代表换行,\r表示将光标移到左边首个字符的位置.而printf等库函数在输出时,封装底层的系统调用,实际上I/O都有缓冲区,所以,对于printf等函数而言