resolv.conf를 통해 DNS 서버를 어떻게 추가합니까?


207

/etc/resolv.conf쓸모 우분투 12.04 LTS (정확한 천산갑)?

DNS 서버 정보가 이제 NetworkManager에 저장되어 있습니다. nmcli명령 줄 도구는 당신을 위해 나열 할 수 있습니다.

DNS 서버를 하나 더 추가 /etc/resolv.conf하려면 resolvconf패키지 도움말 을 사용하여 추가 할 수 있습니까?


2
위에서 언급 한 명령이 nm-tool아니라고 생각합니다 nmcli.
Jesse Glick

답변:


139

경우 /etc/resolv.conf포함 nameserver 127.0.0.1다음에 항목을 추가하는 /etc/resolvconf/resolv.conf.d/tail정말 유용한 아무것도하지 않습니다.

NetworkManager를 사용하는 경우 네트워크 표시기 를 통해 이름 서버 주소를 정적으로 추가해야합니다 . 연결 편집 ... | 편집 ... | IPv4 설정 | 추가 DNS 서버 .

당신이 경우 정말 많은 항목을 추가 할 /etc/resolv.conf하는을 만들고 /etc/resolvconf/resolv.conf.d/tail거기에 추가합니다.

모든 우분투 릴리스와 마찬가지로 다음 위치에서 우분투 릴리스 정보를 읽는 것이 좋습니다.

데스크탑 및 공통 인프라 섹션에는


1
@stgraber, 내가 찾아서 게시 한 대체 접근법에 대해 의견을주십시오. /etc/resolvconf/resolv.conf.d/tail파일 추가 또는 Network Manager 사용 과 비교하면 어떻습니까? 감사.
랜달 쿡

3
@stgraber Ubuntu 서버에 권장하는 것은 무엇입니까? 귀하의 블로그에서 Network-Manger가 이것을 관리하는 가장 좋은 방법 인 것처럼 보이지만 시스템에 네트워크 관리자를 설치하면 필요하지 않은 많은 것들 (예 : GUI 항목)이 설치됩니다 ).
에이버리 찬

1
블로그 게시물에 따라 /etc/resolvconf/resolv.conf.d/head에 항목을 추가하는 방법은 무엇입니까?
sup

3
@AveryChan, @randallcook이 제안한 "제 3의 접근 방식" dns-nameservers을 사용하십시오.의 eth0 섹션에 추가 하십시오 /etc/network/interfaces.
mrm

1
/etc/resolvconf/update.d/libcUbuntu 14.04.1 서버에서 : # Set TRUNCATE_NAMESERVER_LIST_AFTER_LOOPBACK_ADDRESS=no # to allow additional nameserver addresses to be listed in # resolv.conf after an initial loopback address 127.* or ::1. ( 쇼의 /etc/default/resolvconf23 행 및 24 행으로 설정/etc/resolvconf/update.d/libc
immeëmosol

134

여기 에 다음과 같은 줄을 추가하는 다른 접근 방법이 있습니다/etc/dhcp/dhclient.conf .

prepend domain-name-servers x.x.x.x, y.y.y.y;

마찬가지로, 여기 에 줄을 추가 하는 세 번째 방법을 찾았 습니다 /etc/network/interfaces.

auto eth0
iface eth0 inet static
    . . .
    dns-nameservers 8.8.8.8 8.8.4.4

업데이트 : 세 번째 접근 방식에 대한 공식 문서 는 다음과 같습니다 .


18
나는 이것을 third approach하는 가장 간단한 방법 이기 때문에 이것을 투표했습니다 .
Billy Moon

1
@ billy 나는 세 번째 방법을 전혀 사용할 수 없었습니다. 여기에 나열된 첫 번째 방법 만 dclient.conf를 편집하면 나를 위해 일했습니다.
Jeff Atwood

9
참고 : dhclient.conf를 편집하면 dhclient를 사용하는 경우에만 효과가 있으며 ifup과 NetworkManager에서 모두 사용됩니다. / etc / network / interfaces를 편집하면 ifup을 사용하는 경우에만 효과가 있습니다. NetworkManager 연결 편집기를 사용하여 NetworkManager 연결을 구성하면 NetworkManager를 사용하는 경우에만 영향을줍니다.
jdthood

