Ubuntu 20.04에서 dnsmasq를 사용해 보았지만 포트 53에서 systemd-resolved와 포트 충돌이 발생했습니다. 그래서 솔루션에 대한 몇 가지 제안을 찾았지만 오래되었거나 제 경우에는 적용되지 않는 것 같습니다.
systemd-resolved를 비활성화하면 시간 초과를 기다리는 것 같아서 모든 것이 느려집니다.
sudo: unable to resolve host ubuntu: Temporary failure in name resolution
따라서 기본적으로 내가 입력하는 모든 명령은 약 20초 정도 걸립니다.
dns=default
다음 과 같은
/etc/NetworkManager/NetworkManager.conf
것을 넣으려면 제안과 같은 것이 필요하다고 생각합니다.https://askubuntu.com/a/907249. 그러나 해당 파일은 존재하지 않으며 더 이상 패키지의 일부가 아닙니다.
$ dpkg -S /etc/NetworkManager/NetworkManager.conf
dpkg-query: no path found matching pattern /etc/NetworkManager/NetworkManager.conf
그래서 여기에 20개 이상의 댓글을 추가하는 대신 20.04 제목의 질문으로 게시하고 있습니다...
systemd-resolve를 비활성화하면 I할 수 있는dnsmasq를 시작했지만 "이름 확인이 일시적으로 실패했습니다" 오류로 인해 모든 것이 여전히 느려집니다. dnsmasq 상태를 보면 문제가 있는 것 같습니다.
ubuntu@ubuntu:~$ sudo systemctl status dnsmasq.service
sudo: unable to resolve host ubuntu: Temporary failure in name resolution
● dnsmasq.service - dnsmasq - A lightweight DHCP and caching DNS server
Loaded: loaded (/lib/systemd/system/dnsmasq.service; enabled; vendor preset: enabled)
Active: active (running) since Thu 2020-10-22 11:20:35 UTC; 1min 8s ago
Process: 36231 ExecStartPre=/usr/sbin/dnsmasq --test (code=exited, status=0/SUCCESS)
Process: 36232 ExecStart=/etc/init.d/dnsmasq systemd-exec (code=exited, status=0/SUCCESS)
Process: 36241 ExecStartPost=/etc/init.d/dnsmasq systemd-start-resolvconf (code=exited, status=0/S>
Main PID: 36240 (dnsmasq)
Tasks: 1 (limit: 9024)
CGroup: /system.slice/dnsmasq.service
└─36240 /usr/sbin/dnsmasq -x /run/dnsmasq/dnsmasq.pid -u dnsmasq -7 /etc/dnsmasq.d,.dpkg->
Oct 22 11:20:35 ubuntu dnsmasq[36240]: using nameserver 127.0.0.53#53
Oct 22 11:20:35 ubuntu dnsmasq[36240]: read /etc/hosts - 7 addresses
Oct 22 11:20:35 ubuntu systemd[1]: Started dnsmasq - A lightweight DHCP and caching DNS server.
Oct 22 11:20:37 ubuntu dnsmasq[36240]: Maximum number of concurrent DNS queries reached (max: 150)
Oct 22 11:20:48 ubuntu dnsmasq[36240]: Maximum number of concurrent DNS queries reached (max: 150)
Oct 22 11:20:57 ubuntu dnsmasq[36240]: Maximum number of concurrent DNS queries reached (max: 150)
Oct 22 11:21:07 ubuntu dnsmasq[36240]: Maximum number of concurrent DNS queries reached (max: 150)
Oct 22 11:21:17 ubuntu dnsmasq[36240]: Maximum number of concurrent DNS queries reached (max: 150)
Oct 22 11:21:27 ubuntu dnsmasq[36240]: Maximum number of concurrent DNS queries reached (max: 150)
Oct 22 11:21:37 ubuntu dnsmasq[36240]: Maximum number of concurrent DNS queries reached (max: 150)
위 로그에 따르면 dnsmasq는 이제 실행되지 않는 127.0.0.53:53?
systemd-resolved를 통해 실행하면 다음과 같습니다.
$ sudo ss -lp "sport = :domain"
Netid State Recv-Q Send-Q Local Address:Port Peer Address:Port Process
udp UNCONN 0 0 127.0.0.53%lo:domain 0.0.0.0:* users:(("systemd-resolve",pid=36111,fd=12))
tcp LISTEN 0 4096 127.0.0.53%lo:domain 0.0.0.0:* users:(("systemd-resolve",pid=36111,fd=13))
systemd-resolved를 비활성화하고 dnsmasq를 실행한 후 다음을 얻었습니다.
sudo ss -lp "sport = :domain"
sudo: unable to resolve host ubuntu: Temporary failure in name resolution
Netid State Recv-Q Send-Q Local Address:Port Peer Address:Port Process
udp UNCONN 18432 0 0.0.0.0:domain 0.0.0.0:* users:(("dnsmasq",pid=36240,fd=4))
udp UNCONN 0 0 [::]:domain [::]:* users:(("dnsmasq",pid=36240,fd=6))
tcp LISTEN 0 32 0.0.0.0:domain 0.0.0.0:* users:(("dnsmasq",pid=36240,fd=5))
tcp LISTEN 0 32 [::]:domain [::]:* users:(("dnsmasq",pid=36240,fd=7))
나는 가지고있다:
$ cat /etc/resolv.conf | grep nameserver
nameserver 127.0.0.53
답변1
기본적으로 systemd-resolved
"DNS/DNSSEC 스텁 확인자 인증"은 "IP 주소 127.0.0.53", 포트 53에서 제공됩니다. 다음을 통해 확인할 수 있습니다.
$ sudo netstat -tulpn | grep LISTEN
tcp 0 0 0.0.0.0:5355 0.0.0.0:* LISTEN 787/systemd-resolve
tcp 0 0 127.0.0.53:53 0.0.0.0:* LISTEN 787/systemd-resolve
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 923/sshd: /usr/sbin
tcp6 0 0 :::5355 :::* LISTEN 787/systemd-resolve
tcp6 0 0 :::22 :::* LISTEN 923/sshd: /usr/sbin
포트 53은 지적하신 대로 DNS 트래픽의 기본 포트이므로 여기서 충돌이 발생합니다.
systemd-resolved
여러 가지 다른 방식으로 작동하도록 구성하거나 스텁 파서를 완전히 비활성화할 수도 있습니다.
/etc/systemd/resolved.conf.d
구성을 여러 파일로 나눌 수 있는 편리한 디렉터리 중 하나입니다. 일부 배포판에서는 이 디렉터리가 아직 존재하지 않을 수 있습니다.
[ -d /etc/systemd/resolved.conf.d ] || mkdir -p /etc/systemd/resolved.conf.d
/etc/systemd/resolved.conf.d/10-make-dns-work.conf
다음으로 기본 구성을 재정의할 파일을 만듭니다 /etc/systemd/resolved.conf
.
printf "%s\n%s\n" '[Resolve]' 'DNSStubListener=no' | sudo tee /etc/systemd/resolved.conf.d/10-make-dns-work.conf
이제 우리는:
$ cat /etc/systemd/resolved.conf.d/10-make-dns-work.conf
[Resolve]
DNSStubListener=no
구성을 변경한 후에는 재부팅해야 합니다 systemd-resolved
.
$ sudo systemctl restart systemd-resolved
이제 어디에서 systemd-resolved
들을지 살펴보세요.
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 2494/sshd
tcp 0 0 0.0.0.0:5355 0.0.0.0:* LISTEN 8033/systemd-resolv
tcp6 0 0 :::22 :::* LISTEN 2494/sshd
tcp6 0 0 :::5355 :::* LISTEN 8033/systemd-resolv
dnsmasq
이제 포트 53에서 수신 대기할 수 있습니다.
이러한 변경 사항을 되돌리려면 추가한 프로필을 삭제하면 됩니다.
sudo rm /etc/systemd/resolved.conf.d/10-make-dns-work.conf
sudo systemctl restart systemd-resolved
답변2
실제로 systemd-resolved를 망칠 필요는 없습니다. dnsmasq.conf에 "bind-dynamic" 또는 "bind-interfaces"를 추가하세요. 이렇게 하면 systemd-resolved를 단독으로 유지하고 dnsmasq와 함께 실행할 수 있습니다. dnsmasq 매뉴얼 페이지에서는 Bind-dymanic을 지원하는 모든 Linux 시스템에서 이를 사용할 것을 권장하며 Ubuntu도 마찬가지입니다. 사용 중에는 둘 사이에 어떤 차이도 볼 수 없습니다. ...재부팅 시 dnsmasq를 중지하는 "listen-address=" 지시문에 유의하세요. 내 경우에는 Ubuntu 20.04를 실행하는 pi4에서 dnsmasq가 시작을 시도할 때 pi의 로컬 IP 주소와 openVpn 서버 주소(다른 서브넷의 동일한 시스템)가 존재하지 않았습니다. dnsmasq가 시작될 때 IP 주소에 바인딩될 수 있도록 openVpn 서비스 이후에 시작하도록 dnsmasq 서비스 파일을 편집하여 이 문제를 해결했습니다.