GNU/Linux >> Linux の 問題 >  >> Linux

応答が 512 バイトを超えて切り捨てられている場合、DNS クエリを実行できません

"なぜこれがこのように機能するのかについての洞察を提供して、解決策があれば助けてもらえますか? "

短い答え:

デフォルトの Azure VM は壊れた DNS で作成されます:systemd-resolved さらに設定が必要です。 sudo systemctl status systemd-resolved これをすぐに確認します。 /etc/resolv.conf 127.0.0.53 を指す - ローカルの構成されていないスタブ リゾルバー。

ローカル スタブ リゾルバ systemd-resolved 構成されていませんでした。フォワーダーが設定されていなかったので、127.0.0.53 をヒットした後 他に尋ねる人はいませんでした。うーん。最後にジャンプして、Ubuntu 18.04 用に構成する方法を確認してください。

その結論にどのように到達したかが気になる場合は、長い回答を読んでください。

長い回答:

DNS 応答が 512 バイトを超えて切り捨てられた理由:

<ブロック引用>

TCP [RFC793] は常にフル ゾーン転送 (AXFR を使用) に使用され、サイズが DNS プロトコルの元の 512 バイト制限を超えるメッセージによく使用されます。

ソース:https://tools.ietf.org/html/rfc7766

分析:

これは思ったよりもトリッキーでした。そこで、OP の視点からテストできるように、Azure で Ubuntu 18.04 VM をスピンアップしました。

私の出発点は、DNS クエリを詰まらせるものが何もないことを検証することでした:

sudo iptables -nvx -L
sudo apparmor_status

iptables 内のすべてのチェーン デフォルトのポリシーが ACCEPT に設定されていた Apparmor でも 強制」に設定されました "、それは DNS に関係するものではありませんでした。そのため、この時点でホストで接続やアクセス許可の問題は観察されませんでした。

次に、方法を確立する必要がありました DNS クエリは歯車をくねくねと回っていました。

cat /etc/resolv.conf 

# This file is managed by man:systemd-resolved(8). Do not edit.
#
# This is a dynamic resolv.conf file for connecting local clients to the
# internal DNS stub resolver of systemd-resolved. This file lists all
# configured search domains.
#
# Run "systemd-resolve --status" to see details about the uplink DNS servers
# currently in use.
#
# Third party programs must not access this file directly, but only through the
# symlink at /etc/resolv.conf. To manage man:resolv.conf(5) in a different way,
# replace this symlink by a static file or a different symlink.
#
# See man:systemd-resolved.service(8) for details about the supported modes of
# operation for /etc/resolv.conf.

nameserver 127.0.0.53
options edns0
search ns3yb2bs2fketavxxx3qaprsna.zx.internal.cloudapp.net

resolv.confによると の場合、システムは systemd-resolved というローカル スタブ リゾルバを想定しています . systemd-resolved のステータスを確認しています 上記のテキストで与えられたヒントによると、エラー であることがわかります :

sudo systemctl status systemd-resolved

● systemd-resolved.service - Network Name Resolution
   Loaded: loaded (/lib/systemd/system/systemd-resolved.service; enabled; vendor preset: enabled)
   Active: active (running) since Tue 2019-10-08 12:41:38 UTC; 1h 5min ago
     Docs: man:systemd-resolved.service(8)
           https://www.freedesktop.org/wiki/Software/systemd/resolved
           https://www.freedesktop.org/wiki/Software/systemd/writing-network-configuration-managers
           https://www.freedesktop.org/wiki/Software/systemd/writing-resolver-clients
 Main PID: 871 (systemd-resolve)
   Status: "Processing requests..."
    Tasks: 1 (limit: 441)
   CGroup: /system.slice/systemd-resolved.service
           └─871 /lib/systemd/systemd-resolved

Oct 08 12:42:14 test systemd-resolved[871]: Server returned error NXDOMAIN, mitigating potential DNS violation DVE-2018-0001, retrying transaction with reduced feature level UDP.
<Snipped repeated error entries>

/etc/nsswitch.conf 解決された DNS クエリに使用されるソースの順序ソースを設定します。これは何を教えてくれますか?:

hosts:          files dns

DNS クエリがローカルの systemd-resolved にヒットすることはありません。 /etc/nsswitch.conf で指定されていないため、スタブ リゾルバー .

フォワーダーは systemd-resolved 用に設定されていますか? スタブ リゾルバ?!?!? /etc/systemd/resolved.conf でその構成を確認しましょう

