ฉันต้องการได้รับความละเอียด dns ที่รวดเร็วด้วย dnsmasq และแก้ไข systemd-default ที่เป็นค่าเริ่มต้น
กำลังมองหาวิธีที่สง่างามในการทำสิ่งนี้
ฉันต้องการได้รับความละเอียด dns ที่รวดเร็วด้วย dnsmasq และแก้ไข systemd-default ที่เป็นค่าเริ่มต้น
กำลังมองหาวิธีที่สง่างามในการทำสิ่งนี้
คำตอบ:
ฉันต้องการได้รับความละเอียด dns ที่รวดเร็วด้วย dnsmasq และให้การตั้งค่าเริ่มต้น systemd-แก้ไข / NetworkManager การตั้งค่ามิได้ถูกแตะต้องสำหรับการใช้ในอนาคต ใช่แคช DNS ขนาดใหญ่ของ dnsmasq สามารถปรับปรุงความเร็วในการเรียกดูได้ ใช่เป้าหมายคือเพื่อให้การตั้งค่า dns แนะนำเริ่มต้นเป็น 18.04
1 - ด้วย sudo
apt-get -y install dnsmasq
2 - ด้วย 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 - ด้วย USER ให้กำหนดค่า 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 - ตรวจสอบการตรวจสอบ
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
ฉันพยายามหาวิธีแก้ปัญหาที่สมเหตุสมผลและดูเหมือนว่ามีวิธีการต่างกัน
ฉันต้องการที่จะอยู่ในรูปแบบการกระจายมากที่สุดโดยรักษาความต้องการทางธุรกิจทั้งหมดให้สมบูรณ์ นี่คือสิ่งที่ฉันรวบรวมและทดสอบเพื่อทำความสะอาดอูบุนตู 18.04 และ KDE Neon รสชาติ:
# 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
(โปรดทราบว่าข้อแตกต่างทั่วไปกับคำตอบข้างต้นคือ NetworkManager จัดการการมอบหมายเซิร์ฟเวอร์ DNS DNS โดยอัตโนมัติ
อย่างที่คุณทราบแล้วDockerคัดลอกไฟล์โฮสต์ /etc/resolv.confไปยังคอนเทนเนอร์ แต่จะลบเนมเซิร์ฟเวอร์ภายใน
ทางออกของฉันในการแก้ไขปัญหานี้คือการให้ใช้systemd-resolvdและNetworkManagerแต่เพิ่มdnsmasqและใช้มันเพื่อ "ไปข้างหน้า" หางภาชนะDNSแบบสอบถามเพื่อsystemd-resolvd
คู่มือทีละขั้นตอน:
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
สำหรับข้อมูลเพิ่มเติมดูโพสต์ของฉัน (เป็นภาษาสเปน) https://rubensa.wordpress.com/2020/02/07/docker-no-usa-los-mismos-dns-que-el-host/
Ubuntu 18.10
IMHO หากคุณกำลังจะใช้งาน dnsmasq คุณควรกำหนดที่อยู่ IP ของคุณแบบคงที่แทนที่จะรับจาก dhcp วิธีนี้คุณสามารถปิดการใช้งานระบบที่แก้ไขทั้งหมดพร้อมกันได้
sudo apt-get install dnsmasq
sudo systemctl ปิดการใช้งาน systemd- แก้ไข
sudo systemctl หยุด systemd แก้ไข
กำหนดที่อยู่ IP ของคุณด้วยตนเองเกตเวย์และกำหนดที่อยู่ IP ให้กับเครื่องของคุณเป็น DNS
กำหนดค่า /etc/dnsmasq.conf (จริงๆ ... RTFM -> man dnsmasq.conf)
sudo systemctl เปิดใช้งาน dnsmasq
sudo systemctl status dnsmasq
ชี้ dhcp บนเซิร์ฟเวอร์ dhcp ของคุณไปยังเซิร์ฟเวอร์ dnsmasq ใหม่ของคุณ (.. หาก yumpto)