resolv.conf를 덮어쓸 때 DNS를 어떻게 설정합니까?

resolv.conf를 덮어쓸 때 DNS를 어떻게 설정합니까?

온라인에서 본 대부분의 정보에는 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.confsudo resolvconf -u

참고로 저는 연결별로 DNS를 변경하고 싶지 않고 달리 지정하지 않은 경우 모든 연결에 사용할 기본 DNS 설정을 지정하고 싶습니다.

고쳐 쓰다:

나는 그 질문에 스스로 대답했습니다. https://unix.stackexchange.com/a/163506/67024

나는 이것이 최선의 해결책이라고 생각한다:

  1. 효과가있다.
  2. 최소한의 변경이 필요하며
  3. dnsmasq의 DNS 캐시를 우회하지 않고 계속 작동합니다.

답변1

baseDNS 이름 서버를 재정의하려면 .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-toolDNS 서버 가

DNS:             208.67.222.222
DNS:             208.67.220.220

이것은 내 라우터에서 제공됩니다. 반면에 채굴 주소는 다음과 같습니다.

;; Query time: 28 msec
;; SERVER: 8.8.4.4#53(8.8.4.4)

내가 옳다면 이 모든 것에서 내가 얻은 교훈은 다음과 같다.

  1. resolvonf는 "헤드" 부분만 읽습니다. "기본" 부분은 어떻게든 dnsmasq에 의해 제어됩니다.
  2. dnsserver는 실제로 dhcp에서 제공하는 서버에 관계없이 8.8.4.4로 강제 실행되지만 요청은 항상 8.8.4.4로 전송되므로 dnsmasq에서 제공하는 캐싱이 손실됩니다.
  3. 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.confdnsmasq 패키지로 설치되었기 때문에 파일이 없지만 Ubuntu에는 dnsmasq-base만 제공됩니다. 실행한 sudo apt-get install dnsmasq다음 편집 /etc/dnsmasq.confsudo 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

  1. "네트워크 연결"을 검색하세요.

  2. 열어 봐

                        여기에 이미지 설명을 입력하세요.

  3. 그런 다음 WiFi나 이더넷 등 사용 중인 항목을 선택하고 편집을 클릭합니다. 당신은 이것을 얻을 것이다:

                  여기에 이미지 설명을 입력하세요.

  4. 탭에서 ipv4를 선택하십시오.

  5. 메소드에서만 주소 선택

  6. 아래에 DNS 이름을 입력하고 저장하세요.

  7. 넌 끝났어

관련 정보