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-1706666 및 gist.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-resolvd 및 NetworkManager 를 계속 사용 하지만 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 파일을 작성 하여 NetworkManager 가 systemd-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.