DNS systemd yang dicintai di 127.0.0.53 tampaknya berfungsi kecuali ketika saya meminta mesin lokal dengan nama. Tetapi jika saya meminta mereka dan secara spesifik menentukan server DNS lokal (router saya) maka saya mendapatkan balasan yang tepat. Tetapi file konfigurasi mengatakan itu juga menggunakan router sebagai alamat pencarian. Adakah pikiran?
Saya menjalankan Ubuntu 18.04 di laptop Dell saya.
Hasil yang salah:
$ nslookup web1
Server: 127.0.0.53
Address: 127.0.0.53#53
** server can't find web1: SERVFAIL
Juga Gagal
$ nslookup -i wlp3s0 web1
nslookup: couldn't get address for 'web1': not found
Hasil yang benar:
$ nslookup web1 192.168.1.1
Server: 192.168.1.1
Address: 192.168.1.1#53
Name: web1
Address: 192.168.1.107
Info Konfigurasi systemd-resolve
$ systemd-resolve --status
Global
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 (wlp3s0)
Current Scopes: DNS
LLMNR setting: yes
MulticastDNS setting: no
DNSSEC setting: no
DNSSEC supported: no
DNS Servers: 192.168.1.1
DNS Domain: wp.comcast.net
Link 2 (enp2s0)
Current Scopes: none
LLMNR setting: yes
MulticastDNS setting: no
DNSSEC setting: no
DNSSEC supported: no
Info Konfigurasi NetworkManager
$ cat /etc/NetworkManager/NetworkManager.conf
[main]
plugins=ifupdown,keyfile
[ifupdown]
managed=false
[device]
wifi.scan-rand-mac-address=no
Jadi, bagaimana saya mendapatkan nslookup untuk mengembalikan jawaban yang benar? Tautan 3 tampaknya merupakan informasi yang benar (koneksi wifi saya) dan DNS saya di router mengembalikan jawaban yang benar tetapi cache lokal tidak pernah mencoba mencari alamat (atau sepertinya).
sumber
nslookup -i wlp3s0 web1
Jawaban:
File resolv.conf Anda tidak menunjuk ke tempat yang salah -
../run/systemd/resolve/stub-resolv.conf
adalah tempat yang seharusnya ditunjuk secara default.Masalahnya adalah bahwa
systemd-resolved
tidak memberikan nama yang tidak bertitik ke DNS. Rupanya ini berfungsi "seperti yang dirancang". Lihat masalah github ini yang menyatakan bahwa "diselesaikan tidak akan pernah mengizinkan pencarian label tunggal bocor ke DNS unicast".Apakah Anda setuju dengan alasan bahwa masalah github, ada adalah cara untuk memperbaiki ini. Bahkan tidak perlu membuat perubahan apa pun pada pengaturan default pada mesin Ubuntu Anda:
Pertama, DNS LAN Anda harus memiliki nama domain.
Jika Anda menggunakan dnsmasq, tambahkan berikut ini
/etc/dnsmasq.conf
di server DNS Anda:Anda sekarang harus dapat menyelesaikan nama host LAN jika Anda menambahkan domain:
Kedua, pastikan nama untuk domain LAN Anda juga diatur di server DHCP Anda jika berbeda dari server DNS Anda. Di server DHCP saya (router saya), pengaturan ini hanya disebut "Nama Domain".
Jika Anda kemudian memperbarui sewa DHCP di kotak Ubuntu Anda, Anda akan melihat arahan pencarian muncul di
/run/systemd/resolve/stub-resolv.conf
:Sekarang mencari
web1
akan memperluas keweb1.your-domain
, yang kemudian akan menyelesaikan menggunakan DNS.Perhatikan bahwa jika Anda menggunakan
dig
sebagai gantinyanslookup
,dig
tidak menggunakan jalur pencarian secara default - gunakan+search
opsi untuk mengaktifkannya.sumber
/etc/resolv.conf
atau di output salah satunmcli -g all
atausystemd-resolve --status
? Mungkin coba lihat apa yang ada dalam sewa DHCP Anda ?Saya menemukan perbaikan yang berhasil untuk saya.
file resolv.conf saya menunjuk ke tempat yang salah. Ini seperti bug di Ubuntu seperti yang terjadi pada laptop saya (mesin yang pertama kali saya perhatikan masalah ini) dan pada instalasi baru Ubuntu 18.04 Server.
Default
Saya menghapus ini dan menunjuk ke file yang benar. Setelah reboot, ini memecahkan masalah saya. Dan saya bahkan bisa mengganti jaringan di laptop saya dan DNSnya diganti dengan benar. Tentu saja ketika di jaringan eksternal saya tidak dapat menyelesaikan mesin lokal saya tetapi itu diharapkan. Segera setelah saya beralih kembali ke jaringan lokal saya, semua mesin lokal menyelesaikan dengan benar karena router saya adalah DNS.
Cara Mengatasinya
Setelah itu, semuanya berjalan seperti yang saya harapkan dan 127.0.0.53 tidak lagi digunakan sama sekali.
Hasil yang Benar
sumber
ubuntu-bug resolvconf
.systemd-resolve
disediakan olehsystemd
paket , jadi silakan cobaubuntu-bug systemd
saja.resolv.conf
sudah diatur seperti ini untuk DNS jaringan docker bridge kan?