1
내가 실수하지 않으면 세 번째 방법은 DHCP가 반환 한 이름 서버 뒤에 다른 이름 서버를 추가합니다. 그것이 먼저 오기를 원한다면 다른 옵션 중 하나가 더 적합합니다. 나는 /etc/resolvconf/resolv.conf.d/head(그곳에서 오해의 소지가있는 "편집하지 말 것"주석을 극복 한 후에 사용 했다) :)
starfry

1
@ Mr.Hyde, 이들은 명령 행 명령이 아니며, / etc / network / interfaces에 추가 할 행입니다.
랜달 쿡

90

resolvconf 패키지에 대해 이야기하는 것 같습니다.

resolvconf 패키지를 설치하십시오 .

운영

cd /etc/resolvconf/resolv.conf.d
sudo cp -p head head.orig  #backup copy, always do this
sudo nano head

파일 상단은 무서운 경고입니다. /etc/resolv.conf 파일은이 파일의 내용에서 자동 생성됩니다. 경고는 /etc/resolv.conf가 생성 될 때 /etc/resolv.conf에 놓이게됩니다. 파일의 끝에 추가

nameserver <ip_of_nameserver>

Ctrl x파일을 저장하려면 예를 누르고 대답하십시오. 완료하려면 /etc/resolv.conf를 다시 생성하여 변경 사항을 지금 적용하십시오.

sudo resolvconf -u

그런 다음 /etc/resolv.conf의 내용을 확인하여 추가 한 줄이 있는지 확인하십시오. 또한 다음에 머신을 부팅하거나 네트워크 서비스를 다시 시작하면 둘 중 더 빠른 시간이 유지됩니다.


파일 경고에 대한 정보는 내가 필요한 것입니다. 파일을 편집해서는 안된다는 인상을 받았습니다! 감사!
Xunnamius

이것은 나에게 가장 좋은 대답입니다!
Siwei Shen 申思维

31

아래에서는 Ubuntu Server 에디션을 실행하고 NetworkManager 대신 ifup을 사용한 이후 찾은 가장 좋은 방법을 보여줍니다.

실제로 나를 위해 / etc / network / interfaces 파일에 모두 넣음으로써 이것을 쉽게 만들었습니다. resolv.conf에 작성한 것과 동일한 구성이 이제 아래 예와 같이 네트워크 어댑터 구성과 동일한 파일에있을 수 있습니다.

# The loopback network interface
auto lo
iface lo inet loopback

# The primary network interface
auto eth0
iface eth0 inet static
        address 192.168.1.2
        netmask 255.255.255.0
        network 192.168.0.0
        broadcast 192.168.1.255
        gateway 192.168.1.1
        dns-nameservers 75.75.75.75 75.75.76.76
        dns-search local

나는 이것이 도움이되고 나처럼 쉽게하기를 바랍니다. 이제 정적 IP 주소를 만들고 네임 서버와 DNS 도메인을 하나의 파일로 모두 추가 할 수 있습니다 :)


1
감사합니다. 이것은 내가 좋아하는 방법이되었습니다. 주제를 벗어난 참고 사항 : '주소'및 '넷 마스크'에서 자동으로 계산되므로 '네트워크'및 '브로드 캐스트'주소를 지정할 필요가 없습니다. 실제로 필요한 것은 '주소', '넷 마스크'및 '게이트웨이'입니다.
Martijn Heemels

이것이 가장 깨끗한 답입니다. dns- * 키워드의 철자를 정확히 입력하십시오. 철자가 잘못된 "dns-nameservers"는 실제 문제였습니다.
John McGehee

18

광산은 Ubuntu Server 12.04를 실행 중입니다. 다음과 같이 변경하고 서버를 다시 부팅했습니다. 일반적으로 네트워크 인터페이스 ( ifdown eth0또는 ifup eth0) 만 종료하면됩니다 .

파일 /etc/resolvconf/resolv.conf.d/base에 다음 항목을 추가했습니다.

nameserver 8.8.8.8
nameserver 8.8.4.4

위의 도움이되기를 바랍니다!


12

Frank의 답변에 명시된대로 NetworkManager를 사용할 수 있지만 수동으로 편집하려는 경우 /etc/resolv.conf삭제하고 (실제로 symlink 임) 원하는 내용으로 새 일반 파일을 작성하면됩니다. 이 resolvconf유틸리티는 파일에만 기록합니다 /run/resolvconf/resolv.conf.


9

참고 :이 답변은 원하는 이름 서버 앞에 추가하는 것에 만 초점을 둔 다소 다른 사전 병합 버전의 질문에 대한 것입니다.

