web-dev-qa-db-ja.com

「ICMPudpポートに到達できません」をDNSサーバーに送信するLinuxPC

そのため、syslogを調べてみると、ASAによって多くのICMPパケットにフラグが付けられていることに気づきました。

 %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.x.x.122 Linuxマシン)でtcpdumpを実行すると、DNSクエリ要求が送信され、しばらくするとDNSサーバーが応答します。応答するとすぐに、Linuxサーバーはポートに到達できないというメッセージをDNSサーバーに送り返します。下記を参照してください:

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 PCがD​​NSの逆ルックアップを行っており、DNSサーバーが名前を解決できないと応答していることを理解しています(DNSサーバーに存在しないためです。照会対象の特定のホストにはエントリがありません)理由によるDNS)。これが、リクエストに非常に時間がかかる理由です。しかし、Linux PCを変更して、これが発生するたびにこれらのICMPメッセージを送信しないようにする方法を知りたいだけです。

誰かが私にこれらのメッセージが表示されないようにする方法を理解するのを手伝っていただければ、それは大いに感謝されるでしょう。

Showrunを使用したASA設定|以下のICMP

 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
2
JustNobody30

それはおなじみのように聞こえますが、Linuxベースのサービスからも同じ動作が見られます。

これはアプリケーション固有の動作ですが、これをトレースしたアプリケーションも思い出せません。または、実際にアプリケーションにトレースしたとしても...

基本的に、問題のアプリケーションは、通常のlibCリゾルバー(nscddnsmasqdなどがローカルキャッシュとして実行されていない場合は通常)を使用して独自のDNSルックアップを実行します。クライアントソケットは、応答が返される前に閉じられます。応答が返され、その(接続されていないUDP)ソケットをリッスンしていないため、到達不能なポートで応答します。

2つの改善が可能です。

1)クライアント側のDNSキャッシュを使用します(短いTTLが気になる場合はnscdではないことが望ましい)

2)(テストされていない)OUTPUTチェーンのドロップICMP-ポートUDP/53に送信される到達不能パケット

前者が望ましい解決策であることをお勧めします。これはおそらく、これがWindowsマシン(ローカルキャッシュを持っている)から送信されるのを見ない傾向がある理由の説明です

2
Cameron Kerr

x.x.21.122からDNSにすべてのトラフィックを渡してみてください。エラーが消える場合-ファイアウォールルールを改善する必要があります。

ご提供いただいたログを記録しますが、ポート39132で接続が見つかりません。また、asa設定を投稿してください。

0
BaZZiliO