Ubuntu: resolvconf를 위해 /etc/network/interfaces에서 DNS 서버를 올바르게 구성하는 방법은 무엇입니까?

Ubuntu: resolvconf를 위해 /etc/network/interfaces에서 DNS 서버를 올바르게 구성하는 방법은 무엇입니까?

내가 본 모든 구성() 예제는 /etc/network/interfaces인터페이스를 구성하고 다음 dns-*과 같은 줄을 제공하는 것을 보여줍니다.

auto eth0
iface eth0 inet static
        ...
        dns-nameservers 127.0.0.2
        dns-search example.com my.example.com

이제 나는 DNS 프로토콜이 전송 메커니즘과 독립적이라는 것을 알고 있습니다. 따라서 유선으로 IPv6 주소를 추가하는 것 자체가 오류가 되어서는 안 됩니다 dns-nameservers.

그러나 IPv6용 인터페이스도 구성 중이므로 dns-nameservers여기에 다음 줄을 추가하는 것이 좋습니다.

iface eth0 inet6 static
        ...
        dns-nameservers ::2
        dns-search example.com my.example.com

...아니면 그랬나요? 왜냐하면 resolvconf생성 시 /etc/resolv.conf모든 IPv6 DNS 서버를 무시하기 때문입니다. 또한 dns-search및 을 무시하는 것 같습니다 dns-domain. 따르는 것으로 보이는 유일한 줄은 dns-nameserversIPv4 구성의 줄 입니다 eth0.

DNS 서버를 구성하는 올바른 방법은 무엇입니까?


iface각 해당 섹션의 일부 가 되어야 하는 이유에 대한 추가 간접적인 증거입니다. 에서 인용man 8 resolvconf:

ifup(8) 프로그램은 의 설정에 따라 네트워크 인터페이스를 구성하는 데 사용할 수 있습니다 /etc/network/interfaces(5). 인터페이스 구성 시 ifup네임서버 정보를 푸시 하려면 해당 섹션에 줄을 추가하세요. 네임서버 주소를 추가하려면 로 시작하는 줄을 추가하세요.resolvconfdns-iface/etc/network/interfacesdns-nameservers

답변1

iface eth0 inet staticstanza 또는 stanza 에 dns-* 옵션을 넣는 것이 맞습니다 iface eth0 inet6 static. 이러한 옵션은 해당 옵션이 속한 논리적 인터페이스 정의가 활성화될 때 활성화됩니다.

나는 일반적으로 DHCP를 사용하여 구성하는 내 Ubuntu 15.04 시스템에서 이것을 테스트했습니다. NetworkManager를 비활성화하고 /etc/network/interfaces를 편집하여 다음과 같이 만들었습니다.

iface eth0 inet static
        address 192.168.178.22
        netmask 255.255.255.0
        dns-nameservers 8.8.8.8
        dns-search foo

iface eth0 inet6 static
        address fe80::390:f5ff:fef7:96b9/64
        dns-nameservers ::2
        dns-search bar

그럼 내가 그랬어

$ sudo ifup eth0

결과:

$ ifconfig eth0
eth0      Link encap:Ethernet  HWaddr 00:90:f5:f7:96:b9  
      inet addr:192.168.178.22  Bcast:192.168.178.255  Mask:255.255.255.0
      inet6 addr: fe80::390:f5ff:fef7:96b9/64 Scope:Link
      UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
      RX packets:2114609 errors:0 dropped:1 overruns:0 frame:0
      TX packets:1757693 errors:0 dropped:0 overruns:0 carrier:0
      collisions:0 txqueuelen:1000 
      RX bytes:2033346950 (2.0 GB)  TX bytes:1318685445 (1.3 GB)
      Interrupt:20 Memory:f7e00000-f7e20000 

$ 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 ::2
nameserver 8.8.8.8
search bar foo

이제 주소, dns-nameservers 및 dns-search 옵션이 두 스탠자 모두에서 활성화되어 있습니다.

[2015년 5월 30일 업데이트]

답변2

Ubuntu 16.04.2 LTS를 실행하는 RPi에서 내가 찾은 내용은 다음과 같습니다.

참고: NetworkManager를 제거하고 resolvconf만 작업을 수행하도록 남겨 두었습니다. (이것은 고정 서버이므로 네트워킹 측면에서는 많은 변화가 없습니다.)

만약에한 인터페이스(기본 유선 인터페이스)에는 dns-search 및 dns-nameserver 행만 있고 다른 인터페이스(wlan0)에는 없습니다. 그런 다음 재부팅 시 약 95%의 시간 동안 내 /etc/resolv .conf 파일 비어있을 것입니다.