이것은 12.04 이전에 작동합니다.

편집 /etc/dhcp3/dhclient.conf및 추가 :
prepend domain-name-servers 127.0.0.1;

(실제로이 행은 이미 존재하므로 주석 처리를 해제하기 만하면됩니다.)


DHCP에서 할당 한 주소가없는 경우이 기능이 작동합니까?
Azendale 2016 년

dhclient 구성에 대한 자세한 내용을 보려면 man dhclient.confdhclient 매뉴얼 페이지에 액세스하십시오. (Azendale의 질문에 대한 답변은 아닙니다.)
Christian Skjødt

이 대답은 완전히 틀 렸습니다. 우선, 질문 제출자는 주소 127.0.0.1이 아닌 외부 이름 서버의 주소를 추가하려고합니다. 외부 인터페이스 용 인터페이스 구성자는 내부 네임 서버에 주소를 추가 할 수있는 곳이 아닙니다. 둘째, 파일은 / etc / dhcp3이 아니라 / etc / dhcp에 있습니다. 셋째, Ubuntu 12.04부터 resolvconf를 사용하여 구성됩니다.
jdthood

1
우선, 원래 질문은 중재자 병합으로 인해 크게 바뀌 었으므로 물론 대답은 이상하게 보입니다. dhcp3 파일은 2011 년 에 이것에 대답했을 때의 위치였으며 이상적이지 않더라도 효과가있었습니다. 이 솔루션을 여러 컴퓨터에서 사용했습니다. 분명히 루프백 주소를 앞에 추가하려는 주소로 변경해야합니다. RFC6890을 읽지 않아도 대부분의 사람들이 루프백이 무엇인지 알고 있다고 가정합니다.
belacqua

@jdthood 왜 자신 만의 답을 추가하지 않습니까? 개인적으로, 나는 일을하는 bsd-ish resolvconf 방법에 익숙하지 않았습니다. 직접 /etc/resolv.conf 접근 방식을 선호했으며 새로운 Rube Goldberg 시스템의 이점이 무엇인지 잘 모르겠습니다. (/ etc / motd와 마찬가지로).
belacqua

7

resolvconf쓸모가 없습니다. Linux 서버에 있고 내 IP 주소 는 정적이며 DNS 서버는 정적입니다. resolvconf또는 NetworkManager 가 필요하지 않습니다 .

서버에서 작업 할 때 간단하게 유지하는 것이 나의 정책입니다. 복잡성이 적을수록 문제가 발생했을 때 관리 / 수정이 쉬워집니다.

그래서 aptitude purge resolvconf수동으로 심볼릭 링크/etc/resolv.conf 가 아니며 정적 파일을 만들 었는지 수동으로 확인했습니다 . 프로그램이 파일을 변경하려고하는 경우 예방 조치로 (불변)했습니다 .chattr +i/etc/resolv.conf


4
resolvconf는 기본 시스템의 일부이므로 업그레이드 할 때 나중에 문제가 발생하면이를 삭제하여 기본 시스템의 일부입니다.
jdthood

3
의견과 답변에 동의합니다. 이로 인해 발생한 문제 수와이 "문제"를 해결하는 데 몇 시간의 지원 시간이 있었는지, 그리고 IT 직원이 답변을 찾는 데 얼마나 많은 시간을 소비했는지 고려하십시오. 단순함 이 가장 좋습니다. DNS를 원하지 않는 것으로 변경하기 위해 서버가 필요하지 않습니다.
메이

6

