Saya menjalankan Ubuntu 18.04 (ditingkatkan dari beberapa versi sebelumnya) yang menggunakan Network Manager dan systemd-resolved untuk resolusi nama. Saat saya boot, koneksi ethernet saya enp0s31f6
dibawa oleh Manajer Jaringan dan diberikan tiga alamat server nama melalui DHCP, 10.1.13.10
, 10.1.141.10
, 10.1.13.36
. Menjalankan nmcli
menunjukkan tiga server nama di bawah "Konfigurasi DNS". Menjalankan systemd-resolve --status
menunjukkannya di bawah bagian "Tautan 2 (enp0s31f6)". Saya bisa melakukan ping masing-masing. Tidak ada koneksi lain yang aktif.
testuser ☼ systemd-resolve --status
Global
DNS Domain: (my org's domain)
DNSSEC NTA: 10.in-addr.arpa
16.172.in-addr.arpa
168.192.in-addr.arpa
17.172.in-addr.arpa
18.172.in-addr.arpa
19.172.in-addr.arpa
20.172.in-addr.arpa
21.172.in-addr.arpa
22.172.in-addr.arpa
23.172.in-addr.arpa
24.172.in-addr.arpa
25.172.in-addr.arpa
26.172.in-addr.arpa
27.172.in-addr.arpa
28.172.in-addr.arpa
29.172.in-addr.arpa
30.172.in-addr.arpa
31.172.in-addr.arpa
corp
d.f.ip6.arpa
home
internal
intranet
lan
local
private
test
Link 3 (wlp4s0)
Current Scopes: none
LLMNR setting: yes
MulticastDNS setting: no
DNSSEC setting: no
DNSSEC supported: no
Link 2 (enp0s31f6)
Current Scopes: DNS
LLMNR setting: yes
MulticastDNS setting: no
DNSSEC setting: no
DNSSEC supported: no
DNS Servers: 10.1.13.10
10.1.141.10
10.1.13.36
DNS Domain: (my org's domain)
Namun, ketika saya benar-benar mencoba untuk menyelesaikan sebuah nama, bahkan nama salah satu server nama, dig
mengklaim bahwa “waktu koneksi habis:tidak ada server yang dapat dijangkau”.
testuser ☼ dig dcpdc001.(my org's domain)
; <<>> DiG 9.11.3-1ubuntu1.1-Ubuntu <<>> dcpdc001.(my org's domain)
;; global options: +cmd
;; connection timed out; no servers could be reached
Perhatikan bahwa nama ini harus diubah menjadi 10.1.13.10
, server nama pertama.
Saya telah mengonfigurasi resolvconf
untuk menggunakan pembaruan dinamis. /etc/resolv.conf
menunjuk ke /run/resolvconf/resolv.conf
. File ini hanya berisi (non-komentar):
nameserver 127.0.0.53
search (my orgs local search domain)
Jika saya menambahkan nameserver 10.1.13.10
ke file ini secara manual, tiba-tiba dig
dapat diselesaikan lagi, dan apa pun yang perlu melihat nama lokal dapat melakukannya. Menghapus server nama akan merusaknya lagi.
Saya tidak tahu banyak tentang server. Mereka adalah bagian dari jaringan berbasis Windows, tetapi saya dapat menggunakannya jika saya mengedit resolv.conf
secara manual jadi menurut saya bukan itu masalahnya, dan itu menyiratkan bahwa saya tidak perlu diautentikasi ke domain untuk menggunakannya. (Saya dapat mengautentikasi ke domain melalui Ubuntu menggunakan Realmd/SSSD, tetapi tidak jika saya tidak dapat menyelesaikan pengontrol domain…)
journalctl
entri untuk systemd-resolved
hanya menampilkan beberapa pesan tentang "Menggunakan set fitur yang terdegradasi ... untuk server DNS" tetapi mereka hanya merujuk ke server nama ketiga, bukan yang lain. Tidak ada untuk server nama utama.
Bagaimana saya bisa membuat resolusi nama berfungsi tanpa harus mengedit resolv.conf
secara manual setiap kali saya boot?
Saya menganggap isi resolv.conf
saya berarti Network Manager atau Systemd memiliki semacam penyelesai caching lokal yang berjalan? Jika demikian, apakah mengabaikannya akan memperbaiki keadaan?
Saya meningkatkan level logging systemd-resolved
dan journalctl -f -u systemd-resolved
menunjukkan:
Jul 20 10:33:23 heerij-ubuntu systemd-resolved[2352]: Got DNS stub UDP query packet for id 19836
Jul 20 10:33:23 heerij-ubuntu systemd-resolved[2352]: Looking up RR for dcpdc001.(org domain) IN A.
Jul 20 10:33:23 heerij-ubuntu systemd-resolved[2352]: Switching to DNS server 10.1.13.10 for interface enp0s31f6.
Jul 20 10:33:23 heerij-ubuntu systemd-resolved[2352]: Cache miss for dcpdc001.(org domain) IN A
Jul 20 10:33:23 heerij-ubuntu systemd-resolved[2352]: Transaction 12728 for <dcpdc001.(org domain) IN A> scope dns on enp0s31f6/*.
Jul 20 10:33:23 heerij-ubuntu systemd-resolved[2352]: Using feature level UDP+EDNS0+DO+LARGE for transaction 12728.
Jul 20 10:33:23 heerij-ubuntu systemd-resolved[2352]: Using DNS server 10.1.13.10 for transaction 12728.
Jul 20 10:33:23 heerij-ubuntu systemd-resolved[2352]: Sending query packet with id 12728.
Jul 20 10:33:23 heerij-ubuntu systemd-resolved[2352]: Processing query...
Jul 20 10:33:23 heerij-ubuntu systemd-resolved[2352]: Timeout reached on transaction 12728.
Jawaban yang Diterima:
Systemd dilengkapi dengan resolver “stub”, systemd-resolved, yang menurut mereka sebenarnya tidak dimaksudkan untuk digunakan sebagai server DNS:
Yah, diselesaikan tidak seharusnya menjadi server DNS, itu seharusnya cukup baik sehingga klien DNS seperti libc dapat menyelesaikan barang-barang mereka, dan kami membawa cukup info untuk bit AD yang akan disetel.
Untuk alasan apa pun, Ubuntu dikonfigurasi untuk menggunakannya sebagai server DNS dan, pada kenyataannya, satu-satunya.
Komentar pada bug #1624320 menunjukkan bahwa systemd-resolved memiliki tiga mode operasi, dan yang kedua adalah yang memperbaiki masalah saya. Yaitu:
$ sudo rm -f /etc/resolv.conf
$ sudo ln -s /run/systemd/resolve/resolv.conf /etc/resolv.conf