Saya ingin mendapatkan resolusi dns cepat dengan dnsmasq dan menjaga sistem default-diselesaikan.
Mencari cara yang elegan untuk melakukan ini
Saya ingin mendapatkan resolusi dns cepat dengan dnsmasq dan menjaga sistem default-diselesaikan.
Mencari cara yang elegan untuk melakukan ini
Jawaban:
Saya ingin mendapatkan resolusi dns cepat dengan dnsmasq dan menjaga pengaturan default systemd-resolved / NetworkManager tidak tersentuh untuk penggunaan di masa mendatang. Ya, caching dns dnsmasq yang sangat besar dapat meningkatkan kecepatan penelusuran. Ya tujuannya adalah untuk menjaga pengaturan fitur default dns 18,04
1 - Dengan sudo
apt-get -y install dnsmasq
2 - Dengan sudo
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 - Dengan USER, konfigurasikan NetworkManager
# 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 - Periksa verifikasi
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
Saya mencoba mencari solusi yang masuk akal dan terlihat ada pendekatan yang berbeda.
Saya ingin tetap paling dalam dalam tata letak distribusi sambil menjaga semua persyaratan bisnis terpenuhi. Inilah yang saya kumpulkan dan diuji untuk bekerja pada Ubuntu clean 18,04 dan KDE Neon rasa:
# 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
(harap dicatat bahwa satu-satunya perbedaan umum dengan jawaban di atas adalah bahwa NetworkManager menangani penugasan server DNS dnsmasq secara otomatis
Seperti yang Anda ketahui, Docker menyalin file host /etc/resolv.conf ke wadah tetapi menghapus server nama lokal apa pun.
Solusi saya untuk masalah ini adalah tetap menggunakan systemd-resolvd dan NetworkManager tetapi menambahkan dnsmasq dan menggunakannya untuk "meneruskan" Docker memuat permintaan DNS ke systemd-resolvd .
Panduan langkah demi langkah:
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
Untuk info lebih lanjut lihat posting saya (dalam bahasa Spanyol) https://rubensa.wordpress.com/2020/02/07/docker-no-usa-los-mismos-dns-que-el-host/
Ubuntu 18.10
IMHO, jika Anda akan menjalankan dnsmasq, Anda harus menetapkan alamat ip Anda secara statis alih-alih mendapatkannya dari dhcp. Dengan cara ini Anda bisa menonaktifkan semua sistemd-diselesaikan.
sudo apt-get install dnsmasq
sudo systemctl nonaktifkan systemd-diselesaikan
sudo systemctl berhenti systemd-diselesaikan
Tetapkan alamat ip, gateway, dan tetapkan alamat ip secara manual ke mesin Anda sebagai DNS.
konfigurasikan /etc/dnsmasq.conf (benar-benar ... RTFM -> man dnsmasq.conf)
sudo systemctl aktifkan dnsmasq
sudo systemctl status dnsmasq
arahkan dhcp pada server dhcp Anda ke server dnsmasq baru Anda yang mengkilap (..jika yumpto)