Dnsmasq nasıl eklenir ve sistemd'de nasıl çözülür (18.04)


10

Ben dnsmasq ile hızlı dns çözünürlüğü almak ve varsayılan systemd çözümlenmiş tutmak istiyorum.

Bunu yapmanın zarif bir yolunu arıyorum


Systemd çözümünün DNS aramalarını da önbelleğe aldığını biliyor musunuz? Systemd çözümlü bir sistemde dnsmasq'a ihtiyacınız yoktur. Sen okumalısınız Is kullanışlı olarak çözüldü systemd?
Aeyoun

Biliyorum - Ama çok önemli bir 'detay' var ... - büyük bir dns önbellek olarak dnsmasq - Systemd tarafından çözülen dns önbellek çok daha küçük ve ayarlanamaz - dns çözünürlük hızı büyük önbellek olarak oldukça iyileşir of dnsmasq isteklerle dolduruldu.
cmak.fr

Systemd tarafından çözülmüş olan varsayılan yapılandırılmamış önbellek gerçekte dnsmasq değerinden büyüktür.
19:19

Aslında, dnsmasq sistemd çözümlemesinden çok daha fazlasını yapar; Bkz. Gist.github.com/jult/4eba88bdd34a57cc79d6#gistcomment-1706666 ve gist.github.com/jult/4eba88bdd34a57cc79d6#file-hostsupdater-sh ama birkaç isim ...
Julius

@Aeyoun: systemd tarafından çözümlenen kaynak kodunu okuyarak, 40ns dns önbellek sınırının girdi değil bayt olduğunu görebilirsiniz. dnsmasq, daha büyük ve yapılandırılabilir bir önbellek boyutuna sahiptir.
cmak.fr

Yanıtlar:


10

Dnsmasq ile hızlı dns çözünürlüğü almak ve gelecekteki kullanım için varsayılan systemd-resolved / NetworkManager kurulumuna dokunmadan tutmak istedim. Evet, dnsmasq'ın büyük dns önbelleği tarama hızını artırabilir. Evet, amaç 18.04 varsayılan özellikli dns kurulumunu korumaktı

  1. Dnmasq yükleyin
  2. Yapılandırın (adresi ve dns sunucularını dinleyin)
  3. NetWorkManager'ı manuel dns sunucu adresi için yapılandırma
  4. Doğrulamayı kontrol et

1 - sudo ile

apt-get -y install dnsmasq

2 - sudo ile

tee -a /etc/dnsmasq.conf << ENDdm
interface=lo
bind-interfaces
listen-address=127.0.0.1
# DNS server from OpenDns. Use yours...
server=208.67.222.222
server=208.67.220.220
ENDdm

systemctl restart dnsmasq
systemctl enable dnsmasq

3 - USER ile NetworkManager'ı yapılandırın

# Get NM first active profile name
NetManProfile=$(nmcli -t  connection show --active | cut -f 01 -d ':')
# remove, if exists, current dns servers
nmcli con mod "$NetManProfile" ipv4.dns ""
# set 'manual' dns server
nmcli con mod "$NetManProfile" ipv4.ignore-auto-dns yes
# set dnsmasq as manually set dns server
nmcli con mod "$NetManProfile" ipv4.dns 127.0.0.1
# i also disabled ip6, do what u want
nmcli con mod "$NetManProfile" ipv6.method ignore
# reconnect to take effect
nmcli connection down "$NetManProfile"
nmcli connection up "$NetManProfile"

4 - Doğrulamayı kontrol edin

  • 127.0.0.53'te varsayılan olarak olması gerektiği gibi sistemd çözümlü dinleme
  • dnsmasq 127.0.0.1'de / etc / dnsmasq içinde ayarlandığı gibi dinleyin
  • systemd-resolved NetworkManager'dan 127.0.0.1 aldı
netstat -antup
Proto Recv-Q Send-Q Adresse locale          Adresse distante        Etat       PID/Program name    
tcp        0      0 127.0.0.1:53            0.0.0.0:*               LISTEN      1036/dnsmasq        
tcp        0      0 127.0.0.53:53           0.0.0.0:*               LISTEN      766/systemd-resolve
cat /run/systemd/resolve/resolv.conf 
nameserver 127.0.0.1

1

Makul bir çözüm bulmaya çalıştım ve farklı yaklaşımlar var gibi görünüyor.

Tüm iş gereksinimlerini karşılarken en fazla dağıtım düzeninde kalmak istedim. Topladığım ve temiz Ubuntu 18.04 ve KDE Neon lezzeti üzerinde çalışmak için test ettiğim şey bu:

# Install required package and reconfigure service plans (i.e. disablesystemd-resolved, enable dnsmasq
sudo apt-get install dnsmasq
sudo systemctl disable systemd-resolved
sudo systemctl stop systemd-resolved
sudo systemctl enable dnsmasq

# These two lines should work on most environments, but .. :-) - so I kept them commented out for less experienced users
# Just add or change 'dns=dnsmasq' to your NetworkManager.conf to the section [main]
# and yes, the sed expression can be better :-)

