Ubuntu: Как правильно настроить DNS-серверы в / etc / network / interfaces для resolvconf?

14

Все примеры, которые я видел для configurations ( /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-nameserversстрока конфигурации IPv4 eth0.

Как правильно настроить DNS-серверы?


Дополнительные косвенные доказательства того, почему это должно быть частью каждой соответствующей ifaceстрофы. Цитата из man 8 resolvconf:

ifup(8) Программа может быть использована для сетевых интерфейсов конфигурационных в соответствии с настройками /etc/network/interfaces(5). Чтобы сделать ifuppush-информацию о сервере имен resolvconfпри настройке интерфейса, добавьте dns-строки в соответствующий ifaceраздел /etc/network/interfaces. Чтобы добавить адреса серверов имен, добавьте строку, начинающуюся с dns-nameservers.

0xC0000022L
источник
Если у вас все еще есть эта проблема, пожалуйста, опубликуйте весь файл / etc / network / interfaces и выходные данные / usr / share / resolvconf / dump-debug-info, которые включены в пакет resolvconf в Ubuntu 15.04.
Jdthood

Ответы:

9

Правильно указывать опции dns- * в iface eth0 inet staticстрофе или iface eth0 inet6 staticстрофе. Опции становятся активными, когда определение логического интерфейса, которому они принадлежат, становится активным.

Я только что проверил это на моей собственной машине Ubuntu 15.04, которую я обычно настраиваю с DHCP. Я отключил 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 из обоих разделов.

[Обновлено 30 мая 2015 года]

jdthood
источник
1

На моем RPi под управлением Ubuntu 16.04.2 LTS мои выводы были следующими:

Примечание: я удалил 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

Решение Когда я дал обоим интерфейсам (wired и 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 или что-то подобное.)

Я не уверен, если это ошибка или нет, мне кажется, что это неправильно.

Будет
источник
-1

Редактирование сетевых интерфейсов для добавления использования вашего собственного DNS - это способ ... но для постоянного изменения общесистемного resolv.conf с вашим пользовательским сервером dnsname вам необходимо установить пакет resolvconf (если он еще не установлен по умолчанию) и заполнить его базу файл конфигурации с вашими пользовательскими значениями DNS-серверов. Надеюсь, что это краткое руководство поможет вам в дальнейшей настройке, касающейся DNS-записей resolv.conf http://www.bytelinux.com/make-permanent-changes-to-resolv-conf-file-on-ubuntu/

Матей Цезарь
источник
2
Добро пожаловать в Unix и Linux! Хотя это может теоретически ответить на вопрос, было бы предпочтительнее включить сюда более важные части этого руководства и предоставить ссылку для справки.
Anthon
@MateiCezar: не могли бы вы уточнить? Я не уверен, что вы даже прочитали мой вопрос до конца. Пакет resolvconf будет установлен. Я хотел бы /etc/network/interfacesнастроить свои DNS-серверы для IPv4 и IPv6 соответственно.
0xC0000022L
-1

Вы хотите использовать DNS-серверы IPv6 в /etc/network/interfaces... Просто поместите записи DNS-имен IPv6 в конкретный сетевой интерфейс следующим образом:

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

Для постоянного добавления dnsnamesers IPv6 в resolv.conf используйте ту же ссылку, которую я добавил ниже, и отредактируйте базовый файл resolvconf, заполнив свои собственные DNS-имена IPv6:

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

Для настройки / etc / network / интерфейсов с IPv6 используйте это руководство http://www.bytelinux.com/configure-permanent-static-ip-address-alias-interfaces-debian-based-systems/ и замените IPv4 на IPv6 как следует: авто 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 
Матей Цезарь
источник
Исправлено ваше форматирование. Опять же, мой вопрос ясно утверждает, что это не приводит к добавлению этих DNS-серверов для IPv6 /etc/resolv.conf. Если это как-то работает для вас, было бы полезно узнать точную версию системы.
0xC0000022L
позвольте мне получить это прямо ... вы хотите использовать DNS-преобразователи IPv6 из / etc / network / interfaces и как-то добавить их в этот файл у вас не работает?
Матей Цезарь
Я могу добавить их в /etc/network/interfacesпорядке. Чего не происходит, так это того, что их переводят /etc/resolv.confкак надо. И я пытаюсь понять, что я делаю неправильно, да.
0xC0000022L
Все еще не понял? Эти записи DNS из / etc / network / interfaces переносятся в /etc/resolv.conf или нет? Usullay те записи namservers из интерфейсов никогда не передаются и не записываются в /etc/resolv.com, они работают самостоятельно с этого NIC и не реализуются в масштабе всей системы. Только DNS-файл /etc/resolv.conf используется интерфейсами, в которых отсутствуют записи dnsnameservers.
Матей Цезарь
Извините ... но я все еще не понимаю, чего вы пытаетесь достичь с помощью этих записей DNS-серверов.
Матей Цезарь
-1

Почему бы вам не внедрить эти DNS-серверы IPv6 непосредственно в системный файл /etc/resolv.conf, отредактировав базовый файл resolvconf, как предложено в моем предыдущем ответе со ссылкой, и по-прежнему использовать файл сетевых интерфейсов? Вы можете добавить набор DNS-серверов имен IPv6 в /etc/resolv.conf, а если вы хотите использовать другие серверы имен IPv6 для конкретного сетевого адаптера, используйте их только в / etc / network / interfaces.

bytelinux com
источник
то , что вы упоминаете в своем последнем предложении именно причина , почему я не хочу использовать Resolvconf базовый конфиг , и это именно то , что я имею в попытке. Кроме того, это именно то, что терпит неудачу.
0xC0000022L
Ладно, я понял! Но почему вы хотите реализовать вещи таким способом - в любом случае вам нужны только те DNS-серверы имен, чтобы они были доступны для всей системы, есть ли причина переносить их из сети / интерфейсов в resolv.conf, когда вы можете просто написать их в обоих файлы и все готово !?
bytelinux com
Не уверен, сколько машин вы администрируете, но для меня этого достаточно, чтобы попытаться сделать мою жизнь проще. Так /etc/network/interfacesкак должен делать работу, я пытаюсь понять, что я делаю неправильно.
0xC0000022L