예를 들어 내 인터페이스 파일이 다음과 같을 때:

# The primary network interface
auto enxb827ebbfedcf
iface enxb827ebbfedcf inet static
    address 192.168.1.16
    netmask 255.255.255.0
    network 192.168.1.0
    broadcast 192.168.1.255
    gateway 192.168.1.1
    dns-search summer.co.uk summer.vpn
    dns-nameserver 192.168.1.16 
    dns-nameserver 192.168.1.1

# end stanza with clear line+

# The loopback network interface
auto lo
iface lo inet loopback

auto wlan0 
iface wlan0 inet static
    address 192.168.1.17
    netmask 255.255.255.0
    network 192.168.1.0
    broadcast 192.168.1.255
    gateway 192.168.1.1 
wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf

그 다음에다시 시작한 후 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

그러나 한두 번 재부팅한 후에는 내가 원하는 대로 정확히 작동한다는 것을 알았습니다.

# 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 192.168.1.16
nameserver 192.168.1.1
search summer.co.uk summer.vpn

해결책 두 인터페이스(유선 및 wlan0)에 대해 dns-search 및 dns-nameserver 행을 제공하면 재부팅할 때마다 모든 것이 (지금까지) 제대로 작동합니다.

즉, 다음 인터페이스 파일이 저에게 효과적이었습니다.

# The primary network interface
auto enxb827ebbfedcf
iface enxb827ebbfedcf inet static
    address 192.168.1.16
    netmask 255.255.255.0
    network 192.168.1.0
    broadcast 192.168.1.255
    gateway 192.168.1.1
    dns-search summer.co.uk summer.vpn
    dns-nameserver 192.168.1.16 
    dns-nameserver 192.168.1.1

# end stanza with clear line+

# The loopback network interface
auto lo
iface lo inet loopback

auto wlan0 
iface wlan0 inet static
    address 192.168.1.17
    netmask 255.255.255.0
    network 192.168.1.0
    broadcast 192.168.1.255
    gateway 192.168.1.1
    dns-search summer.co.uk summer.vpn
    dns-nameserver 192.168.1.16 
    dns-nameserver 192.168.1.1
wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf

(지금까지) 재부팅할 때마다 다음과 같은 올바른 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 192.168.1.16
nameserver 192.168.1.1
search summer.co.uk summer.vpn

다소 중복되기는 하지만 이러한 중복 구성은 정상이라고 생각합니다.

결론: 인터페이스(lo0 제외)에 dns-search 및 dns-nameserver 정보가 누락된 경우 resolvconf는 resolv.conf 파일에 아무 것도 배치하지 않습니다. (ifup이 wlan0 인터페이스를 두 번째로 처리한 다음 ifup이 resolv.conf 등을 지우는 것과 같습니다.)

이것이 버그인지는 확실하지 않지만 나에게는 맞지 않는 것 같습니다.

답변3

/etc/network/interfaces에서 IPv6 DNS 서버를 사용하려면... 다음과 같이 특정 네트워크 인터페이스에 IPv6 DNS 이름 지정 항목을 입력하면 됩니다.

dns-nameservers 2001:4860:4860::8844 2001:4860:4860::8888. 

resolv.conf에 IPv6 dnsnameser를 영구적으로 추가하려면 아래에 추가한 것과 동일한 링크를 사용하고 고유한 IPv6 DNS 이름을 채워 resolvconf 기본 파일을 편집합니다.

nameserver 2001:4860:4860::8844
nameserver 2001:4860:4860::8888 

IPv6를 사용하여 /etc/network/interfaces를 구성하려면 이 가이드를 사용하세요.http://www.bytelinux.com/configure-permanent-static-ip-address-alias-interfaces-debian-based-systems/다음과 같이 IPv4를 IPv6으로 교체합니다: auto eth0

iface eth0 inet6 static
        address 2800:210:0:1::3
        netmask 64
        gateway 2800:210:0:1::1
        dns-nameservers 2001:4860:4860::8844 

답변4

이전 답변의 링크에서 제안한 대로 resolvconf 기본 파일을 편집하고 이러한 IPv6 DNS 이름 서버를 /etc/resolv.conf 시스템 전체 파일에 직접 구현하고 네트워크 인터페이스 파일을 계속 사용하는 것은 어떨까요? 특정 NIC에 대해 추가 IPv6 이름 서버를 사용하려는 경우 /etc/resolv.conf에 DNS IPv6 이름 서버 세트를 추가하고 /etc/network/interfaces에서만 사용할 수 있습니다.

관련 정보