怎么检查服务器和客户端的ICMP端口

怎么检查服务器和客户端的ICMP端口,第1张

ICMP协议没有端口的概念,是反馈状态时使用的。

全称英特网控制消息协议,是 IP 协议的一个整合部分。通过 IP 包传送的 ICMP 信息主要用于检测网络操作或错误操作的不可达信息。 ICMP 包发送是不可靠的,所以主机不能依靠接收 ICMP 包解决任何网络问题。

解决方法:设置你的防火墙,找到“允许ping”允许这个操作,即可。

这个问题我今天也遇到过了,在网上搜索答案结果找到你的问题。。于是自己分析了一下,给自己和LZ一个答案。

主要原因是:

你向DNS服务器发起一个请求,但因此某种原因,DNS回复给你时,你已经把端口关闭了,于是又给服务器发了个ICMP的端口不可达信息。

这是我做的实验:

本机IP:10.184.155.63

DNS:202.120.2.101

当我正常上网时,偶尔会抓到与DNS通信的ICMP包,这是Wireshark的分析:

ICMP包除了说明Type:3的包头外,还附加了payload,指明“因为你当年向我52291端口发过一个UDP包,但我没开52291,所以把你拒了”。

显然DNS服务器也没闲到没事给你发UDP包玩,显然是因为之前你向DNS服务器发送过包。

于是使用Wireshark的filter:udp.port == 52291

得到三个包:

仔细看包的Info,分别动作是:

本机向DNS请求talk.google.com的IP

DNS回复该域名IP

本机说,Port unreachable,哈哈哈哈。。。

因此得到结论是,本机发送DNS请求后立刻关闭了发送UDP包的端口,结果返回的UDP包被拒绝了。

但为什么会这样呢?明明请求和回答只相差0.01秒,浏览器没有理由中断请求啊!

这与系统对DNS请求的实现机制有关,它会同时请求一个域名的AAAA记录和A记录(分别是ipv6和ipv4地址),当任何一个查询结果被返回时,计算机立刻关闭两个查询的UDP端口,于是出现后回复的DNS包被报ICMP的端口不可达错误。

再以一次出现ICMP的通信作为验证:

最后一条黑底绿字是ICMP包,其他都是DNS包。

显然ICMP拒绝的,是ID为0x13ae(红框)的请求,这是为什么呢?

当我上百度百科时,浏览器向服务器几乎同时发送了两个DNS请求(图中第1,2个包),分别请求baike.baidu.com的AAAA记录和A记录。

但是AAAA记录很快得到了回复(第三条,绿框,对应AAAA记录的请求),回复内容是CNAME(别名)bk.baidu.com和bk.n.shifen.com(意思是你要找的baike.baidu.com其实是bk.baidu.com或者bk.n.shifen.com)

于是本机立刻又请求了bk.n.shifen.com的AAAA记录和A记录(第5、6条)

之后,关于baike.baidu.com的A记录才返回,显然我们已经从AAAA记录中得到该信息了,可以说本机在得到CNAME回复后,就把两个请求端口都关掉了,于是就造成来迟的DNS回复无法访问目的端口的错误了。

好吧,写了这么长,终于把DNS请求出现ICMP包的原因搞明白了,希望LZ和后来人,都可以解决心中的迷团~

方法:

1.打开“控制面板-管理工具-本地安全策略”,打开本地安全设置。

2.右击“IP安全策略”,选择“创建IP安全策略”,点[下一步]。

3.输入安全策略的名称,点[下一步],一直到完成,就创建了一个安全策略。

4.接着打开“网络连接”,右键单击启用Internet连接防火墙的“网络连接”,选择“属性”打开属性窗口。

5.接着,选择“高级”选项卡,单击右下角“设置”按钮。

6.然后,在高级设置窗口中选择“ICMP”选项卡,在其中就可以进行相应的设置,打开ICMP。


欢迎分享,转载请注明来源:夏雨云

原文地址:https://www.xiayuyun.com/zonghe/679778.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-07-29
下一篇2023-07-29

发表评论

登录后才能评论

评论列表(0条)

    保存