Ubuntu 18.04. Pencarian domain lokal dns tidak berfungsi

18

Saya menggunakan Raspberry Pi 3 dengan Ubuntu 18.04. Di perusahaan saya, kami memiliki server DNS dan beberapa domain dengan ".local". Saya tahu secara teknis ini tidak benar dan seharusnya ".lan" sebagai gantinya, karena .local dicadangkan untuk multicast dns. Tapi begitulah adanya dan tidak mudah diubah. Jadi pada mesin windows saya, saya dapat melakukan ping dan browse ke nama-nama domain tersebut tanpa kesulitan. Namun pada Ubuntu saya tidak bisa.

Saya tidak dapat menggunakan IP karena beberapa domain berada di mesin yang sama dan server web IIS memilah-milah apa yang terjadi di mana.

Saya telah mencari dan muncul cukup sering:

Namun mengubah /etc/nsswitch.conf tidak membantu saya. Saya mencoba

  • hosts: file mdns4_minimal [NOTFOUND = return] dns myhostname # default
  • host: file dns
  • host: file mdns4_minimal [NOTFOUND = lanjutkan] dns myhostname
  • hosts: files mdns4 [NOTFOUND = return] dns myhostname
  • host: file mdns4 [NOTFOUND = lanjutkan] dns myhostname
  • host: file dns mdsn4_minimal myhostname
  • host: dns
  • beberapa lainnya

Tidak ada yang berhasil. Saya mencoba me-reboot setelah perubahan juga. Saya mencoba memberi tahu avahi bahwa nama domain = alocal di /etc/avahi/avahi-daemon.conf, tidak berfungsi setelah restart layanan, tidak berfungsi setelah reboot. Setelah ini tidak berfungsi, saya mencoba menonaktifkan layanan avahi-daemon sepenuhnya.

sudo systemctl disable avahi-daemon

Setelah reboot saya mencoba beberapa permutasi di /etc/nsswitch.conf lagi, tanpa efek.

dengan pengaturan saya saat ini di host (file dns) saya mendapatkan respons ini:

dig login.name.local # not the actual name

; <<>> Dig 9.11.3-1ubuntu1.1-Ubuntu <<>> login.name.local
;; global options: +cmd
;; Got answer:
;; WARNING .local is reserved for Multicast DNS
;; You are currently testing what happens when an mDNS query is leaked to DNS
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 33538
;; flags: qr rd ra; QUERY: 1, ANSWER:0, AUTHORITY: 0, ADDITIONAL: 1

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

;; Query time: 2msec
;; SERVER: 127.0.0.53#53(127.0.0.53)
;; WHEN: Thu Aug 23 10:51:50 CEST 2018
;; MSG SIZE  rcvd: 56

Namun ketika saya menginstruksikan menggali untuk meminta server secara langsung, saya mendapatkan jawaban yang benar:

dig @dnsIP login.name.local
; <<>> Dig 9.11.3-1ubuntu1.1-Ubuntu <<>> login.name.local
; (1 server found)
;; global options: +cmd
;; Got answer:
;; WARNING .local is reserved for Multicast DNS
;; You are currently testing what happens when an mDNS query is leaked to DNS
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 57866
;; flags: qr aa rd ra; QUERY: 1, ANSWER:1, AUTHORITY: 0, ADDITIONAL: 1

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

;; ANSWER SECTION:
login.name.local. 3600 IN    A        serverIP

;; Query time: 2msec
;; SERVER: dnsIP#53(dnsIP)
;; WHEN: Thu Aug 23 10:51:50 CEST 2018
;; MSG SIZE  rcvd: 56

Versi Ubuntu ini menggunakan netplan dengan manajer jaringan. IP DNS yang benar pasti ada dalam daftar. (sebenarnya ini DNS primer.) Juga dnsIp sama dengan serverIP, tapi itu seharusnya tidak menjadi masalah.

Mem-ping atau menghubungkan melalui peramban dan hal semacam itu tentu saja tidak berhasil. Tidak ada yang menggunakan kueri dns.

Saya bingung apa yang harus dilakukan. Tentu saja kami tidak dapat beralih ke nama domain yang berbeda. Saya memasukkan nama server ke / etc / hosts tapi itu hanya solusi sementara.

FalcoGer
sumber
mengubah resolv.conf seperti yang disarankan jeremfg bekerja untuk saya setelah mengejar ekor saya selama beberapa jam. Tnx.
user3529828

