Yerel etki alanlarını çözmek için yerel DNS sunucusunu ve uzak etki alanlarına yönelik uzak DNS sunucusunu kullanmak için systemd çözümlenmiş ve systemd-networkd nasıl yapılandırılır?


26

Ağ geçidi üzerinden internete erişimi olan yerel alan ağına bağlıyım. Yerel ağda, bilgisayarların ana bilgisayar adlarını yerel ağdan çözümleyebilen DNS sunucusu var.

Yerel ana bilgisayar adları için arama isteklerinin yalnızca yerel DNS sunucusuna yönlendirilmesi (yönlendirilmesi) ve diğer tüm ana bilgisayar adları için arama isteklerinin yalnızca başka bir uzak DNS sunucusuna yönlendirilmesi için sistemd çözümlemeli ve sistemdd ağını yapılandırmak istiyorum .

Yapılandırma dosyalarının nerede olduğunu veya daha fazla dosya ekleyip eklemem gerekip gerekmediğini belirtmek için yanıtta belirtilmesi gerekip gerekmediğini bilmiyorum.

Yanıtlar:


28

Yerel ağ arayüzünün yapılandırma dosyasında ya şu DHCP=seçeneği kullanarak DHCP sunucusundan yerel DNS sunucusu adresi almak istediğimizi belirtmeliyiz :

[Network]
DHCP=yes

veya adresini açıkça kullanarak DNS=seçeneğini belirtin :

[Network]
DNS=10.0.0.1

Ek olarak, seçeneği kullanarak (aynı bölümde) yerel alanları belirtmemiz gerekirDomains=

Domains=domainA.example domainB.example ~example

domainA.example domainB.exampleAşağıdaki davranışı elde etmek için yerel etki alanları belirtiyoruz ( systemd-resolved.service, systemd-resolved man sayfasından):

Arabirim başına etki alanlarından birinde biten bir ana bilgisayar adı aranır, yalnızca eşleşen arabirimlere yönlendirilir.

Bu yol yalnızca yerel DNS sunucumuz tarafından hostX.domainA.exampleçözülecektir .

Biz birlikte belirtmek ~examplebiten tüm etki olduğunu example(açıklamasında şu davranışı elde etmek rota okunur alanlar olarak tedavi edilecek olan bu taahhüt):

Yalnızca rota etki alanlarına sahip DNS sunucuları yalnızca belirtilen etki alanları için kullanılmalıdır.

Bu yol yalnızca global uzak DNS sunucumuz tarafından hostY.on.the.internetçözülecektir .

Not

İdeal olarak, DHCP protokolünü kullanırken, yerel ağ adları yukarıdaki ağ arayüzünün yapılandırma dosyasında açıkça belirtilmek yerine DHCP sunucusundan alınmalıdır. Bkz UseDomains=seçeneği . Bununla birlikte, bu özellik ile ilgili hala olağanüstü sorunlar var - bkz. Systemd-networkd DHCP arama alanları seçenek sorunu.

Uzak DNS sunucusunu, sistem genelinde global DNS sunucumuz olarak belirtmemiz gerekir. Bunu /etc/systemd/resolved.confdosyada yapabiliriz:

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

Yapılandırmayı yeniden yüklemeyi ve hizmetleri yeniden başlatmayı unutmayın:

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

Dikkat!

Garanti isimler tarafından çözümlenen yalnızca geçerli Üstü systemd-çözüldü - bakınız man sayfalarını nss-kararlılığı, libnss_resolve.so.2 ve systemd-resolved.service man sayfasında, systemd-çözüldü .

Ayrıca bakınız:

Referanslar:


6
.localBu örnekte kullanmamayı düşündünüz mü ? Kesinlikle avahi ile, bunun MDNS için ayrılması ve yanlış kullanılması büyük bir hayır-hayır olması gerekiyordu. example.comVeya .example kullanmak benim için daha açık olurdu .
kaynakjedi

1
@sourcejedi Başvuru için .local, Çok Noktaya Yayın DNS Adları bölümündeki RFC 6762 - Çok Noktaya Yayın DNS'de özel etki alanı olarak tanımlanır . Sağol, düzeltildi.
Piotr Dobrogost

İlgisiz not: cevapları kendiniz de kabul edebilirsiniz.
intelfx