[Resolve]
#DNS=
#FallbackDNS=
#Domains=
#LLMNR=no
#MulticastDNS=no
#DNSSEC=no
#Cache=yes
#DNSStubListener=yes

いいえ:systemd-resolved ローカル ip:name マッピングが見つからないかどうかを確認するフォワーダーが設定されていません。

これらすべての最終結果は次のとおりです。

  • ローカル IP:name がない場合、/etc/nsswitch.conf は DNS クエリを DNS に送信します。 /etc/hosts で見つかったマッピング

  • 照会する DNS サーバーは 127.0.0.53 です 構成ファイル /etc/systemd/resolved.conf を確認して、これが構成されていないことを確認しました。 .ここでフォワーダーが指定されていないため、問題を解決することはできません。

テスト:

スタブ リゾルバー 127.0.0.53 をオーバーライドしようとしました 168.63.129.16 を直接指定します。これは失敗しました:

dig aerserv-bc-us-east.bidswitch.net 168.63.129.16

; <<>> DiG 9.11.3-1ubuntu1.9-Ubuntu <<>> aerserv-bc-us-east.bidswitch.net 168.63.129.16
;; global options: +cmd
;; connection timed out; no servers could be reached
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NXDOMAIN, id: 24224
;; flags: qr rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 0, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 65494
;; QUESTION SECTION:
;168.63.129.16.         IN  A

;; Query time: 13 msec
;; SERVER: 127.0.0.53#53(127.0.0.53)
;; WHEN: Tue Oct 08 13:26:07 UTC 2019
;; MSG SIZE  rcvd: 42

いいえ:;; SERVER: 127.0.0.53#53(127.0.0.53) を見ています 出力の は、それをオーバーライドしておらず、ローカルの未構成のスタブ リゾルバーがまだ使用されていることを示しています。

ただし、次のコマンドのいずれかを使用すると、デフォルトの 127.0.0.53 が上書きされます スタブリゾルバであり、したがって NOERROR を返すことに成功しました 結果:

sudo dig aerserv-bc-us-east.bidswitch.net @168.63.129.16

または

dig +trace aerserv-bc-us-east.bidswitch.net @168.63.129.16 

したがって、systemd-resolved の使用に依存するクエリはすべて スタブ リゾルバーは、構成されるまで運命づけられていました。

解決策:

私のイニシャル - 不正解 - TCP/53 が信じられていた ブロックされていました:"Truncated 512 全体 スタブ リゾルバーが構成されていませんでした。私は仮定を行いました-知っている、知っている、「絶対に想定しないでください;-) - DNS が別の方法で構成されていると。

systemd-resolved の設定方法 :

Ubuntu 18.04

hosts を編集します /etc/nsswitch.conf のディレクティブ 以下のように resolve を先頭に追加します systemd-resolved を設定する DNS 解決の最初のソースとして:

hosts:          resolve files dns

DNS を編集します /etc/systemd/resolved.conf のディレクティブ (最低) 目的のフォワーダーを指定します。この例では次のようになります:

[Resolve]
DNS=168.63.129.16

systemd-resolved を再起動します :

sudo systemctl restart systemd-resolved

RHEL 8:

systemd-resolved の設定に関しては、Red Hat がほとんどすべてを行ってくれます。 スタブ リゾルバとして、システムにそれを使用するように指示しなかったことを除いて!

hosts を編集します /etc/nsswitch.conf のディレクティブ 以下のように resolve を先頭に追加します systemd-resolved を設定する DNS 解決の最初のソースとして:

hosts:          resolve files dns

systemd-resolved を再起動します :

sudo systemctl restart systemd-resolved

ソース :https://www.linkedin.com/pulse/config-rhel8-local-dns-caching-terrence-houlahan/

結論:

一度 systemd-resolved テスト VM の DNS が期待どおりに動作するように構成されました。私はそれについてだと思います....


Linux
  1. Linuxでドライブをマウントするさまざまな方法?

  2. BIND DNSサーバーログを有効にしてクエリを監視し、トラブルシューティングを行うにはどうすればよいですか?

  3. Bashでは、いつエイリアスを作成し、いつスクリプトを作成し、いつ関数を作成するのですか?

  1. いつ、なぜApt-get Updateを使用する必要がありますか?

  2. ルートとして実行している場合でも、ファイルを削除できませんか?

  3. chroot Jail で DNS および FTP サービスを実行する方法

  1. 代替手段を実行するタイミングと理由 --install java jar javac javaws on Linux に jdk をインストールする

  2. 接続時のssh遅延

  3. システムがアイドル状態で、再びアクティブになったときにコマンドを実行する