dnsmasq를 추가하고 시스템 분석 상태를 유지하는 방법 (18.04)


10

dnsmasq로 빠른 DNS 해상도를 얻고 기본 시스템 해결 상태를 유지하고 싶습니다.

이것을 할 우아한 방법을 찾고


systemd-resolved도 DNS 조회를 캐시한다는 것을 알고 있습니까? systemd-resolved가있는 시스템에서는 dnsmasq가 필요하지 않습니다. systemd-resolved가 유용합니까?를
Aeyoun

알고 있습니다-그러나 매우 중요한 '세부 사항'이 있습니다 ...-거대한 dns 캐시로 dnsmasq-systemd-resolved의 dns 캐시는 매우 작고 조정할 수 없습니다-거대한 캐시로 dns 해상도 속도가 크게 향상됩니다. dnsmasq 중 하나가 요청으로 채워졌습니다.
cmak.fr

systemd-resolved의 기본 구성되지 않은 캐시는 실제로 dnsmasq보다 큽니다.
Aeyoun

실제로 dnsmasq는 systemd-resolved보다 훨씬 더 많은 일을합니다. 참조 gist.github.com/jult/4eba88bdd34a57cc79d6#gistcomment-1706666gist.github.com/jult/4eba88bdd34a57cc79d6#file-hostsupdater-sh .. 이름 만 몇
줄리어스

@Aeyoun : systemd-resolved 소스 코드를 읽음으로써 ns의 dns 캐시 한계가 항목이 아니라 바이트임을 알 수 있습니다. dnsmasq는 더 크고 구성 가능한 dns 캐시 크기를 갖습니다.
cmak.fr

답변:


10

dnsmasq를 사용하여 빠른 DNS 해상도를 얻고 나중에 사용할 수 있도록 기본 systemd-resolved / NetworkManager 설정을 그대로 유지하고 싶었습니다. 예, dnsmasq의 거대한 DNS 캐싱은 탐색 속도를 향상시킬 수 있습니다. 예. 목표는 기본 기능 dns 설정을 18.04로 유지하는 것이 었습니다.

  1. dnmasq 설치
  2. 구성 (주소 및 DNS 서버 청취)
  3. 수동 DNS 서버 주소에 대한 NetWorkManager 구성
  4. 확인 확인

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-확인 확인

  • systemd-resolved는 기본적으로 127.0.0.53에서 청취
  • dnsmasq는 / etc / dnsmasq에 설정된 127.0.0.1에서 청취
  • systemd-resolved는 NetworkManager에서 127.0.0.1을 사용했습니다.
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

나는 합리적인 해결책을 찾으려고 노력했으며 다른 접근법이있는 것으로 보입니다.

모든 비즈니스 요구 사항을 충족시키면서 배포 레이아웃을 최대한 활용하고 싶었습니다. 이것은 깨끗한 우분투 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 서버 할당을 자동으로 처리한다는 것입니다.


작동하지만 네트워크 매니저는 apt-get을 --upgrade로 업그레이드 될 때 어떤 일이
cmak.fr

솔직히 모르겠다. 그것은 우분투 18.04의 관리자가 결정하는 것에 달려 있습니다. systemd-resolved 서비스를 비활성화 상태로 유지하고 NetworkManager.conf를 수정하지 않으면 (기본적으로 충돌시 대화식으로 해결됨) Ubuntu 20.04까지 유지 될 수 있습니다.
Venca B Spam

0

아시다시피 Docker는 호스트 /etc/resolv.conf 파일을 컨테이너에 복사 하지만 로컬 네임 서버는 제거합니다.

이 문제에 대한 나의 해결책은 systemd-resolvdNetworkManager 를 계속 사용 하지만 dnsmasq를 추가 하고이를 사용하여 Docker 컨테이너 DNS 쿼리를 systemd-resolvd 에 "전달"하는 입니다.

단계별 가이드 :

  • 확인 /etc/resolv.conf에 "진짜"파일을 sudo rm /etc/resolv.conf sudo touch /etc/resolv.conf
  • /etc/NetworkManager/conf.d/systemd-resolved-for-docker.conf 파일을 작성 하여 NetworkManagersystemd-resolvd에 알리지/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 설치 sudo apt-get -y install dnsmasq
  • 구성 하는 dnsmasq/etc/dnsmasq.conf 청취 DNS의 에서오고 쿼리 도커을 하고 사용 systemd-resolvd 이름 서버를 # 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
  • Docker 네트워크 에서 systemd-resolvd 이름 서버 (127.0.0.53) 및 호스트 IP (172.17.0.1) 를 사용하도록 /etc/resolv.conf 를 편집하십시오. # 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/


-1

우분투 18.10

IMHO, dnsmasq를 실행하려면 dhcp에서 가져 오는 대신 IP 주소를 정적으로 할당해야합니다. 이렇게하면 systemd-resolved를 모두 비활성화 할 수 있습니다.

  1. sudo apt-get 설치 dnsmasq

  2. sudo systemctl disabled 시스템 해결

  3. sudo systemctl 중지 시스템 해결

  4. IP 주소, 게이트웨이를 수동으로 할당하고 IP 주소를 시스템에 DNS로 할당하십시오.

  5. /etc/dnsmasq.conf 설정 (실제로 ... RTFM-> man dnsmasq.conf)

  6. sudo systemctl 활성화 dnsmasq

  7. 재부팅
  8. sudo systemctl 상태 dnsmasq

  9. dhcp 서버의 dhcp를 반짝이는 새 dnsmasq 서버 (.if yumpto)로 연결하십시오.


나는 당신이 설명한 것을 구현하지 않을 것입니다. 나중에 NetworkManager를 사용하기 위해 기본 시스템 해결 상태를 그대로 유지하고 싶습니다.
cmak.fr
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.