Jawaban:

13

Saya menghadapi masalah yang sangat mirip (jika tidak persis sama) di Linux Mint 19 (Tara). Saya sudah berhasil menyelesaikannya dengan menggabungkan 3 informasi berbeda. Tampaknya semua terkait dengan perubahan terbaru dengan systemd-diselesaikan.

Pertama, ya saya harus mengkonfigurasi /etc/nsswitch.conf seperti yang Anda lakukan dan harapkan. Selama dns datang sebelum mdns Anda harus baik. Saya mengakhiri dengan sederhana:

hosts:          files dns myhostname

ref: /unix//a/457172/271210

Sebelum meningkatkan ke versi Mint ini, ini adalah satu-satunya hal yang perlu saya lakukan. Sekarang saya juga akhirnya membuat dua perubahan di bawah ini untuk membuatnya berfungsi ...


Setelah itu saya mengkonfigurasi domain pencarian saya sehingga systemd-resolved akan berfungsi seperti yang saya inginkan. Jadi saya telah mengedit file /etc/systemd/resolved.conf , pengaturan Domain di bagian [resol] . Dalam kasus saya itu akhirnya tampak seperti:

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

ref: /ubuntu//a/1031271/872881

Saya juga mengubah konfigurasi avahi menjadi sesuatu yang lain ("mdns" jika saya ingat dengan benar, tetapi tidak masalah). Seharusnya tidak diperlukan dari pemahaman saya. Hanya menambahkan untuk kelengkapan.


Tapi tidak ada yang berfungsi sampai saya menelepon yang berikut:

sudo ln -sf /run/systemd/resolve/resolv.conf /etc/resolv.conf

ref: /ubuntu//a/938703/872881

Setelah memanggil ini, semuanya mulai bekerja dengan sempurna dan seperti yang diharapkan!

Jadi mungkin saya tidak benar-benar perlu mengubah file /etc/systemd/resolved.conf tapi saya menyimpan perubahan ini karena itu masuk akal dan memungkinkan saya untuk hanya mengetik nama mesin, tanpa FQDN lengkap, agar resolusi DNS berfungsi. .

jeremfg
sumber
Anda bisa saja meletakkan baris terakhir di awal dan saya kira Anda akan mendapatkan lebih banyak upvotes dengan melakukannya.
HongboZhu
@ YongboZhu saya akan jika saya tahu pasti itu satu-satunya perubahan yang diperlukan untuk membuat domain lokal berfungsi. Saya cukup yakin Anda masih harus memilih dns daripada mdns dalam konfigurasi resolver juga. Saya menganggap komentar Anda berkaitan dengan konfigurasi domain di tengah? Jika demikian, ya saya kira saya bisa menempatkan ini pada akhirnya sebagai perubahan opsional. Tetapi dua potong lainnya diperlukan IMHO.
jeremfg
1
Pada pemasangan baru saya di 18.04.2, ubah saja "host" memesan di nsswitch.conf sudah berfungsi.
Tomofumi
17

Jawaban yang diterima tidak menyelesaikan masalah saya. Itu tidak ada hubungannya dengan avahi - saya tidak menginstal layanan avahi. Saya mengatur sistem saya untuk mendapatkan ip DAN pengaturan server dns dari DHCP. Namun, DNS yang disediakan dhcp tidak diperiksa untuk pertanyaan menggunakan .local

Masalah sebenarnya adalah bahwa Ubuntu 18.4 memiliki resolv.conf sym-linked ke file rintisan yang menunjuk ke localhost untuk resolusi nama. Resolusi nama localhost dns berarti bahwa sistem menolak untuk memeriksa server DNS yang disediakan untuk nama lokal, percaya (salah) bahwa nama-nama tersebut tidak valid. Ini adalah pengaturan default dari /etc/resolv.conf:

ls -la /etc/resolv.conf
lrwxrwxrwx 1 root root 39 Jan 22 13:26 /etc/resolv.conf -> ../run/systemd/resolve/stub-resolv.conf

isi dari file rintisan adalah (komentar dihapus):

 cat /run/systemd/resolve/stub-resolv.conf
 .. removed comments..  
nameserver 127.0.0.53
    search reddog.microsoft.com

conf resolus 'nyata' memiliki pengaturan dns 'benar' (dari dhcp):

