首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Linux PC将"ICMP udp端口不可达“发送到DNS服务器

问Linux PC将"ICMP udp端口不可达“发送到DNS服务器
EN

Server Fault用户
提问于 2015-08-26 20:18:16
回答 3查看 14.3K关注 0票数 2

因此,在我的syslog中,我注意到很多ICMP数据包被我们的ASA标记:

代码语言:javascript
复制
 %ASA-4-313005: No matching connection for ICMP error message: icmp src Internet:x.x.21.122 dst MGMT:x.x.36.55 (type 3, code 3) on Internet interface.  Original IP payload: udp src x.x.36.55/53 dst x.x.21.122/47927.

在ICMP回复的发起者(x.122是Linux机器)上执行tcpdump时,我注意到DNS查询请求被发送,过了一段时间,DNS服务器就会回复。在回复后,Linux服务器立即发送一条消息,表示无法将端口返回到DNS服务器。请见下文:

代码语言:javascript
复制
19:29:06.684523 IP x.x.21.122.47927 > DNS.domain: 7182+ PTR? x.x.x.x.in-addr.arpa. (43)
19:29:11.690336 IP x.x.21.122.33897 > DNS.domain: 58231+ PTR? x.x.x.x.in-addr.arpa. (45)
19:29:13.850887 IP DNS.domain > x.x.21.122.47927: 7182 ServFail 0/0/0 (43)
19:29:13.850929 IP x.x.21.122 > DNS: ICMP x.x.21.122 udp port 47927 unreachable, length 79

19:29:16.692581 IP x.x.21.122.33897 > DNS.domain: 58231+ PTR? x.x.x.x.in-addr.arpa. (45)
19:29:21.697217 IP x.x.21.122.42976 > DNS.domain: 19120+ PTR? x.x.x.x.in-addr.arpa. (45)
19:29:22.977289 IP DNS.domain > x.x.21.122.42976: 19120 ServFail 0/0/1 (56)
19:29:22.977342 IP DNS.domain > x.x.21.122.33897: 58231 ServFail 0/0/0 (45)
19:29:22.977382 IP x.x.21.122 > DNS: ICMP x.x.21.122 udp port 33897 unreachable, length 81

我想可能Linux机器等待DNS应答的时间不够长,所以我在/etc/resolv.conf中增加了等待时间。但运气不好。

据我所知,Linux正在进行反向DNS查找,而DNS服务器正在答复它无法解析名称(因为它不存在于DNS服务器中)。由于某种原因,它正在查询的特定主机在DNS上没有条目)。这就是为什么请求花了这么长时间。但是我只想知道如何修改Linux,这样它就不会每次都发送这些ICMP消息。

如果有人能帮我弄清楚如何阻止这些信息的出现,我将不胜感激。

ASA在下面向show . icmp倾诉

代码语言:javascript
复制
 ASA# show run | inc icmp
    icmp unreachable rate-limit 1 burst-size 1
    icmp permit any echo Internet
    icmp permit any echo-reply Internet
    icmp permit any echo DATA
    icmp permit any echo-reply DATA
    timeout conn 1:00:00 half-closed 0:10:00 udp 0:02:00 icmp 0:00:02
EN

回答 3

Server Fault用户

发布于 2016-08-02 10:08:15

这听起来很熟悉,我也看到基于Linux的服务也有同样的行为。

这是一种特定于应用程序的行为,虽然我也不记得我追踪到了哪个应用程序.或者即使我真的追踪到一个应用程序..。

基本上,所讨论的应用程序使用普通的libC解析器进行自己的DNS查找(在nscd或dnsmasqd之类的东西没有作为本地缓存运行的情况下,这是正常的),并且客户端套接字在响应返回之前关闭。因为响应返回并且再也没有监听(未连接的UDP)套接字,所以它用一个不可访问的端口进行响应。

有两件事可以改进:

1)使用客户端DNS缓存(如果您关心短TTL,最好不要使用nscd )。

( 2) (未经测试)在输出链ICMP上下降--无法到达的包转到UDP/53端口

我建议前者是更好的解决方案,这可能解释了为什么您不倾向于从Windows机器(有本地缓存的机器)中看到这一点。

票数 2
EN

Server Fault用户

发布于 2015-08-26 22:00:35

尝试将所有通信量从x.x.21.122传递到您的DNS。如果错误会消失,那么您应该改进防火墙规则。

它记录,您提供的,我们找不到任何连接端口39132。此外,请张贴您的asa配置。

票数 0
EN

Server Fault用户

发布于 2023-01-07 01:29:59

如果客户端配置了多个DNS服务器,则可以同时尝试多个DNS服务器。它将接受第一个响应并关闭该请求的端口,因此后续响应将得到ICMP响应。

票数 0
EN
页面原文内容由Server Fault提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://serverfault.com/questions/717065

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档