GNU/Linux >> Belajar Linux >  >> Linux

Bagaimana cara mengkonfigurasi systemd-resolved dan systemd-networkd untuk menggunakan server DNS lokal untuk menyelesaikan domain lokal dan server DNS jarak jauh untuk domain jarak jauh?

Dalam file konfigurasi untuk antarmuka jaringan lokal (file yang cocok dengan pola nama /etc/systemd/network/*.network ) kita harus menentukan apakah kita ingin mendapatkan alamat server DNS lokal dari server DHCP menggunakan DHCP= opsi:

[Network]
DHCP=yes

atau tentukan alamatnya secara eksplisit menggunakan DNS= opsi:

[Network]
DNS=10.0.0.1

Selain itu, kita perlu menentukan (di bagian yang sama) domain lokal menggunakan Domains= opsi

Domains=domainA.example domainB.example ~example

Kami menentukan domain lokal domainA.example domainB.example untuk mendapatkan perilaku berikut (dari systemd-resolved.service, systemd-resolved halaman manual):

Pencarian untuk nama host yang diakhiri dengan salah satu domain per antarmuka secara eksklusif dirutekan ke antarmuka yang cocok.

Lewat sini hostX.domainA.example akan diselesaikan secara eksklusif oleh server DNS lokal kami.

Kita tentukan dengan ~example bahwa semua domain diakhiri dengan example harus diperlakukan sebagai domain khusus rute untuk mendapatkan perilaku berikut (dari deskripsi komit ini):

Server DNS yang memiliki domain khusus rute hanya boleh digunakan untuk domain yang ditentukan.

Lewat sini hostY.on.the.internet akan diselesaikan secara eksklusif oleh server DNS jarak jauh global kami.

Catatan

Idealnya, saat menggunakan protokol DHCP, nama domain lokal harus diperoleh dari server DHCP, bukannya ditentukan secara eksplisit dalam file konfigurasi antarmuka jaringan di atas. Lihat UseDomains= pilihan. Namun masih ada masalah dengan fitur ini – lihat masalah opsi domain pencarian DHCP systemd-networkd.

Kami perlu menentukan server DNS jarak jauh sebagai server DNS global sistem kami. Kita bisa melakukannya di /etc/systemd/resolved.conf berkas:

[Resolve]
DNS=8.8.8.8 8.8.4.4 2001:4860:4860::8888 2001:4860:4860::8844

Jangan lupa memuat ulang konfigurasi dan memulai ulang layanan:

$ sudo systemctl daemon-reload
$ sudo systemctl restart systemd-networkd
$ sudo systemctl restart systemd-resolved

Perhatian!

Jaminan di atas hanya berlaku jika nama diselesaikan dengan diselesaikan dengan sistem – lihat halaman manual untuk nss-resolve, libnss_resolve.so.2 dan halaman manual untuk systemd-resolved.service, systemd-resolved.

Lihat juga:

  • Deskripsi permintaan pencarian perutean di halaman manual terkait sistem tidak jelas
  • Bagaimana cara memecahkan masalah DNS dengan systemd-resolved?

Referensi:

  • Halaman manual untuk systemd-resolved.service, systemd-resolved
  • Halaman manual untuk resolve.conf, resolve.conf.d
  • Halaman manual untuk systemd-network

Hanya untuk memperluas jawaban bagus @piotrDobrogost , jangan lupa untuk mengonfigurasi /etc/nsswitch.conf untuk menggunakan systemd-resolved sebagai sumber resolusi DNS. hosts Anda direktif akan terlihat seperti berikut untuk kasus penggunaan khusus Anda:

/etc/nsswitch.conf

hosts:  files resolve dns

Jadi, jika Anda membatasi resolusi hanya untuk domain yang ditentukan dalam Domains direktif dalam /etc/systemd/resolved.conf seperti perincian Piotr di atas, DNS selanjutnya harus dikonsultasikan dalam urutan sumber resolusi nama yang ditentukan /etc/nsswitch.conf saat domain BUKAN ditemukan di Domains direktif:

Tautan berikut mereferensikan persyaratan untuk menentukan penyelesaian di /etc/nsswitch.conf jadi systemd-resolved dikonsultasikan selama resolusi nama:

https://github.com/systemd/systemd/issues/940

Dokumentasi SystemD menurut saya mengerikan. Saya harus mengumpulkan pemahaman dari berbagai tautan, termasuk jawaban Piotr di atas;-)


Linux
  1. Bagaimana saya menggunakan Ansible dan anacron untuk otomatisasi

  2. Bagaimana cara mengaktifkan logging server DNS BIND untuk memantau kueri dan untuk pemecahan masalah?

  3. Bagaimana Menginstal dan Mengonfigurasi Bind untuk Mengatur Server DNS Anda?

  1. Bagaimana cara mengidentifikasi nama perangkat lunak server DNS jarak jauh dan versinya?

  2. Cara Menginstal WordPress di Ubuntu 18.04 dan Mengonfigurasinya untuk Menggunakan Database Jarak Jauh

  3. Cara Mengkonfigurasi RDP di Windows Server 2008 R2

  1. Cara Menginstal dan Mengkonfigurasi Server DNS (Bind 9) di Ubuntu / Debian

  2. Cara Mengkonfigurasi Server DNS Di Debian 10 / Debian 9

  3. Cara Menginstal dan Menggunakan Telnet di Debian 11