Dnsmasq ile sistem çözümlemesi ve DNS çözümlemesi nasıl devre dışı bırakılır?


Yanıtlar:


35

dnsmasq paketleri 16.10 ve 17.04'te hala mevcuttur.

  1. Devre dnsmasqdışı bırakmadan öncesystemd-resolved yükleme ve bağımlılıklar (veya en azından paketlerini indirin) :

    sudo apt-get install dnsmasq
    
  2. Devre Dışı Bırak systemd-resolvedve doğrula dnsmasqçalışıyor:

    sudo systemctl stop systemd-resolved
    sudo systemctl disable systemd-resolved
    
    systemctl status dnsmasq
    
  3. Tatmak dnsmasqiç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. dnsmasqVarsayı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.confve yeniden başlatmak dnsmasqbir liveCD ortamında çalışmasını sağlamak için yeterliydi.


Harika bir cevap ve görünüşte NetworkManager'ı devre dışı bırakırken tek çözüm kabul edilemez!
bogl

3
Benim için, bu harika bir cevaptı ama aynı zamanda @ dns=dnsmasq/etc/NetworkManager/NetworkManager.conf
blabla'nın cevabından

Burada aynı. Sistemde çözülen ve sınırsız olan dnsmasq'a geçmekle uğraştıktan sonra ubuntu 17.10 ile ilgili bir numara yaptı. Ancak blabla'nın eklemelerini kullanmak zorunda kaldım.
Alberto L. Bonfiglio

17

@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.confbir 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

Aslında onu ayarladım dns=defaultve 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.
pbhj

1
Bu adım @ quixotic'in benim için verdiği cevaba gerekli bir katkı oldu (ubuntu 17.04, tam kurulum, LiveCD değil).
Roberto Tyley

0

Sistem çözümlemesi kılavuzuna göre sistem çözümlemesi , üç farklı arayüz üzerinden isim çözümleme hizmetleri sunar:

  1. "Tam özellikli API sistemi ve veri yolu üzerinde çözümlemeler"
  2. "Yerel geri döngü arabiriminde 127.0.0.53 IP adresinde yerel bir DNS saplayıcısı dinleyicisi"
  3. 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 :))


0

İç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
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.