抓包查看是否丢包_Linux下检测端口是否打开

排查网络故障的时候我们常用的一个方法就是探测一下远端端口是否可以连接,而一个好的探测工具能为我们节省很多时间,下面我就分享一些常用的端口检测的工具。

0x01 telnet

telnet是一个经典的telnet协议的客户端,因为telnet协议是一个基于tcp的文本协议,因此我们可以用它来探测端口是否开放,其命令如下

# telnet 域名或IP 端口
telnet 12.1.1.1 22

端口通的情况:

a69be847b0b127bd4f5b3d19861bde83.png

端口不通的情况:

d5ac63ffe0990277b1458c0bd99678f2.png

b5419ec0c9fe0f626216e8389ddd6483.png

0x02 nc

nc命令全称netcat,是网络调试中瑞士军刀级别的工具,它的作用包括但不限于:

  1. 搭建简单的HTTP服务,或作为客户端
  2. 搭建TCP服务
  3. 配合ssh中的ProxyCommand使用
  4. 网络检测

我们这里主要使用他的网络检测的能力,其简单的检测命令为:

# nc -v 域名或IP 端口
nc -v qq.com 80

nc命令会显式的打印出成功的情况,对于端口不通,nc和可能会阻塞很久也可能直接返回失败。

端口通的情况:

0c690235fffa22b09426033e82c75e04.png

端口不通的情况:

8a2aa06f6010a0c669f4164186fe48be.png

4ac2ecb1bdc063be614cb305d8457841.png

0x03 bash特殊设备文件

bash下存在一个特殊的设备文件:/dev/(tcp|udp)/<HOST>/<PORT>,打开该文件,就相当于建立了一个socket连接,读写这个文件就相当于在socket中传输数据。基于这个特性,我们可以用来做端口开放性检测,调用方式如下:

echo > /dev/tcp/qq.com/80

端口通的情况下:

a780383547879aea89a78ae8391d8b60.png

端口不通的情况下:

55cf5edbb45228c99a0e3e3df2d04d86.png

b02309f11714cdb50a170444babdf733.png

0x04 端口不通为什么会出现阻塞

最后我们解释一下端口不通的情况下为什么会出现长时间阻塞,其实这个很好解释:客户端在等服务器端返回数据包,正常情况下,如果端口未开放,服务端会直接返回一个RST包,客户端收到这个包后会直接关闭socket然后返回退出,但如果服务端配置了防火墙(iptables),直接把未开放端口的请求包丢弃,那客户端就永远不可能收到回报,但客户端又不知道包被丢弃了,于是就傻傻重传然后继续等,直到超时。我们通过tcpdump抓包看一下:

65254db8df3eb35e79976557a580ebc6.png

上图显示的端口通的情况,可以清晰的看到TCP三次握手四次挥手。

7fe4c9551d0e1c425ad8802ec8d471a4.png

上图显示了端口不通,但防火墙丢包的情况,可以看到,客户端一直在傻傻的重传syn包。

cfe0ca71dfc7860ea440f997429fe7e6.png

上图是端口不通,且没有防火墙丢包等情况,可以看到服务端直接返回了rst包。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值