2
Yerel ağ arayüzü için yapılandırma dosyasının konumunu eklemenin faydalı olacağını düşünüyorum . Doğru olduğundan emin değil /etc/systemd/network/*.networkmisin? Burada bulundu superuser.com/a/1365864
Pierre Cordier 22:18

1
Bu cevabın "Konfigürasyon dosyasında ..." ın OP’lere cevap vermediğini gözlemledim. "Konfigürasyon dosyalarının nerede olduğunu bilmiyorum." Belirli yapılandırma dosyalarının konumu, bu cevap eksik.
Eric Towers

1

Sadece @piotrDobrogost'un mükemmel cevabını genişletmek için DNS çözümlemesi kaynağı olarak /etc/nsswitch.confkullanmak için yapılandırmayı unutmayın systemd-resolved. Sizin hostsbelirli kullanımlar için aşağıdaki gibi direktif görünmelidir:

/etc/nsswitch.conf

hosts:  files resolve dns

Eğer belirtilen sadece bu alanlara çözünürlüğü sınırlamak Yani eğer Domainsiçinde direktifi /etc/systemd/resolved.confPiotr yukarıda ayrıntıları olarak, DNS sonraki belirtilen ad çözümlemesi kaynaklarının sırayla danışılmalıdır /etc/nsswitch.confetki edildiğinde NOT bulundu Domainsdirektifi:

Aşağıdaki bağlantı referansları belirtmek için gereksinim azmini de /etc/nsswitch.confbu yüzden systemd-resolvedad çözümlemesi sırasında danışılır:

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

SystemD belgeleri korkunç buldum. Piotr'ın yukarıdaki cevabı ;-) dahil birden fazla bağlantıdan bir anlayışı bir araya getirmem gerekiyordu ;-)


Önerilen systemd-resolved çalışma modu kullanıldığında , sırayla systemd-resol'ün DNS saplama çözücüsünün adresini içeren dosyaya /etc/resolve.confbir link olduğu yerde , DNS isteklerine yönlendirileceği için (standart direktif nedeniyle ) dosyaya yönerge koymaya gerek yoktur . sistem çözülmüş kurallarına göre hareket eden saplama çözücüsü . /run/systemd/resolve/stub-resolv.confresolve/etc/nsswitch.confnss-dns
Piotr Dobrogost

@PiotrDobrogost DNS çözünürlüğünün sipariş kaynaklarına nasıl kontrol edilir? /etc/nsswitch.conf``? In the specimen config above, / Etc / hosts` kullanmadan danışılır (" dosyalar ") statik IP için denetlenir : ad eşlemeleri ve bunlardan hiçbiri bulunmazsa, çözülen sistem sapı çözülür ve daha sonra danışılır . Bu nedenle kullanmadan DNS çözümlemesi kaynaklarını aşamalandırmanın nasıl mümkün olacağını göremiyorum /etc/nsswitch.conf. Burada bir numaramı özlüyor muyum?
F1Linux

Buna /etc/nsswitch.confgerek olmadığını söylemiyorum . Bir sistemd çözümlenmiş saplama DNS çözücüsü kullandığında, o zaman (muhtemelen yönergeden sonra ) doğrultusunda dnslistelenen yönergenin yeterli olduğunu söylüyorum . Buradaki yönergeye gerek yoktur , çünkü hosts:fileresolvenss-resolve
sistemde

... Diğer bir deyişle yapabilirsiniz ulaştığınız en systemd-çözülmesi mantık aracılığıyla ya resolveyönerge ➟ Nss çözümleme NSS eklentisi ➟ modülü systemd-çözülmesi veya içinden dnsyönerge ➟ Nss-DNS ➟ modül NSS-in plug -çözüldü systemd 's ' saplama DNS çözümleyici ➟ systemd-
resolved

Bence @PiotrDobrogost ben geldi filessonra resolveiçinde şeysi /etc/nsswitch.confSorunuzun 2 bölümünden. Yeniden okumak, sanki bir IP: ad eşlemesi için yerel önbelleği kontrol etmekten bahsediyor gibisiniz, daha sonra bulunmazsa bir ileticiye ulaşmak. Genellikle files, üretim ana bilgisayarlarını test etmeme ve test etmeme izin vermek için DNS'yi atlamak üzere ilk DNS çözümleme kaynağını belirledim
F1Linux
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.