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
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
Yanıtlar:
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 - 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
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
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
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:
sudo rm /etc/resolv.conf
sudo touch /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
sudo apt-get -y install dnsmasq
# 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
# systemd-resolvd name server
nameserver 127.0.0.53
# docker host ip
nameserver 172.17.0.1
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/
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.
sudo apt-get install Instagram Hesabındaki Resim ve Videoları dnsmasq
sudo systemctl devre dışı sistemi
sudo systemctl durdurma sistemi
IP adresinizi, ağ geçidinizi manuel olarak atayın ve ip adresini makinenize DNS olarak atayın.
configure /etc/dnsmasq.conf (gerçekten ... RTFM -> man dnsmasq.conf)
sudo systemctl etkinleştir dnsmasq
sudo systemctl durumu dnsmasq
dhcp sunucunuzdaki dhcp'yi parlak yeni dnsmasq sunucunuza yönlendirin (..if yumpto)