위의 대부분은 깨끗한 시스템을 가지고 있다고 가정하지만 실제로는 다른 dhcp 클라이언트를 설치하고 특정 이전 버전의 Ubuntu에서 네트워크 관리자를 비활성화하는 등의 경우가 많습니다. 다음을 아는 것이 좋습니다. dnsmasq를 한동안 사용했지만 제거했습니다. 현재 내 시스템의 내용은 다음과 같습니다 (시스템 /etc/resolv.conf의 심볼릭 링크 /run/resolvconf/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.0.1

내가 실행 횟수는 중요하지 않습니다 sudo resolvconf -u또는 sudo dpkg-reconfigure resolvconf그것은 내가 네트워크 매니저에서 설정 한 것과 네임 서버를 업데이트하지 않았습니다. resolvconf가 NetworkManager에서 사용하는 정보가있었습니다.

cat /run/resolvconf/interface/NetworkManager  
nameserver 8.8.4.4
nameserver 8.8.8.8

그러나이 디렉토리에 여러 파일이있는 경우이 파일이 전혀 사용되지 않을 수 있습니다. 범인은 dnsmasq를 제거해도 파일이 제거되지 않았습니다.

cat /run/resolvconf/interface/lo.dnsmasq                        
nameserver 127.0.0.1

이 파일을 제거하고 sudo resolvconf -u나중에 실행 하면 내 DNS 문제가 해결되었습니다.

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 8.8.4.4
nameserver 8.8.8.8 

이것이 다른 사람들이 디버깅 (다른 모든 네트워크 도구 간의 복잡한 상호 작용)에도 도움이되기를 바랍니다. 당신이 사용 resolvconf하는 경우 ls /run/resolvconf/interfaces거기에 무엇이 있는지 확인해야합니다 .


1
감사합니다. 매우 도움이되었습니다. 나는 더 높은 투표 응답을 먼저 시도했지만 아무도 트릭을 수행하지 않는 것 같습니다. /run/resolvconf/interface/디렉토리에 추가 파일이 없지만 내 NetworkManager파일에는 약간의 사랑이 필요했습니다. 귀하의 답변으로이 문제를 해결하는 데 도움이되었습니다.
mason81

4

방금 링크를 삭제 /etc/resolv.conf하고 네임 서버의 주소가있는 규칙적인 파일을 만들었습니다. 그것은 효과가 있으며 우분투 개발자가 만든 그 이상한 구성을 사용해야 할 이유가 없습니다.


1
예, 저는 서버에 영향을 미치고 복잡성과 불투명성을 추가하는 이런 종류의 변화에 ​​관심이 없습니다. 이것은 릴리스마다 변경되지 않아야하는 핵심 동작입니다.
belacqua

이 답변은 5 살이며 IMHO는 여전히 모든 목록 중 최고입니다. 간단하고 빠르며 효과적입니다. 단점이 있습니까?
Craig S. Anderson

3

연결 "AUTO ETH0"또는 NM에서 연결하는 데 사용하는 이름을 편집 할 수 있습니다. NM을 마우스 오른쪽 버튼으로 클릭하고 "연결 편집 ..."을 선택하면됩니다. IPv4 탭에서 "방법"으로 "자동 (DHCP) 주소 만"을 선택할 수 있으며 NM을 사용하면 이름 서버 주소를 수동으로 설정하여 주소가 DHCP를 통해 전달 될 수도 있습니다.


3

이미 긴 목록에 내 비트를 추가하는 다른 방법은 다음과 같습니다 (12.04에서 테스트).

/run/resolvconf/interface/NetworkManager필요에 맞게 편집 하십시오. 예를 들면 다음과 같습니다.

search foobar.com example.com
nameserver 192.168.1.1

그런 다음 대부분의 다른 예에서 설명한대로을 수행하십시오 sudo resolvconf -u. 이제 다음 resolv.conf과 같이 보일 것입니다.

nameserver 192.168.1.1
nameserver 127.0.0.1
search foobar.com example.com

나는 여전히 구현 방식이 마음에 들지 않으며 (우분투는 모든 foo에 대해 서비스가 필요하다고 생각합니다) 평범한 것을 선호합니다 resolv.conf. 그러나이 접근법은 지금까지 가장 좋은 타협으로 보입니다. 추가 된 "localhost-NS"는 너무 아프지 않아야합니다.


2

나는 소스의 순서를 변경하여 이것을 고쳤다. dns전에 소스를 옮겼 mdns습니다 /etc/nsswitch.conf.

hosts: files dns mdns4_minimal [NOTFOUND=return] mdns4

이 방법으로 설정을 유지하고 로컬 캐싱 서버를 계속 사용할 수 있습니다.


항목을 추가하는 대신 시스템이 고장 나서 실제로 원하는 정보를 제공하도록 수정하십시오. +1.
nelaaro

2

어때요 :

sudo dpkg-resolvconf 재구성

그 전에 네트워크 관리자를 사용하여 DNS 주소를 변경하고 방법을

자동 (DHPC) 주소 만

그런 다음 위의 명령을 실행하고 재부팅하십시오. 그것은 나를 위해 해결책을했습니다.


2
vi /etc/network/interfaces


This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).

# The primary network interface
allow-hotplug eth0


# The loopback network interface
auto lo
iface lo inet loopback

