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

しかし、1、2回再起動した後、私は望むように正確に動作することがわかりました。

# 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インタフェースを2番目に処理した後、ifupがresolv.confなどを消去するのと同じです。)

これがバグかどうかはわかりませんが、私には合わないようです。

答え3

/etc/network/interfacesで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でのみ使用できます。

関連情報