GNU/Linux >> Belajar Linux >  >> Linux

Tidak dapat menjalankan kueri DNS saat respons lebih besar dari 512 Byte dan terpotong

"Adakah yang bisa memberikan beberapa wawasan tentang mengapa ini bekerja seperti ini dan membantu dengan beberapa solusi, jika ada? "

JAWABAN SINGKAT:

VM Azure default dibuat dengan DNS rusak:systemd-resolved membutuhkan konfigurasi lebih lanjut. sudo systemctl status systemd-resolved akan segera mengkonfirmasi ini. /etc/resolv.conf menunjuk ke 127.0.0.53 - penyelesai rintisan lokal yang belum dikonfigurasi.

Penyelesai rintisan lokal systemd-resolved tidak dikonfigurasi. Itu tidak memiliki forwarder set jadi setelah menekan 127.0.0.53 tidak ada orang lain untuk bertanya. Aduh. Lompat ke akhir untuk melihat cara mengonfigurasinya untuk Ubuntu 18.04.

Jika Anda peduli tentang bagaimana kesimpulan itu dicapai, silakan baca Jawaban Panjangnya.

JAWABAN PANJANG:

Mengapa Respons DNS Terpotong di atas 512 Byte:

TCP [RFC793] selalu digunakan untuk transfer zona penuh (menggunakan AXFR) dan sering digunakan untuk pesan yang ukurannya melebihi batas 512 byte asli protokol DNS.

Sumber:https://tools.ietf.org/html/rfc7766

ANALISIS:

Ini lebih rumit dari yang saya kira. Jadi saya memutar VM Ubuntu 18.04 di Azure sehingga saya dapat menguji dari sudut pandang OP:

Titik awal saya adalah untuk memvalidasi tidak ada yang menghambat kueri DNS:

sudo iptables -nvx -L
sudo apparmor_status

Semua rantai di iptables memiliki kebijakan default yang disetel ke ACCEPT dan meskipun Apparmor disetel ke "penegakan ", itu tidak ada hubungannya dengan DNS. Jadi tidak ada masalah konektivitas atau izin yang teramati pada host saat ini.

Selanjutnya saya perlu menetapkan bagaimana kueri DNS berputar-putar.

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

Jadi menurut resolv.conf , sistem mengharapkan penyelesai rintisan lokal yang disebut systemd-resolved . Memeriksa status systemd-resolved per petunjuk yang diberikan dalam teks di atas kita melihat itu kesalahan :

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 atur urutan sumber sumber yang digunakan untuk menyelesaikan kueri DNS. Apa artinya ini kepada kita?:

hosts:          files dns

Ya, kueri DNS tidak akan pernah mengenai systemd-resolved lokal stub resolver karena tidak ditentukan dalam /etc/nsswitch.conf .

Apakah forwarder bahkan disetel untuk systemd-resolved penyelesai rintisan?!?!? Mari tinjau konfigurasi tersebut di /etc/systemd/resolved.conf

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

Tidak:systemd-resolved tidak memiliki pengaturan penerusan untuk menanyakan apakah pemetaan ip:nama lokal tidak ditemukan.

Hasil bersih dari semua ini adalah:

  • /etc/nsswitch.conf mengirimkan kueri DNS ke DNS jika tidak ada IP:nama lokal pemetaan ditemukan di /etc/hosts

  • Server DNS yang akan ditanyakan adalah 127.0.0.53 dan kami baru saja melihat ini tidak dikonfigurasi dari meninjau file konfigurasinya /etc/systemd/resolved.conf . Tanpa penerusan yang ditentukan di sini, tidak mungkin kami berhasil menyelesaikan apa pun.

PENGUJIAN:

Saya mencoba mengganti penyelesai rintisan 127.0.0.53 dengan langsung menentukan 168.63.129.16. Ini gagal:

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

Tidak:melihat ;; SERVER: 127.0.0.53#53(127.0.0.53) di output memberitahu kita bahwa kita belum menimpanya dan penyelesai rintisan lokal yang belum dikonfigurasi masih digunakan.

Namun menggunakan salah satu dari perintah berikut mengesampingkan 127.0.0.53 default stub resolver dan karena itu berhasil mengembalikan NOERROR hasil:

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

atau

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

Jadi setiap kueri yang mengandalkan penggunaan systemd-resolved stub resolver dikutuk sampai dikonfigurasi.

SOLUSI:

Inisial saya- salah - kepercayaan adalah bahwa TCP/53 sedang diblokir:seluruh "Terpotong 512 " sedikit membingungkan. Penyelesai rintisan tidak dikonfigurasi. Saya membuat asumsi- Saya tahu, saya tahu, "JANGAN PERNAH MENANGGUNG;-) - bahwa DNS telah dikonfigurasi.

Cara mengonfigurasi systemd-resolved :

Ubuntu 18.04

Edit hosts direktif dalam /etc/nsswitch.conf seperti di bawah ini dengan menambahkan resolve untuk mengatur systemd-resolved sebagai sumber pertama resolusi DNS:

hosts:          resolve files dns

Edit DNS direktif (minimal) di /etc/systemd/resolved.conf untuk menentukan penerusan yang Anda inginkan, yang dalam contoh ini adalah:

[Resolve]
DNS=168.63.129.16

Mulai ulang systemd-resolved :

sudo systemctl restart systemd-resolved

RHEL 8:

Red Hat hampir melakukan segalanya untuk Anda sehubungan dengan penyiapan systemd-resolved sebagai penyelesai rintisan, kecuali mereka tidak memberi tahu sistem untuk menggunakannya!

Edit hosts direktif dalam /etc/nsswitch.conf seperti di bawah ini dengan menambahkan resolve untuk menyetel systemd-resolved sebagai sumber pertama resolusi DNS:

hosts:          resolve files dns

Kemudian mulai ulang systemd-resolved :

sudo systemctl restart systemd-resolved

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

KESIMPULAN:

Sekali systemd-resolved telah dikonfigurasi, DNS VM pengujian saya berperilaku seperti yang diharapkan. Saya pikir tentang itu....


Linux
  1. Cara Menjalankan layanan DNS dan FTP di chroot Jail

  2. Kapan dan Mengapa menjalankan alternatif --install java jar javac javaws saat menginstal jdk di linux

  3. penundaan ssh saat menghubungkan

  1. Jalankan perintah saat sistem dalam keadaan diam dan saat aktif kembali

  2. buat img kosong dengan dd sehingga sektornya berukuran 4096bytes, bukan 512

  3. Bagaimana cara mensimulasikan batas waktu respons server DNS?

  1. Mengelola partisi di Linux dengan fdisk

  2. Berbagai Metode untuk Memasang Drive di Linux?

  3. Di Bash, Kapan Alias ​​​​Kapan Skrip, Dan Kapan Menulis Fungsi?