온라인에서 본 대부분의 정보에는 edit 이라고 되어 있지만 /etc/resolv.conf
여기서 변경한 내용은 덮어쓰게 됩니다.
$ cat /etc/resolv.conf
# Dynamic resolv.conf(5) file for glibc resolver(3) generated by resolvconf(8)
# DO NOT EDIT THIS FILE BY HAND --
# YOUR CHANGES WILL BE OVERWRITTEN
nameserver 127.0.1.1
127.0.1.1이 로컬 인스턴스인 것 같습니다 dnsmasq
. 문서 dnsmasq
에는 /etc/resolv.conf
./etc/resolv.conf.d/base
/etc/resolv.conf
sudo resolvconf -u
참고로 저는 연결별로 DNS를 변경하고 싶지 않고 달리 지정하지 않은 경우 모든 연결에 사용할 기본 DNS 설정을 지정하고 싶습니다.
고쳐 쓰다:
나는 그 질문에 스스로 대답했습니다. https://unix.stackexchange.com/a/163506/67024
나는 이것이 최선의 해결책이라고 생각한다:
- 효과가있다.
- 최소한의 변경이 필요하며
- dnsmasq의 DNS 캐시를 우회하지 않고 계속 작동합니다.
답변1
base
DNS 이름 서버를 재정의하려면 .txt 아래의 파일에 이와 유사한 줄을 추가하면 됩니다 resolv.conf.d
.
예
노트:시작하기 전에 다음 패키지가 설치되어 있는지 확인하십시오 apt install resolvconf
.
$ sudo vim /etc/resolvconf/resolv.conf.d/base
그런 다음 네임서버 목록을 다음과 같이 입력하세요.
nameserver 8.8.8.8
nameserver 8.8.4.4
최근 업데이트 resolvconf
:
$ sudo resolvconf -u
매뉴얼 페이지를 보면 resolvconf
설명되어 있습니다 /etc/resolvconf/resolv.conf.d/
.
/etc/resolvconf/resolv.conf.d/base
File containing basic resolver information. The lines in this
file are included in the resolver configuration file even when no
interfaces are configured.
/etc/resolvconf/resolv.conf.d/head
File to be prepended to the dynamically generated resolver
configuration file. Normally this is just a comment line.
/etc/resolvconf/resolv.conf.d/tail
File to be appended to the dynamically generated resolver
configuration file. To append nothing, make this an empty
file. This file is a good place to put a resolver options line
if one is needed, e.g.,
options inet6
파일 상단에 경고가 있더라도 다음과 같습니다 head
.
$ cat /etc/resolvconf/resolv.conf.d/head
# Dynamic resolv.conf(5) file for glibc resolver(3) generated by resolvconf(8)
# DO NOT EDIT THIS FILE BY HAND -- YOUR CHANGES WILL BE OVERWRITTEN
resolv.conf
이 경고는 이러한 파일이 빌드될 때 결국 이러한 파일을 사용하여 생성되는 결과 파일 에 경고가 포함되도록 존재합니다 . 따라서 nameserver
위 파일의 행을 base
이 파일에도 쉽게 추가할 수 있습니다 head
.
인용하다
답변2
저도 이 문제에 관심이 있어서 @sim이 제안한 솔루션을 시도해 보았습니다.
그것을 테스트하기 위해 나는
nameserver 8.8.8.8
/etc/resolvconf/resolv.conf.d/base
함께 하다
nameserver 8.8.4.4
존재하다/etc/resolvconf/resolv.conf.d/head
그런 다음 네트워크를 다시 시작합니다.
sudo service network-manager restart
결과 /etc/resolv.conf
는 다음과 같습니다.
# Dynamic resolv.conf(5) file for glibc resolver(3) generated by resolvconf(8)
# DO NOT EDIT THIS FILE BY HAND -- YOUR CHANGES WILL BE OVERWRITTEN
nameserver 8.8.4.4
nameserver 127.0.1.1
nm-tool
DNS 서버 가
DNS: 208.67.222.222
DNS: 208.67.220.220
이것은 내 라우터에서 제공됩니다. 반면에 채굴 주소는 다음과 같습니다.
;; Query time: 28 msec
;; SERVER: 8.8.4.4#53(8.8.4.4)
내가 옳다면 이 모든 것에서 내가 얻은 교훈은 다음과 같다.
- resolvonf는 "헤드" 부분만 읽습니다. "기본" 부분은 어떻게든 dnsmasq에 의해 제어됩니다.
- dnsserver는 실제로 dhcp에서 제공하는 서버에 관계없이 8.8.4.4로 강제 실행되지만 요청은 항상 8.8.4.4로 전송되므로 dnsmasq에서 제공하는 캐싱이 손실됩니다.
- dnsmasq는 여전히 dhcp에서 제공하는 dnsserver만 사용합니다.
대체로 작동하지만 예상되는 결과가 필요하다고 생각하지 않습니다. 더 가까운 해결책은 다음과 같습니다. 편집하다
sudo vim /etc/dhcp/dhclient.conf
그런 다음 추가
supersede domain-name-servers 8.8.8.8;
결과는 다음과 같습니다. resolv.conf에는 127.0.0.1만 포함되어 있습니다. 이는 dnsmasq 캐시가 호출되고 nm-tool이 다음을 의미함을 의미합니다.
DNS: 8.8.8.8
이는 검색 중인 이름이 캐시에 없으면 dhcp에서 제공하는 서버 대신 8.8.8.8에서 요청한다는 의미입니다.
또 다른 (아마도 더 나은) 옵션은 "supersede" 대신 "prepend"를 사용하는 것입니다. 이렇게 하면 이름이 8.8.8.8에서 확인되지 않으면 요청이 다른 서버로 대체됩니다. 실제로 nm-tool은 다음과 같이 말합니다.
DNS: 8.8.8.8
DNS: 208.67.222.222
DNS: 208.67.220.220
답변3
dnsmasq
다음 줄을 추가하여 사용되는 네임서버를 변경할 수 있다는 것을 알았습니다 /etc/dnsmasq.conf
.
server=8.8.8.8
server=8.8.4.4
/etc/dnsmasq.conf
dnsmasq 패키지로 설치되었기 때문에 파일이 없지만 Ubuntu에는 dnsmasq-base만 제공됩니다. 실행한 sudo apt-get install dnsmasq
다음 편집 /etc/dnsmasq.conf
한 sudo service dnsmasq restart
다음 sudo service network-manager restart
.
sudo tail -n 200 /var/log/syslog
시스템 로그를 확인하기 위해 실행하여 dnsmasq
내가 지정한 네임서버가 사용되고 있는지 확인했습니다.
Oct 21 23:00:54 mylaptop dnsmasq[8611]: using nameserver 8.8.8.8#53
Oct 21 23:00:54 mylaptop dnsmasq[8611]: using nameserver 8.8.4.4#53
답변4
"네트워크 연결"을 검색하세요.
열어 봐
그런 다음 WiFi나 이더넷 등 사용 중인 항목을 선택하고 편집을 클릭합니다. 당신은 이것을 얻을 것이다:
탭에서 ipv4를 선택하십시오.
메소드에서만 주소 선택
아래에 DNS 이름을 입력하고 저장하세요.
넌 끝났어