Yanıtlar:
dnsmasq
paketleri 16.10 ve 17.04'te hala mevcuttur.
Devre dnsmasq
dışı bırakmadan öncesystemd-resolved
yükleme ve bağımlılıklar (veya en azından paketlerini indirin) :
sudo apt-get install dnsmasq
Devre Dışı Bırak systemd-resolved
ve doğrula dnsmasq
çalışıyor:
sudo systemctl stop systemd-resolved
sudo systemctl disable systemd-resolved
systemctl status dnsmasq
Tatmak dnsmasq
için mevsim . Ayarlarınızı uyguladıktan sonra yeniden başlatın dnsmasq
:
sudo systemctl stop dnsmasq
sudo systemctl start dnsmasq
2. adımdan sonra, 3. adım tamamlanıncaya kadar çalışan bir sistem çözücüsü olmayabilir. dnsmasq
Varsayılan yapılandırmalarla çalışmak için ağ alt sistemini (veya sadece yeniden başlatmayı) yeniden başlatmanız gerekebilir . Testlerime, bilinen bir DNS sunucusunu eklemek /etc/dnsmasq.conf
ve yeniden başlatmak dnsmasq
bir liveCD ortamında çalışmasını sağlamak için yeterliydi.
dns=dnsmasq
/etc/NetworkManager/NetworkManager.conf
@Quixotic'un cevabına ek olarak:
/Etc/NetworkManager/NetworkManager.conf dosyasında olduğunuzdan emin olun:
[main]
dns=dnsmasq
eklemeniz gerekirse, NetworkManager'ı şu şekilde yeniden başlatın:
sudo systemctl restart NetworkManager
ve /etc/resolv.conf
bir bağlantı olması gerekiyor /var/run/NetworkManager/resolv.conf
. böyle yapılabilir
sudo rm /etc/resolv.conf; sudo ln -s /var/run/NetworkManager/resolv.conf /etc/resolv.conf
dns=default
ve düzgün çalışıyor çünkü dnsmasq içinde tanımlanmak yerine, daha sonra NetworkManager tarafından tanımlanmış ad sunucularına sahibim; bu benim için çalışıyor - NM, KDE'nin NM yapılandırmasında sistem tepsisinden yapılan ayarlardan ad sunucularını alıyor. Ev ağımda FWIW üzerinde sabit IP kullanıyorum.
Sistem çözümlemesi kılavuzuna göre sistem çözümlemesi , üç farklı arayüz üzerinden isim çözümleme hizmetleri sunar:
RFC3493 tarafından tanımlanan glibc getaddrinfo (3) API ve gethostbyname (3) dahil olmak üzere ilgili çözümleyici işlevleri. Bu API, Linux platformunun dışında da geniş çapta desteklenmektedir. Mevcut haliyle, DNSSEC doğrulama durumu bilgisini göstermez ve sadece senkronizedir. Bu API, glibc Ad Servis Anahtarı (nss (5)) tarafından desteklenmektedir. Glibc'nin NSS çözümleyici işlevlerinin ana bilgisayar adlarını sistemd çözümlemesiyle çözmesine izin vermek için glibc NSS modülünün nss solve (8) kullanılması gerekir.
İlk iki arayüzün normal DNS çözünürlüğüne müdahale etmeyeceği anlaşılıyor ve benim için sorunun üçüncü üzerinde kalması muhtemel.
Nss-solve kılavuzunda :
NSS modülünü etkinleştirmek için /etc/nsswitch.conf içindeki "hosts:" ile başlayan satıra "çözüm" ekleyin. Özellikle /etc/nsswitch.conf'ın "hosts:" satırına "çözüm" yazın (ancak "dosyalar" veya "makineler" girişlerinden sonra), varsa "dns" girişinden hemen önce yerleştirmeniz önerilir; "[! UNAVAIL = return]", DNS sorgularının çalışıyorsa her zaman sistemd çözümlemesiyle (8) yönlendirilmesini sağlamak, ancak bu hizmet kullanılamıyorsa nss-dns öğesine yönlendirilmesini sağlamak için
Öyleyse, gerekli olan "dns" in /etc/nsswitch.conf satırındaki "host:" satırında "çözülmesinden" önce yapılmasıdır . Ve sonra /etc/resolv.conf 'agetaddrinfo
uymalısınız .
Bu çözüm yalnızca sistemin çözümlediği tüm DNS çözümleme isteklerini yerine getirmesini önler ve belirli bir ağ yöneticisi ile sınırlı değildir. Ayrıca LLMNR ve mDNS servisinin normal şekilde çalıştığından emin olmanızı sağlar.
(Ad çözümlemesinin Linux altında nasıl çalıştığını tam olarak bilmiyorum ve bu el kitaplarından ne anladığımdan da emin değilim. Pleaes yanlış bir şey bulduğumda işaret ediyor. Thx :))
İçin (X) Ubuntu 18.04 (benim bkz Stack Exchange de cevap ).
İşte kopyası (bir kopya yapmalı mıyım?)
(X) Ubuntu 18.04 Biyonik için çözüm.
Dnsmasq yükleyin
sudo apt install dnsmasq
53 numaralı bağlantı noktasındaki systemd çözümlenmiş dinleyiciyi devre dışı bırakın (yükseltme sırasında üzerine yazılabileceğinden /etc/systemd/resolved.conf adresine dokunmayın):
$ cat /etc/systemd/resolved.conf.d/noresolved.conf
[Resolve]
DNSStubListener=no
ve yeniden başlat
$ sudo systemctl restart systemd-resolved
(alternatif olarak tamamen devre dışı bırakın $ sudo systemctl disable systemd-resolved.service
)
/Etc/resolv.conf dosyasını silin ve tekrar oluşturun. Bu önemlidir, çünkü resolv.conf, varsayılan olarak /run/systemd/resolve/stub-resolv.conf ile sembolik bir bağlantıdır. Sembolik bağlantıyı silmeyecek olursanız, yeniden başlatma sırasında dosyanın üzerine systemd yazılır (biz systemd-resoldu! Ayrıca NetworkManager (NM), sistemin çözümlediği konfigürasyonu tespit etmek için sembolik bir bağlantı olup olmadığını kontrol eder.
$ sudo rm /etc/resolv.conf
$ sudo touch /etc/resolv.conf
/Etc/resolv.conf dosyasının üzerine NM olarak yazmayı devre dışı bırakın (bir seçenek rc yöneticisi de vardır, ancak bir kılavuzda açıklandığı halde çalışmaz):
$ cat /etc/NetworkManager/conf.d/disableresolv.conf
[main]
dns=none
ve yeniden başlatın:
$ sudo systemctl restart NetworkManager
Dnsmasq'a NM'den resolv.conf kullanmasını söyleyin:
$ cat /etc/dnsmasq.d/nmresolv.conf
resolv-file=/var/run/NetworkManager/resolv.conf
ve yeniden başlatın:
$ sudo systemctl restart dnsmasq
Çözmek için dnsmasq kullanın:
$ cat /etc/resolv.conf
# Use local dnsmasq for resolving
nameserver 127.0.0.1