# The primary network interface
#auto eth0         <<----- change this comment with the #
iface eth0 inet dhcp

2

이것은 매우 인기있는 질문이며, 가능한 표준 답변 모음이 있으며 모두 IMO는 해킹 적입니다. 저는 항상 NetworkManager에서 설정 한 DNS 설정, 특히 "자동 (DHCP) 주소 만"으로 고정 DNS 서버를 설정하기 위해 Ubuntu를 사용하는 데 문제가 있었으며, 오늘 실제로 실제로 무엇이 잘못되었는지 파악했습니다.

문제는 resolvconf와 NetworkManager 간의 상호 작용에 있습니다. resolvconf에는이 파일이 있습니다 /etc/resolvconf/interface-order. 적어도 내 시스템에서 NetworkManager 이 파일에 전혀 없습니다 (끝 부분에 * 와일드 카드로 덮여있는 경우는 제외). 따라서 solclient가 가장 최근에 resolvconf에 대한 보고서를 NetworkManager가 말한 것보다 우선합니다.

따라서 적어도 제 경우에는 실제 대답은

NetworkManager

상단 또는 근처에 /etc/resolvconf/interface-order있습니다.

(예, 많은 사람들이 "uninstall resolvconf"라고 말하지만, 그 자체로는 나쁜 생각 인 것 같습니다. 그러나 그 이상, 적어도 현명하고 제니 얼은 resolvconf를 시스템의 중요한 부분으로 생각합니다 (예 : 우분투) -최소한에 따라 다름], resolvconf없이 시스템을 일관되고 업데이트 된 상태로 유지하기가 어렵습니다.)

요청이있을 경우이를 어떻게 파악했는지 자세히 설명 할 수 있습니다. ( 편집 : 분명히 요청했을 때 그렇게하지 않았습니다. 미안합니다.이 시점에서 다음에 말하는 것보다 훨씬 자세한 내용을 기억하지 못합니다.) 요컨대, resolvconf 실행 파일을 쉘 래퍼로 대체했습니다. 인수, 입력, 출력 및 stderr을 파일에 덤프했습니다. resolvconf의 업데이트 스크립트에 set -x를 추가했습니다.

( 편집 : 나는 할 수 있습니다 . 제가 첫 번째 부분을 의미하는 것은 내가 which 명령 또는 유형 명령을 사용하여 볼 수 있습니다 실제 resolvconf 실행 파일을 이동하는 sudo를 사용한다는 것을 말한다 그리고 궁극적으로 바로 이동 된을 실행하는 쉘 스크립트를 작성 resolvconf는 물론 일부 파일에 대한 인수를 반영하고 쉘 재 지정을 사용하여 stdin, stdout 및 stderr을 다양한 다른 파일로 보냅니다. 많은 리눅스 괴짜들은 내가 의미하는 바를 알아낼 수있다; 아마도 어떤 훌륭한 사마리아인은 더 자세한 설명을 제공 할 것이다.)


"제발 당신이 알아 낸 방법에 대한 자세한 내용을 제공합니다 "
Pierre.Vriens


1

DNS를 변경하려면 https://developers.google.com/speed/public-dns/docs/using의 지침을 따르십시오.

  1. 네트워크로 이동

  2. DNS를 구성 할 연결을 선택하십시오.

  3. 무선 연결 설정을 변경하려면 무선 탭을 선택한 다음 적절한 무선 네트워크를 선택하십시오.

  4. 화살표 (오른쪽)를 클릭하고 표시되는 창에서 IPv4 설정 또는 IPv6 설정 탭을 선택하십시오.

  5. 선택한 방법이 자동 (DHCP) 인 경우 드롭 다운을 열고 대신 자동 (DHCP) 주소 만 선택하십시오. 방법이 다른 것으로 설정되어 있으면 변경하지 마십시오.

  6. DNS 서버 필드에 쉼표로 구분 된 DNS IP 주소를 입력하십시오.


0

0. 임시 DNS를 추가하십시오. /etc/resolv.conf를 편집하십시오.

nameserver 4.4.4.4
nameserver 8.8.8.8

1. resolvconf를 설치하거나 업데이트하십시오.

root@ubuntu:~# apt-get install resolvconf -y

2. /etc/resolvconf/resolv.conf.d/tail에 네임 서버를 추가하십시오

nameserver 4.4.4.4
nameserver 8.8.8.8

3. 컴퓨터를 재부팅하십시오.

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