#sudo cp /etc/NetworkManager/NetworkManager.conf /etc/NetworkManager/NetworkManager.conf.backup
#sudo bash -c 'cat /etc/NetworkManager/NetworkManager.conf.backup |sed -e "s/^dns=.*//"| sed -e "s/\[main\]/\[main\]\ndns=dnsmasq/" >/etc/NetworkManager/NetworkManager.conf'

# Restart NetworkManager to make the change above applied
sudo systemctl restart NetworkManager

# This removes the systemd resolv.conf link only if it has NetworkManager replacement :-)
ls /var/run/NetworkManager/resolv.conf && sudo rm /etc/resolv.conf

# And add NetworkManager's resolv.conf available for the system resolver
sudo ln -s /var/run/NetworkManager/resolv.conf /etc/resolv.conf

(lütfen yukarıdaki yanıtlardaki tek genel farkın NetworkManager'ın dnsmasq DNS sunucusu atamalarını otomatik olarak ele alması olduğunu unutmayın


çalışır ama networkmanager apt-get --upgrade ile yükseltildiğinde ne olur
cmak.fr

Dürüst olmak gerekirse bilmiyorum. Ubuntu 18.04'ün koruyucusunun karar vermesine bağlıdır. Sistemd çözümlü hizmeti devre dışı bırakır ve NetworkManager.conf dosyasını (çakışma durumunda varsayılan olarak etkileşimli olarak çözümlenir) değiştirmezse, umarım düzeltileceği Ubuntu 20.04'e kadar hayatta kalabilir.
Venca B Spam

0

Bildiğiniz gibi Docker , host /etc/resolv.conf dosyasını kapsayıcılara kopyalar ancak yerel ad sunucusunu kaldırır.

Bu sorun benim çözüm systemd-resolvd ve NetworkManager kullanmaya devam ancak dnsmasq eklemek ve Docker kapsayıcılar DNS sorguları systemd-resolvd "iletmek" için kullanmaktır .

Adım adım rehber:

  • Make /etc/resolv.conf "gerçek" dosyasını sudo rm /etc/resolv.conf sudo touch /etc/resolv.conf
  • Dosyası oluşturun /etc/NetworkManager/conf.d/systemd-resolved-for-docker.conf anlatmak için NetworkManagerı bilgilendirmek systemd-resolvd ama dokunma için /etc/resolv.conf [main] # NetworkManager will push the DNS configuration to systemd-resolved dns=systemd-resolved # NetworkManager won’t ever write anything to /etc/resolv.conf rc-manager=unmanaged
  • Dnsmasq yükleyin sudo apt-get -y install dnsmasq
  • Yapılandırma dnsmasq içinde /etc/dnsmasq.conf dinlemek için DNS geliyorsun sorguları Docker ve kullanan systemd-resolvd adı sunucusunu # Use interface docker0 interface=docker0 # Explicitly specify the address to listen on listen-address=172.17.0.1 # Looks like docker0 interface is not available when dnsmasq service starts so it fails. This option makes dynamically created interfaces work in the same way as the default. bind-dynamic # Set systemd-resolved DNS server server=127.0.0.53
  • Düzenleme /etc/resolv.conf kullanımına systemd-resolvd nameserverı (127.0.0.53) ve ana IP (172.17.0.1) içinde Docker ağına # systemd-resolvd name server nameserver 127.0.0.53 # docker host ip nameserver 172.17.0.1
  • Hizmetleri yeniden başlat sudo service network-manager restart sudo service dnsmasq restart sudo service docker restart

Daha fazla bilgi için yazıma bakınız (ispanyolca) https://rubensa.wordpress.com/2020/02/07/docker-no-usa-los-mismos-dns-que-el-host/


-1

Ubuntu 18.10

IMHO, eğer dnsmasq çalıştıracaksanız, IP adresinizi dhcp'den almak yerine statik olarak atamalısınız. Bu şekilde sistemd çözümlemesini birlikte devre dışı bırakabilirsiniz.

  1. sudo apt-get install Instagram Hesabındaki Resim ve Videoları dnsmasq

  2. sudo systemctl devre dışı sistemi

  3. sudo systemctl durdurma sistemi

  4. IP adresinizi, ağ geçidinizi manuel olarak atayın ve ip adresini makinenize DNS olarak atayın.

  5. configure /etc/dnsmasq.conf (gerçekten ... RTFM -> man dnsmasq.conf)

  6. sudo systemctl etkinleştir dnsmasq

  7. reboot
  8. sudo systemctl durumu dnsmasq

  9. dhcp sunucunuzdaki dhcp'yi parlak yeni dnsmasq sunucunuza yönlendirin (..if yumpto)


Tarif ettiğin şeyi uygulamayacağım. NetworkManager'ın ileride kullanmak üzere varsayılan sistemd çözümlü kalan dokunulmamış istiyorum.
cmak.fr
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.