resolv.conf의 네임 서버 127.0.1.1은 사라지지 않습니다!


60

나는 내가 가지고있는 것을 읽은 nameserver 127.0.1.1내에서 /etc/resolv.conf내 컴퓨터는 자신의 DNS 서버가있는 경우에만 파일. 그렇지 않기 때문에 문제가 발생합니다. 그러나 내가 무엇을 하든지 그것을 제거 할 수 없습니다!

여기까지 내가 한 것들이 있습니다 :

  1. 추가 nameserver 192.168.1.3/etc/resolvconf/resolv.conf.d/base파일. (192.168.1.3은 네트워크의 DNS입니다).
  2. 실행 중 : sudo resolvconf --enable-updates.
  3. 실행 중 : sudo resolvconf -u.
  4. 실행 중 : sudo service network-manager restart(확인하기 위해).

그러나 /etc/resolv.conf파일을 열면 다음과 같이 표시 됩니다. nameserver 127.0.1.1! 누구든지 무엇이 잘못되었는지 알고 있습니까?

실제로입니다 127.0.1.1! 그리고 왜 그렇지 않은지 모르겠습니다 127.0.0.1!

/etc/resolv.conf수동으로 업데이트 하고 다른 것으로 변경해 sudo resolvconf -u도 다시로 돌아갑니다 127.0.1.1! 이 주소는 어디에서 왔습니까?

답변:


100

NetworkManager는 resolvconf 유틸리티를 통해 주소 127.0.1.1를에 삽입하는 프로그램입니다 resolv.conf. NM은 로컬 전달 이름 서버로 사용하기 위해 dnsmasq 프로그램의 인스턴스를 시작하도록 구성된 경우에만 해당 주소를 삽입합니다. 이 dnsmasq 인스턴스는 주소 127.0.1.1에서 쿼리를 수신합니다.

로컬 전달 이름 서버를 사용하지 않으려면 dnsmasq 인스턴스를 시작하지 않고 해당 주소를 삽입하지 않도록 NetworkManager를 구성하십시오. 에서 /etc/NetworkManager/NetworkManager.conf라인 밖으로 코멘트dns=dnsmasq

sudo nano /etc/NetworkManager/NetworkManager.conf

[main]
plugins=ifupdown,keyfile,ofono
#dns=dnsmasq

NetworkManager 서비스를 다시 시작하십시오.

sudo service network-manager restart

이 모드에서 /etc/resolv.confNetworkManager는 NetworkManager가 활성 연결에 대해 가지고있는 네임 서버 주소를 포함하도록 업데이트합니다 (여전히 resolvconf를 통해).

resolv.conf를 업데이트하기 위해 resolvconf 메커니즘을 비활성화하고 정적 resolv.conf 파일 만 사용하려면 다음을 수행하십시오.

sudo rm -f /etc/resolv.conf  # Delete the symbolic link
sudo nano /etc/resolv.conf   # Create static file

# Content of static resolv.conf
nameserver 8.8.4.4
nameserver 8.8.8.8

dnsmasq를 비활성화하면 3 개의 DNS가 있고 쿼리가 3에 도달하지 않습니다. Google에 쿼리 한 다음 인트라넷 DNS에 쿼리하고 싶습니다. 감사합니다
JorgeeFG

3
restart network-managerupstart 대신 systemd를 사용하므로 Xenial에서 작동하지 않습니다. 시도systemctl restart network-manager
Matthias Weiler

내 질문은 dnsmasq 프로그램이 어떤 DNS 서버를 물어볼 것입니까? DHCP의 DNS 서버에 호스트 IP 주소 쿼리를 요청합니까?
Clock ZHONG

11

resolvconf가 잘못 구성되었을 수 있습니다. resolvconf 및 NetworkManager의 작동 방식을 실제로 이해하지 않고 구성 파일을 가지고 놀았을 때 특히 그렇습니다.

배경 정보는 resolvconf 설명서 및 Stéphane Graber의 블로그 게시물을 참조하십시오.

https://www.stgraber.org/2012/02/24/dns-in-ubuntu-12-04/

우선 우분투 데스크탑과 우분투 서버는 기본적으로 resolvconf가 설치되고 활성화되어 있음을 알아야합니다. Resolvconf는 /etc/resolv.conf 파일을 순서대로 되돌릴 수있는 방식으로 동적으로 업데이트하기위한 프레임 워크를 제공합니다.

둘째, Ubuntu Desktop에는 기본적으로 NetworkManager가 설치 및 활성화되어 있습니다. 기본적으로 NetworkManager는 dnsmasq 인스턴스를 시작하여 로컬 전달 이름 서버로 사용합니다. 이 NetworkManager 제어 dnsmasq 인스턴스는 127.0.1.1에서 쿼리를 수신합니다. NetworkManager가 dnsmasq 인스턴스를 시작하면 resolvconf에 주소 127.0.1.1를 resolv.conf 에 삽입하도록 지시 합니다. 다른 답변에서 언급했듯이 로컬 전달 이름 서버 인스턴스를 시작하지 않도록 NetworkManager를 구성하면 로컬 전달 이름 서버가 시작되지 않으며 resolvconf에 주소 127.0.1.1를 resolv.conf 에 삽입하도록 지시하지 않습니다 .

이 기본 구성은 올바르게 작동하므로 상황이 특별하지 않으면 기본 구성을 복원해야합니다.

기본 구성을 복원하려면 다음을 참조하십시오.

  • /etc/resolvconf/resolv.conf.d/head은로 시작하는 두 행으로 구성된 단지 resolvconf 헤더 텍스트가 들어 #문자를
  • /etc/resolvconf/resolv.conf.d/base는 빈 파일입니다
  • /etc/resolvconf/resolv.conf.d/tail은 빈 파일입니다.
  • /etc/resolv.conf는 내용과의 심볼릭 링크입니다 ../run/resolvconf/resolv.conf

이를 위해 다음 명령을 실행하십시오.

sudo su
dpkg-reconfigure resolvconf   # And answer `Yes` to agree to dynamic updates
cd /etc/resolvconf/resolv.conf.d
echo '# 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' > head
rm -f base tail original
:> base
:> tail

NetworkManager의 원래 구성은

[main]
...
dns=dnsmasq
...

/etc/NetworkManager/NetworkManager.conf에 있습니다. dns=dnsmasq회선 을 주석 처리하여 NetworkManager 제어 로컬 전달 이름 서버를 사용하지 않는 것이 합리적 입니다.

[main]
...
#dns=dnsmasq
...

이 작업을 모두 수행 한 후 오래된 네임 서버 정보 레코드를 지우려면 머신을 다시 시작하는 것이 좋습니다.

sudo reboot

1

필자의 경우 파일에 dns=dnsmasq줄 이 없었 으며 Network Manager가 여전히/etc/NetworkManager/NetworkManager.conf/etc/resolv.confnameserver 127.0.1.1

수정은 올바른 업데이트를 위해 심볼릭 링크를 복원하는 것이 었습니다.

sudo ln -sf /run/resolvconf/resolv.conf /etc/resolv.conf
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.