dnsmasq로 빠른 DNS 해상도를 얻고 기본 시스템 해결 상태를 유지하고 싶습니다.
이것을 할 우아한 방법을 찾고
dnsmasq로 빠른 DNS 해상도를 얻고 기본 시스템 해결 상태를 유지하고 싶습니다.
이것을 할 우아한 방법을 찾고
답변:
dnsmasq를 사용하여 빠른 DNS 해상도를 얻고 나중에 사용할 수 있도록 기본 systemd-resolved / NetworkManager 설정을 그대로 유지하고 싶었습니다. 예, dnsmasq의 거대한 DNS 캐싱은 탐색 속도를 향상시킬 수 있습니다. 예. 목표는 기본 기능 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 네온 풍미에서 작동하도록 테스트하고 수집 한 것입니다.
# 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가 dnsmasq DNS 서버 할당을 자동으로 처리한다는 것입니다.
아시다시피 Docker는 호스트 /etc/resolv.conf 파일을 컨테이너에 복사 하지만 로컬 네임 서버는 제거합니다.
이 문제에 대한 나의 해결책은 systemd-resolvd 및 NetworkManager 를 계속 사용 하지만 dnsmasq를 추가 하고이를 사용하여 Docker 컨테이너 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/
우분투 18.10
IMHO, dnsmasq를 실행하려면 dhcp에서 가져 오는 대신 IP 주소를 정적으로 할당해야합니다. 이렇게하면 systemd-resolved를 모두 비활성화 할 수 있습니다.
sudo apt-get 설치 dnsmasq
sudo systemctl disabled 시스템 해결
sudo systemctl 중지 시스템 해결
IP 주소, 게이트웨이를 수동으로 할당하고 IP 주소를 시스템에 DNS로 할당하십시오.
/etc/dnsmasq.conf 설정 (실제로 ... RTFM-> man dnsmasq.conf)
sudo systemctl 활성화 dnsmasq
sudo systemctl 상태 dnsmasq
dhcp 서버의 dhcp를 반짝이는 새 dnsmasq 서버 (.if yumpto)로 연결하십시오.