답변:
dnsmasq
패키지는 16.10 및 17.04에서 계속 사용할 수 있습니다.
dnsmasq
비활성화 하기 전에systemd-resolved
설치 및 종속성 (또는 최소한 패키지를 다운로드) :
sudo apt-get install dnsmasq
비활성화 systemd-resolved
하고 dnsmasq
실행 중인지 확인하십시오 .
sudo systemctl stop systemd-resolved
sudo systemctl disable systemd-resolved
systemctl status dnsmasq
dnsmasq
맛볼 계절 . 설정을 적용한 후 다음을 다시 시작하십시오 dnsmasq
.
sudo systemctl stop dnsmasq
sudo systemctl start dnsmasq
2 단계 후에 3 단계가 완료 될 때까지 작업 시스템 분석기가 없을 수 있습니다. dnsmasq
기본 구성으로 작동 하려면 네트워킹 하위 시스템을 다시 시작하거나 재부팅해야 할 수도 있습니다 . 필자의 테스트에서 알려진 DNS 서버를 추가 /etc/dnsmasq.conf
하고 다시 시작 dnsmasq
하면 liveCD 환경에서 작동하기에 충분했습니다.
dns=dnsmasq
로 설정을/etc/NetworkManager/NetworkManager.conf
@quixotic의 답변 외에도 :
/etc/NetworkManager/NetworkManager.conf에 있는지 확인하십시오 :
[main]
dns=dnsmasq
추가해야 할 경우 다음과 같이 NetworkManager를 다시 시작하십시오.
sudo systemctl restart NetworkManager
에 /etc/resolv.conf
대한 심볼릭 링크 여야합니다 /var/run/NetworkManager/resolv.conf
. 이렇게 할 수 있습니다
sudo rm /etc/resolv.conf; sudo ln -s /var/run/NetworkManager/resolv.conf /etc/resolv.conf
dns=default
했으며 dnsmasq에 정의되는 대신 NetworkManager에 의해 이름 서버를 정의했기 때문에 제대로 작동합니다. 이것은 나를 위해 작동합니다-NM은 시스템 트레이를 통해 KDE의 NM 구성에서 작성된 설정에서 네임 서버를 가져옵니다. 홈 네트워크 FWIW에서 고정 IP를 사용합니다.
systemd-resolved 매뉴얼에 따르면 systemd-resolved는 세 가지 인터페이스를 통해 이름 확인 서비스를 제공합니다.
RFC3493에 의해 정의 된 glibc getaddrinfo (3) API 및 gethostbyname (3)을 포함한 관련 리졸버 함수. 이 API는 Linux 플랫폼 이외에도 광범위하게 지원됩니다. 그러나 현재 형식에서는 DNSSEC 유효성 검사 상태 정보를 노출하지 않으며 동기식입니다. 이 API는 glibc 이름 서비스 스위치 (nss (5))에 의해 지원됩니다. glibc NSS 모듈 nss-resolve (8)의 사용은 glibc의 NSS 리졸버 함수가 systemd-resolved를 통해 호스트 이름을 확인할 수 있도록하기 위해 필요합니다.
처음 두 개의 인터페이스는 정상적인 DNS 확인을 방해하지 않으며 나에게 문제가 세 번째에있을 것 같습니다.
nss-resolve 매뉴얼에서 :
NSS 모듈을 활성화하려면 /etc/nsswitch.conf에서 "hosts :"로 시작하는 줄에 "resolve"를 추가하십시오. 특히 "resolve"를 /etc/nsswitch.conf의 "hosts :"줄 ( "files"또는 "mymachines"항목 뒤에)의 "dns"항목이있는 경우 바로 앞에 두는 것이 좋습니다. DNS 쿼리가 항상 systemd-resolved (8)를 통해 라우팅되지만이 서비스를 사용할 수없는 경우 nss-dns로 라우팅되도록하려면 "[! UNAVAIL = return]"
따라서 필요한 것은 /etc/nsswitch.conf의 "host :"줄에서 "dns"가 "resolve"보다 우선하도록하는 것 입니다. 그런 다음 /etc/resolv.confgetaddrinfo
를 준수해야합니다 .
이 솔루션은 systemd-resolved가 모든 DNS 확인 요청을 처리하지 못하도록하며 특정 네트워크 관리자로 제한되지 않습니다. 또한 LLMNR 및 mDNS 서비스가 정상적으로 작동하는지 확인합니다.
(나는 리눅스에서 이름 확인이 작동하는 방식에 대해 잘 알고 있지 않으며이 매뉴얼에서 내가 이해 한 것에 대해 확신하지 못합니다. 불만 사항은 잘못된 점을 지적합니다. Thx :))
(X) Ubuntu 18.04의 경우 ( stackexchange의 답변 참조 ).
여기 사본이 있습니다 (사본을 만들어야합니까?).
다음은 (X) Ubuntu 18.04 Bionic 용 솔루션입니다.
dnsmasq 설치
sudo apt install dnsmasq
포트 53에서 systemd-resolved listener를 비활성화합니다 (업그레이드시 덮어 쓸 수 있으므로 /etc/systemd/resolved.conf를 만지지 마십시오).
$ cat /etc/systemd/resolved.conf.d/noresolved.conf
[Resolve]
DNSStubListener=no
다시 시작
$ sudo systemctl restart systemd-resolved
(또는로 완전히 비활성화 $ sudo systemctl disable systemd-resolved.service
)
/etc/resolv.conf를 삭제하고 다시 만드십시오. resolv.conf는 기본적으로 /run/systemd/resolve/stub-resolv.conf에 대한 심볼릭 링크이므로 중요합니다. 심볼릭 링크를 삭제하지 않으면 재부팅시 systemd가 파일을 덮어 씁니다 (systemd-resolved를 비활성화 한 경우에도). 또한 NetworkManager (NM)는 시스템 해결 구성을 감지하기위한 기호 링크인지 확인합니다.
$ sudo rm /etc/resolv.conf
$ sudo touch /etc/resolv.conf
NM에 의한 /etc/resolv.conf 덮어 쓰기를 비활성화합니다 (rc-manager 옵션도 있지만 매뉴얼에 설명되어 있지만 작동하지 않습니다).
$ cat /etc/NetworkManager/conf.d/disableresolv.conf
[main]
dns=none
다시 시작하십시오.
$ sudo systemctl restart NetworkManager
Nns에서 resolv.conf를 사용하도록 dnsmasq에 지시하십시오.
$ cat /etc/dnsmasq.d/nmresolv.conf
resolv-file=/var/run/NetworkManager/resolv.conf
다시 시작하십시오.
$ sudo systemctl restart dnsmasq
해결을 위해 dnsmasq를 사용하십시오.
$ cat /etc/resolv.conf
# Use local dnsmasq for resolving
nameserver 127.0.0.1