cat /run/systemd/resolve/resolv.conf

..removed comments..
nameserver 10.168.200.250 # This is my server that can resolve .local
nameserver 208.67.220.220 # these are optional, fallback dns servers
nameserver 208.67.222.222
# Too many DNS servers configured, the following entries may be ignored.
nameserver 8.8.8.8
search reddog.microsoft.com

Untuk membuat sistem menggunakan resolver DNS pilihan Anda, bukan localhost, Anda mengubah symlink untuk menunjuk ke /run/systemd/resolve/resolv.conf alih-alih /run/systemd/resolve/stub-resolv.conf:

sudo rm -f /etc/resolv.conf
sudo ln -s /run/systemd/resolve/resolv.conf /etc/resolv.conf

Segera setelah ini, resolusi .local mulai berfungsi. tidak perlu reboot atau memulai kembali layanan apa pun.

OzPHB
sumber
Saya mencopot pemasangan Avahi dan kemudian mengikuti langkah Anda. Itu membuatnya untuk saya. Terima kasih Pak. (Menggunakan Desktop Ubuntu 18.04).
José L. Patiño
Terima kasih. Ini jawaban untuk saya. Mengapa tidak "berhasil" di luar kotak?
adampski
apa perbedaan antara solusi Anda dan jawaban yang diterima? Untuk keduanya, satu dapat melewati 2/3 pertama dari jawaban - bahkan itu sama :-)
HongboZhu
Ini adalah satu-satunya jawaban yang saya lihat sejauh ini yang mereplikasi perilaku di versi Ubuntu sebelumnya (dan linux lainnya), yaitu daftar server DNS disediakan oleh DHCP dan resolusi alamat tidak pernah di-cache secara lokal.
Irisan
2

Bagi saya cara kerja untuk Ubuntu 18.04 adalah:

Edit avahi conf:

sudo vim /etc/avahi/avahi-daemon.conf

dan ubah .local ke .alocal:

[server]
domain-name=.alocal

lalu, buka resolved.conf:

sudo vim /etc/systemd/resolved.conf

dan batalkan komentar dan edit Domain:

[Resolve]
...
Domains=yourdomain.local
...

dan akhirnya restart layanan:

sudo service systemd-resolved restart
sudo service avahi-daemon restart
Anton To
sumber
Dalam kasus saya saya hanya perlu mengubah Domainsdi /etc/systemd/resolved.conf(dan restart layanan).
tokosh
2
Ini tidak melakukannya untuk saya. masih belum ada
FalcoGer
Versi Ubuntu yang sama. Menggunakan openvpn. Solusi ini berfungsi baik dengan VPN di banyak mesin di tim saya.
razvanone
2

Apa yang berhasil bagi saya adalah menambahkan DNS lokal sebagai server nama /etc/resolvconf/resolv.conf.d/head(seperti dijelaskan di sini ).

  1. Instal paket resolvconf.

    sudo apt install resolvconf
    
  2. Edit /etc/resolvconf/resolv.conf.d/headdan tambahkan berikut ini:

    nameserver 8.8.4.4  
    nameserver 8.8.8.8  
    
  3. Mulai ulang layanan resolvconf.

    sudo service resolvconf restart
    

Perbaikannya harus permanen.

Kevin Stevens
sumber
File kepala berisi peringatan untuk tidak mengedit file, karena dihasilkan oleh resolvconf?
John Mee
@JohnMee headFile adalah sumber yang digunakan untuk menghasilkan /run/resolvconf/resolv.conf. Namun, saya tidak akan mengedit file ini juga.
Melebius
0

Situasi saya mirip tetapi agak berbeda: Kami menggunakan nama server seperti myserverpada Windows tetapi ini tidak berfungsi pada Ubuntu 16.04 dan saya harus menggunakannya myserver.mycompany.local. Setelah memutakhirkan ke 18,04, saya mendapatkan perilaku berikut:

$ ping myserver.mycompany.local
ping: myserver.mycompany.local: Name or service not known

$ ping myserver
PING myserver.mycompany.local (192.168.x.y) 56(84) bytes of data.
64 bytes from myserver.mycompany.local (192.168.x.y): icmp_seq=1 ttl=62 time=3.05 ms
...

Saya hanya harus mengganti myserver.mycompany.localdengan myserverdalam aplikasi saya.

Melebius
sumber