"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....