온라인에서 보는 대부분의 정보에는 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
에는 edit 이라고 나와 있습니다 /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
DNS 이름 서버를 재정의하려면 파일 base
아래 에 이와 유사한 줄을 추가하기만 하면 됩니다 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
dnsserver가 다음과 같다고 명시합니다 .
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
내 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 이름을 입력하고 저장하세요.
넌 끝났어