Файл resolv conf. Конфигурирование DNS для network-manager

Table of Contents

Настройка интерфейса Ethernet

Основную настройку сети можно выполнить, редактируя конфигурационный файл interfaces , который располагается в /etc/network/interfaces . Здесь Вы можете задать IP адресс сетевой карты (или использовать DHCP), настроить маршрутизацию, IP masquerading, установить маршрут по умолчанию и многое другое.

Для того что бы интерфейс автоматически инициализировался при загрузке, не забудьте добавить строчку "auto".

man interfaces .

Автоматическое конфигурирование интерфейса с использованием DHCP

Если Вы хотите использовать DHCP вам необходимо написать следующие:

auto eth0 allow-hotplug eth0 iface eth0 inet dhcp

Ручное конфигурирование интерфейса

Если Вы хотите сконфигурировать вручную, например задать шлюз по умолчанию (так же опционально можно задать: сеть, широковещательный адрес или шлюз):

auto eth0 iface eth0 inet static address 192.168.0.7 netmask 255.255.255.0 gateway 192.168.0.254

Если вы хотите добавить IPv6 адрес, то напишете следующие:

iface eth0 inet6 static address 2001:db8::c0ca:1eaf netmask 64 gateway 2001:db8::1ead:ed:beef

Полный список опций можно найти в man interfaces .

Настройка скорости и дуплекса

Частые ошибки автоматического согласования режимов работы, свидетельствуют о проблемах с кабелем. Следует проверить физическое состояние кабельного оборудования (отсутствие повреждений итп), прежде чем предполагать несовместимость алгоритмов автосогласования. Если Вы выключите автосогласование и установите скорость и дуплекс вручную, то интерфейс на другом конце кабеля будет считать что автосогласование не поддерживается и установит скорость 10Mbs и полудуплексный режим передачи. Для того чтобы не было ошибок в работе, при ручной настройки Вам необходимо убедиться что оба интерфейса работают на одинаковых скоростях и установлен одинаковый режим дуплекса.

Если Вы хотите вручную установить скорость и режим дуплекса интерфейса. Здесь описаны основные шаги:

    установите пакеты ethtool и net-tools , так вы получите программы ethtool и mii-tool . Одна или обе из них могут работать с Вашим интерфейсом.

    Убедитесь что у Вас есть запасной вариант доступа к системе, на случай если сеть перестанет работать и ssh соединение будет не доступно.

  • Определите интерфейс, который Вы будете настраивать (чаше всего это eth0) и замените в следующих командах eth0 на Ваш интерфейс.
  • Попробуйте определить текущую скорость и режим дуплекса.

      Для начала выполните, как root ethtool eth0 , и Вы увидите строчки "Speed:" и "Duplex:", если нет то ethtool возможно не поддерживает Ваше устройство.

      Попробуйте выполнить как root mii-tool -v eth0 и убедиться, что вывод выглядит правильно. Если нет, то mii-tool не поддерживает ваше устройство

      Если ни одна из них не поддерживается, то Вы можете попробовать установить параметры напрямую в модуле драйвера ядра. Определить какой драйвер у Вас используется можно из вывода команд dmesg и lsmod . Вы можете попробовать выполнить modinfo MODULENAME что бы узнать возможные параметры. (можно использовать modinfo даже если модуль не загружен) ToDo : where does one set kernel module parameters?

  • Дальше, попробуйте изменить настройки используемого интерфейса. Вам необходимо быть root:

      ethtool -s eth0 autoneg off speed 100 duplex full (задаёт 100 Mbps и full duplex)

      mii-tool -F 100baseTx-FD eth0 (same assumption)

В каждом случае, перепроверьте применились ли настройки которые Вы изменили, затем попробуйте отправить какие-нибудь данные из системы, чтобы убедиться что NIC работает правильно.

    Если одна из этих команд успешно настроила Вашу сетевую карту, можно добавить эти параметры в /etc/network/interfaces чтобы они применялись во время загрузки при поднятии интерфейса. Однако, перед этим Вам следует понять что некоторые драйвера отличаются от других. Когда модуль драйвера загружен, сетевая карта может начать автосогласование, без какого либо способа остановить его (особенно с драйверами которые не принимают параметры). Параметры из файла interfaces могут применяются в момент, когда автосогласование уже наполовину выполнено. Что бы избежать этого можно добавить задержку выполнения команд ethtool и mii-tool . Например:

iface eth0 inet static address ... netmask ... gateway ... up sleep 5; ethtool -s eth0 ...

    Или аналоги команды mii-tool .

  • Перезагрузите компьютер чтобы убедится что всё работает правильно, и приготовитесь вмешаться (Ctrl-Alt-Del и затем загрузиться в однопользовательском режиме через LILO или GRUB) если что-то не работает.

Переключение интерфейса в режим моста без IP адреса

Чтобы создать сетевой интерфейс без IP адреса используйте ручной метод и команды pre-up и post-down

iface eth0 inet manual pre-up ifconfig $IFACE up post-down ifconfig $IFACE down

Задание серверов имён (DNS)

Перед тем как компьютер сможет подключится внешнему сетевому ресурсу (например веб-серверу), он должен преобразовать буквенное-цифровое имя (такое как сайт) в числовой адрес сети (например 140.211.166.4). (В Интернет идентификации компьютера в сети используется структурированный числовой IP адрес.)

Библиотека C и другие библиотеки за списком серверов имён обращаются к файлу /etc/resolv.conf . В простейшем случае Вы можете отредактировать этот файл, записав в него список серверов имён. Но, следует отметить, что различные программы динамической конфигурации будут рады переписать ваши настройки:

    Программа resolvconf

    Демон network-manager

  1. DHCP клиенты

В большинстве ситуаций необходимо отредактировать файлы конфигураций этих программ.

В более сложных ситуациях, более правильным будет использование программы resolvconf , но для простых конфигураций она избыточена.

Конфигурационный файл resolv.conf

Конфигурационный файл resolv.conf располагается в /etc/resolv.conf , и содержит информацию которая позволяет компьютеру подсоединяться к сети преобразовывать имя в адрес. (Прим. Не путайте этот конфигурационный файл с программой resolvconf , которая по неудачному стечению обстоятельств имеет такое же название.)

Файл resolv.conf обычно содержит IP адреса серверов имён (DNS) которые будут пытаться перевести имена в адрес для любого узла доступного в сети. Там будут строчки содержащие, примерно, следующие:

nameserver 12.34.56.78 nameserver 12.34.56.79

В этом примере, система исопользует сервера имён с IP адресами 12.34.56.78 и 12.34.56.79 . Просто отредактируйте этот файл и введите IP адреса нужных Вам серверов, после слова nameserver . Можно добавить ещё строчки, если у Вас больше 2 серверов имён.

Не используйте этот метод если у Вас установлена программа resolvconf

Конфигурационный файл resolv.conf имеет множество других опций для определения режимов преобразования имён. См. man resolv.conf .

Программа resolvconf

Программа resolvconf следит за информацией о доступных на данных момент серверов имён. Не следует путать её с одноимённым конфигурационным файлом resolv.conf . Программа resolvconf является опциональной для систем Debian.

Конфигурационный файл resolv.conf содержит информацию о серверах имён, которые используются в системы. Однако, когда множеству программ необходимо динамически изменять файл resolv.conf они начинают мешать друг другу и файл становиться не синхронизируемым (out-of-sync). Программа resolvconf решает эту проблему. Она является посредником между программами которые поставляют информацию о серверах имён (например dhcp клиент) и программами которые используют эту информацию (например резолвер).

Если resolvconf правильно установлена, конфигурационный файл resolv.conf заменяется символьной ссылкой на файл /etc/resolvconf/run/resolv.conf и резолвер использует файл, который динамически генерируется программой resolvconf .

Программа resolvconf , в общем случае, необходима когда в системе присутствуют программы которым необходимо часто изменять информацию о серверах имён. В простых системах где нет таких программ, достаточно просто файла resolv.conf .

Если программа resolvconf установлена, то Вам не следует вручную редактировать файл resolv.conf , так как он будет динамически меняться программами в системе. Если Вам необходимо вручную задать сервера имён (например при статически сконфигурированном интерфейсе), добавьте в конфигурационный файл interfaces следующую строчку:

dns-nameservers 12.34.56.78 12.34.56.79

Разместите эту строчку в описании интерфейса iface , сразу после указания шлюза gateway . IP адрес сервера имёны необхожимо ввести после слова dns-nameservers . Если IP адресов несколько то они разделяются пробелом. Не забудьте написать " s " в конце слова dns-nameservers .

Программа resolvconf была добавлена в Debian сравнительно недавно и многие старые программы необходимо обновить и переконфигурировать для правильно работы. Если у Вас возникли проблемы, смотрите файл /usr/share/doc/resolvconf/README . Он содержит полную информацию по работе resolvconf с другими программами.

Конфигурирование DNS для network-manager

Предупреждение: Этот раздел не был протестирован с актуальной версией network-manager. Пожалуйста протестируйте и удалите это сообщение. Примечание: В этом разделе описаны примеры применяемые в системах подобных Red Hat, а не Debian.

Если Вы используете NetworkManager , настройки располагаются в файле /etc/sysconfig/network-scripts/ifcfg-* . Например так:

DNS1=127.0.0.1 DNS2=8.8.8.8 DNS3=8.8.4.4

Через графический интерфейс это можно сделать так:

    Systems menu > Preferences > Network Connections.

  1. Выберете соединение (на вкладке Wired(проводное) или Wireless(беспроводное)) и нажмите Edit.
  2. На вкладке IPv4 Settings измените метод получения адреса “Automatic (DHCP)” на какой-нибудь другой. Например, “Automatic (DHCP) addresses only” is likely to be appropriate.
  3. Введите через пробел адреса DNS серверов в поле “DNS servers”.
  4. Нажмите “Apply.” Примечание, Ваш DHCP клиент может отменить эти настройки;

    Этот раздел основан на http://code.google.com/speed/public-dns/docs/using.html , где Вы можете найти более детальное описание.

DHCP Client Configuration

Example: dhclient3 uses /etc/dhcp/dhclient.conf . The setting you want is

supersede domain-name-servers 12.34.56.78, 12.34.56.79 prepend domain-name-servers 12.34.56.78, 12.34.56.79

See the dhclient.conf(5) manual page for details.

Howto use vlan (dot1q, 802.1q, trunk) (Etch, Lenny)

Manual config

modprobe 8021q apt-get install vlan vconfig add eth0 222 # 222 is vlan number ifconfig eth0.222 up ifconfig eth0.222 mtu 1496 #optional if your network card doesn"t support MTU 1504B ifconfig eth0.222 10.10.10.1 netmask 255.255.255.0

Caveats when using bridging and vlan

#/etc/network/interfaces auto eth0 bri0 iface eth0 inet static address 192.168.1.1 netmask 255.255.255.0 network 192.168.1.0 broadcast 192.168.1.255 iface eth0.110 inet manual vlan-raw-device eth0 iface bri0 inet static address 192.168.110.1 network 192.168.110.0 netmask 255.255.255.0 broadcast 192.168.110.255 bridge_ports eth0.110 bridge_stp on bridge_maxwait 10

If you are using a brigded VLAN setup, which is probably useful for networking in virtualization environments, take care to only attach either a bridge device or VLAN devices to an underlying physical device - like shown above. Attaching the physical interface (eth0) to a bridge (eg. bri1) while using the same physical interface on apparently different VLANs will result in all packets to remain tagged. (Kernel newer than 2.6.37 and older than 3.2).

Network init script config

Into /etc/modules add line:

8021q

In /etc/network/interfaces to section iface add parameter:

vlan-raw-device eth0

The interface name should be the raw interface name (the same as specified by vlan-raw-device), then a dot, then the VLAN ID, for example eth0.100. It can instead be "vlan" then the VLAN ID, for example vlan100. In either case, the VLAN ID is on the end, and this is the only place that it is configured. Eg:

auto eth0.222 iface eth0.222 inet static address 10.10.10.1 netmask 255.255.255.0 network 10.10.10.0 broadcast 10.10.10.255 vlan-raw-device eth0

Howto create fault tolerant bonding with vlan (Etch)

debian_bonding.dia

Howto configure one of the above server active backup bonding 3 vlan {vlan10,vlan20,vlan30} Debian networking without SPOF without native vlan.

aptitude install vlan ifenslave-2.6

Network config

Cisco switch interface example config

interface GigabitEthernet1/2 description eth1 switchport switchport trunk encapsulation dot1q switchport trunk allowed vlan 10,20,30 switchport mode trunk no ip address no cdp enable spanning-tree portfast trunk

bonding with active backup

Create a file /etc/modprobe.d/bonding.conf containing:

alias bond0 bonding options bonding mode=active-backup miimon=100 downdelay=200 updelay=200 primary=eth1

/etc/network/interfaces

# The loopback network interface auto lo iface lo inet loopback # The primary network interface auto bond0 iface bond0 inet manual up ifconfig bond0 0.0.0.0 up slaves eth1 eth0 auto vlan10 iface vlan10 inet static address 10.10.10.12 netmask 255.255.0.0 network 10.10.0.0 broadcast 10.10.255.255 vlan-raw-device bond0 gateway 10.10.0.1 dns-search hup.hu dns-nameservers 10.10.0.2 auto vlan20 iface vlan20 inet static address 10.20.10.12 netmask 255.255.0.0 network 10.20.0.0 broadcast 10.20.255.255 vlan-raw-device bond0 auto vlan30 iface vlan30 inet static address 10.30.10.12 netmask 255.255.0.0 network 10.30.0.0 broadcast 10.30.255.255 vlan-raw-device bond0

Multiple IP addresses on One Interface

Interface aliasing allows one interface to have multiple IP addresses. This is useful when more than one server is to be visible via the Internet. Note that virtual hosts can support multiple Apache servers with a single IP address. Apache responds to the domain name supplied by the client in the HTTP header. In many other situations, one external IP is needed for each server using a port.

auto eth0 allow-hotplug eth0 iface eth0 inet static address 192.168.1.42 netmask 255.255.255.0 gateway 192.168.1.1 auto eth0:0 allow-hotplug eth0:0 iface eth0:0 inet static address 192.168.1.43 netmask 255.255.255.0 auto eth0:1 allow-hotplug eth0:1 iface eth0:1 inet static address 192.168.1.44 netmask 255.255.255.0

An alias interface should not have "gateway" or "dns-nameservers"; dynamic IP assignment is permissible.

The above configuration is the previous traditional method that reflects the traditional use of ifconfig to configure network devices. ifconfig has introduced the concept of aliased or virtual interfaces. Those types of virtual interfaces have names of the form interface:integer and ifconfig treats them very similarly to real interfaces.

Nowadays ifupdown uses ip utility from the iproute2 package instead of ifconfig . The newer ip utility does not use the same concept of aliases or virtual interfaces. However, it supports assigning arbitrary names to the interfaces (they"re called labels). ifupdown uses this feature to support aliased interfaces while using ip .

Also, ifupdown supports specifying multiple interfaces by repeating iface sections with the same interface name. The key difference from the method described above is that all such sections are treated by ifupdown as just one interface, so user can"t add or remove them individually. However, up /down commands, as well as scripts, are called for every section as it used to be.

This /etc/network/interfaces text assigns three IP addresses to eth0.

auto eth0 allow-hotplug eth0 iface eth0 inet static address 192.168.1.42 netmask 255.255.255.0 gateway 192.168.1.1 iface eth0 inet static address 192.168.1.43 netmask 255.255.255.0 iface eth0 inet static address 192.168.1.44 netmask 255.255.255.0

Я, наконец, мигрировал до 12.04 с 7.10. У меня есть одна последняя часть, но я в тупике. Я использую Puppet на каждом сервере, и в прошлом я включил адрес сервера имен и доменное имя для кукловода в .

Search puppetmaster.com nameserver 192.168.1.XXX

В 12.04 resolv.conf перезаписывается при перезагрузке. Я не могу использовать для них статический IP-адрес, поэтому использование / etc / network / interfaces, чтобы помочь мне, является нулевой точкой.

# 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

Есть ли способ заставить resolvconf обрабатывать это либо в голове, хвосте или базе? Если есть, есть ли какие-либо примеры, которые я могу использовать для настройки на моем сервере.

Буду признателен за любую оказанную помощь.

Вероятно, лучше, чтобы ваш DNS-сервер смог разрешить «марионетку» на правильный адрес, а также для того, чтобы ваш DHCP-сервер раздавал адрес DNS-сервера DNS и список поиска или (если у вас есть статические IP-адреса), чтобы иметь что-то вроде в / etc / network / interfaces.

Iface eth0 inet static address 192.168.3.3 netmask 255.255.255.0 gateway 192.168.3.1 dns-search example.com dns-nameservers 192.168.3.45 192.168.8.10

Но если вы захотите сделать это через конфигурационные файлы resolvconf, вы захотите отредактировать файл /etc/resolvconf/resolv.conf.d/base . В этом файле введите свою информацию, как в файле resolv.conf .

Nameserver 192.168.1.XXX

Затем скажите resolvconf для восстановления resolv.conf .

Sudo resolvconf -u

Я думаю, что ответ проверяет ваш /etc/dhcp/dhclient.conf , т. /etc/dhcp/dhclient.conf Не запрашивает dns-nameservers из вашего клиента dhcp .

Затем обновите /etc/network/interfaces

Auto eth0 iface eth0 inet dhcp dns-search google.com dns-nameservers dnsserverip

Затем ваш resolv.conf будет автоматически настроен так, как вы хотите.

Добавьте в dns-search а затем запустите /etc/init.d/networking restart (даже если этот скрипт устарел, он все еще работает).

Вероятно, это связано с настройкой DHCP, когда вы впервые установили Ubuntu. Попробуйте выполнить этот трехэтапный процесс для решения этой проблемы с автоматической настройкой.

Первый

Измените конфигурацию вашего интерфейса, которая находится в: /etc/network/interfaces

Добавьте эту строку ниже iface lo inet loopback:

Dns-nameservers yourdns youraltdns

В качестве примера для Google DNS вы можете использовать это:

Dns-nameservers 8.8.8.8 8.8.4.4

второй

Измените файл конфигурации DHCP, расположенный по адресу:

/etc/dhcp/dhclient.conf

Отметьте синтаксис как комментарий, используя # в каждой строке, или просто удалите каждый сервер имен запросов. В 16.04 вам могут не потребоваться внести какие-либо изменения здесь.

В третьих

Перезагрузите сеть, используя следующую команду:

/etc/init.d/networking restart

Sudo ifdown -a sudo ifup -a

Посмотрите resolvconf страницу resolvconf . Вы можете принудительно включить определенные настройки DNS, создав, например, /etc/resolvconf/resolv.conf.d/base:

/etc/resolvconf/resolv.conf.d/base File containing basic resolver information. The lines in this file are included in the resolver configuration file even when no interfaces are configured.

Существуют и другие специальные файлы (голова и хвост), они могут помочь вам достичь того, чего вы хотите.

Для меня вышеупомянутые ответы были неадекватными по следующим причинам:

  • Я не использую resolvconf , просто resolvconf /etc/resolv.conf .
  • Использование chattr +i для блокировки resolv.conf кажется слишком взломанным. Мне нужно, чтобы Puppet был свободен вносить изменения, когда это необходимо.
  • AFAIK, редактирование /etc/network/interfaces не препятствует перезаписи resolv.conf ; он просто указывает серверы имен, которые должны быть написаны. Для меня указание серверов имен не было решающим. Я пытаюсь установить options timeout:1 и options attempts:1 в моем файле resolv.conf .

Лучшее решение, которое я нашел, переопределяет поведение dhclient по умолчанию, используя его задокументированные перехватчики.

Создайте новый файл в /etc/dhcp/dhclient-enter-hooks.d/nodnsupdate со следующим содержимым:

#!/bin/sh make_resolv_conf() { : }

Затем сделайте исполняемый файл:

Chmod +x /etc/dhcp/dhclient-enter-hooks.d/nodnsupdate

Теперь, когда dhclient запускается – либо при перезагрузке, либо при ручном запуске sudo ifdown -a ; sudo ifup -a sudo ifdown -a ; sudo ifup -a – он загружает этот скрипт nodnsupdate . Этот скрипт переопределяет внутреннюю функцию, называемую make_resolv_conf() , которая обычно перезаписывает resolv.conf и вместо этого ничего не делает.

Это сработало для меня на Ubuntu 12.04.

добавьте ваш сервер имен в файл /etc/resolvconf/resolv.conf.d/head. Файл содержит сообщение, которое вы получили:

этот файл должен выглядеть следующим образом после добавления 8.8.8.8

Root@hvnatvcc: ~ # cat /etc/resolvconf/resolv.conf.d/head # 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.8.8

Это может быть какой-то странной причудой на моей машине, но у кого-то может быть один и тот же угловой случай.

Я пробовал множество способов, чтобы мои серверы имен ISP, включенные в /etc/resolv.conf, не имели успеха:

    Я включил их в /etc/network/interfaces и перезапустил сеть. Они не отображались в /etc/resolv.conf .

    Я помещал их в /etc/resolv.conf явно, но, конечно, они были перезаписаны. Они появились в /run/resolvconf/interface/eth0.inet , но никогда не /run/resolvconf/interface/eth0.inet в /etc/resolv.conf .

    Я попытался настроить resolvconf для динамических обновлений. Без изменений.

Наконец, я где-то читал, что если локальная машина (127.0.0.1) появляется в /etc/resolv.conf любые другие серверы имен не включаются.

В отчаянии я отредактировал /run/resolvconf/interface/lo.named , удалил единственную строку в нем (nameserver 127.0.0.1) и перезапустил: ifdown eth0 && ifup eth0 .

/etc/resolv.conf затем включил мой сервер имен ISP в первый раз! Я запустил service network-manager restart чтобы убедиться, что он стабилен, и /etc/resolv.conf прежнему включает в себя мои серверы имен ISP. Перезагрузился, чтобы убедиться, и он все еще там, но /run/resolvconf/interface/lo.named получил сброс: nameserver 127.0.0.1 .

Любопытно перезагрузка сети все еще работает: /etc/resolv.conf прежнему содержит мои серверы имен ISP. Я не могу объяснить это (может кто-то?), Но это может помочь кому-то застрять в том же месте.

Другие решения не работали для меня в моей системе Fedora 20. Моя особая проблема заключалась в том, что строка «поиск» в файле /etc/resolv.conf была перезаписана. Вот что исправлено. (Предполагается, что NetworkManager производит search rn.yourcompany.com по строке search rn.yourcompany.com и вы хотите, чтобы это был search rn.yourcompany.com yourcompany.com intnet.yourcompany.com:

1.Используйте команду ifconfig, чтобы узнать, какой интерфейс представляет интерес:

$ ifconfig: : em2:

2. Запустите root и перейдите в каталог сетевых устройств конфигурации системы:

$ sudo su - password for youruser: # cd /etc/sysconfig/networking/devices`

  1. Используйте свой любимый доступный редактор, чтобы добавить строку Domain с дополнительными доменами для поиска:

DOMAIN="yourcompany.com intnet.yourcompany.com"

Search rn.yourcompany.com yourcompany.com intnet.yourcompany.com

Как и многие другие ответы, это связано с установкой resolvconf в вашей системе.

/etc/resolvconf/resolv.conf.d/

Там идет файл заголовка. Все, что вы там разместите, будет написано в верхней части /etc/resolv.conf

Итак, все будет идти примерно так:

# echo nameserver 8.8.8.8 >> /etc/resolvconf/resolv.conf.d/head # resolvconf --enable-updates # resolvconf -u

добавьте в последнюю строку, например:

Nameserver 8.8.8.8

Откройте терминал и введите

Sudo chattr +i /etc/resolv.conf

I заботится о том, чтобы файл не был перезагружен при загрузке.

Чтобы отменить вышеуказанное

Sudo chattr -i /etc/resolv.conf

Для большего

Если вы используете DHCP, отредактируйте /etc/dhcp/dhclient.conf чтобы добавить дополнительные DNS-серверы:

Prepend domain-name-servers 12.34.56.78, 12.34.56.79;

Клиент DHCP перезаписывает dns-nameservers в etc/network/interfaces и я думаю, что в /etc/resolvconf/resolv.conf.d/base тоже.

Это работало для меня на сервере Ubuntu 14.04.3.

Подробнее см. В Вики- версии NetworkConfiguration Debian .

Добавить записи в /etc/resolvconf/resolv.conf.d/head

Sudo echo "search puppetmaster.com" >> /etc/resolvconf/resolv.conf.d/head sudo echo "nameserver 192.168.1.XXX" >> /etc/resolvconf/resolv.conf.d/head

и выполните следующую команду

Sudo resolvconf -u

Я нашел это простейшим решением. Если у вас есть файлы resolv.conf и resolvconf, они будут наступать друг на друга. Вам нужно удалить файл resolv.conf, который получает перезапись при каждом перезагрузке. Поместите сервер имен 8.8.8.8 8.8.4.4 внизу файла resolvconf, а затем запустите команду sudo rm /etc/resolv.conf чтобы избавиться от файла. Затем выполните перезагрузку, и все будет работать.

Просто поставьте

Dns-search google.com && dns-nameservers (sample: 8.8.8.8)

команды в конфигурации /etc/network/interfaces . затем перезапустите сеть.

он должен работать.

Эта конфигурация объявлена ​​в /etc/default/bind9

RESOLVCONF=no|yes

no = не применять условие в init.d bind9

да или другое значение = переопределить resolv.conf

Эта проблема возникает, когда вы устанавливаете bind9 и не заботитесь о проверке всех confs.

Английский перевод:

Я решил. «всего 12,4»

Я заметил, что если вы добавите сервер DNS-имен в интерфейсы, которые не берут сервер разрешения имен. Благодаря найденной здесь помощи решена проблема.

Чтобы resolv.conf не изменился, когда мы вручную отредактируем это в терминале:

Sudo resolvconf -a eth0 # or your network Interfas

затем вручную отредактируйте /run/resolvconf/resolv.conf

добавив максимум два DNS-сервера. спасибо PS не забудьте перезапустить:

Sudo /etc/init.d/networking restart

Оригинальный текст:

соло ubuntu 12.4

Он visto que si agregas los dns-nameserver en interface esta no toma los server de resolucion de nombres

Gracias a la ayuda encontrada en esta pagina он resuelto el problema.

Para hacer que resolv.conf no cambie cuando la editamos manualmente hacemos esto en la terminal:

Sudo resolvconf –disable-updates

Sudo resolvconf -a eth0 # o tu interfas de red

luego editamos manualmente /run/resolvconf/resolv.conf

agregando un maximo de 2 DNS-сервера. saludos PD no olvidar reiniciar:

Sudo /etc/init.d/networking restart

Abstract: описание того, как обновляется файл /etc/resolv.conf в условиях работающего dhcp-клиента, специфика различных ОС и варианты реализации.

Охват: Debian, Ubuntu, Centos/Fedora/RHEL; dhclient с resolvconf и без. NetworkManager не учитывается.

Лирика: Я только что потратил несколько дней (подробности на английском , ) разбираясь как правильно сохранять "options rotate" в /etc/resolv.conf в разных дистрибутивах при работающим DHCP. Оказалось, внятной документации по этому вопросу нет, и информацию пришлось собирать из разных источников, исходных текстов и экспериментальных данных. Дальше будет сухо и по делу.

О чём речь?

У компьютера сетевой интерфейс принципиально может быть сконфигурирован тремя видами: вручную/специализированным софтом, статически заданными настройками и через DHCP-клиент. (Есть ещё сколько-то экзотики, но эти три - основные методы). Первый метод нам не интересен, со статической конфигурацией всё просто - как написано, так и будет. DHCP интересен тем, что компьютер запрашивает настройки по сети «у кого-то». Протокол DCHP имеет множество опций (настроек), которые могут изменять совершенно неожиданные настройки компьютера - часовой пояс, адрес сервера с точным временем, таблицу маршрутизации, имя или домен сервера, и т.д. Из всего этого нас интересует возможность задавать настройки DNS.

Традиционно, настройки DNS-ресолвера хранятся в файле /etc/resolv.conf, и после обновления dhcp-аренды этот файл обновляется. В этой статье объясняется, как именно "-ся" этот файл.

Устройство DHCP client

Существует несколько реализаций dhcp-клиента, нас интересует ISC DHCP, как наиболее распространённая.
Сам клиент называется /sbin/dhclient, однако, стандартно, для обновления настроек, вызывается не он, а /sbin/dhclient-script. dhclient-script вызывает dhclient и использует его ответ для изменения разных частей системы. В самом dhclient-script есть функция make_resolv_conf, которая, собственно, и создаёт файл resolv.conf.

Для удобства модификации (и запутывания системных администраторов) у dhclient-script"а есть хуки. Их положение разнится (в Ubuntu Xenial и Debian Stretch это /etc/dhcp/dhclient-exit-hooks.d, для какой-то версии Centos - /etc/dhclient-enter-hooks/ и т.д.). Хуки есть двух видов - entry и exit. Entry вызываются до основного когда dhclient-script, exit в конце. В хуках можно прописать свою версию функции make_resolv_conf(), и тогда dhclient-script будет вызывать её, а не встроенную. Что именно происходит с арендой определяет переменная reason (примеры значений: PREINIT, BOUND, RENEW, REBIND, REBOOT, EXPIRE, FAIL, RELEASE, etc). Спасибо maxzhurkin за указания на (исправленные) неточности в этом разделе.

resolvconf

Этим активно пользуются авторы пакета resolvconf, который позволяет формировать файл /etc/resolv.conf по заданному шаблону (а не фиксированно, как в случае родной реализации dhclient-script). Они кладут файл (в Debian/Ubuntu) /etc/dhcp/dhclient-enter-hooks.d/resolvconf, который вызывает resolvconf -u (обновление) для создания новой версии resolvconf"а.

Чтобы не мешать жить dhcpclient-script, resolvconf управляет файлом /run/resolvconf/resolv.conf, а пакет resolvconf (не путать с программой, которую он предоставляет) при установке заменяет /etc/resolvconf на симлинк../run/resolvconf/resolv.conf.

Типовой проблемой при использовании resolvconf"а является отсутствие симлинка. Если его нет, то dhclient-script будет просто перезаписывать /etc/resolv.conf с настройками от DHCP-сервера, а resolvconf будет обновлять свой файл в уголочке, лишь выдавая предупреждение, что /etc/resolv.conf не симлинк.

Шаблоны resolvconf"а довольно просты:

  • /etc/resolvconf/resolv.conf.d/head
  • /etc/resolvconf/resolv.conf.d/base
  • /etc/resolvconf/resolv.conf.d/tail
head и tail просто дописываются куда положено, а вот base позволяет всякие странные штуки, которые описываются в man resolvconf в разделе «CONSUMERS OF NAMESERVER INFORMATION»).

Специфика RHEL/Centos/Fedora

Red Hat использует свою версию скрипта dhclient-script, весьма обширную и сложную, учитывающую множество настроек из ifcfg-ethXXX, в частности, интересовавшую меня опцию RES_OPTIONS. Debian и Ubuntu используют большей частью апстримовую версию, в которой такие изыски отсутствуют. В Centos 7 одно время в этом скрипте был баг, приводивший к тому, что при наличии строчки "options" в /etc/resolv.conf при перезагрузке, из него удалялись все остальные строчки, кроме строчки с options, причём новые DNS-сервера в файл не добавлялись.

Сервера DNS используются системой для преобразования сложных для запоминания IP адресов в простые доменные имена. Это делается потому что людям сложно запоминать несколько никак не связанных цифр, но очень просто запомнить слово.

Когда компьютеру нужно узнать IP адрес какого-либо домена, он отправляет запрос известному ему DNS серверу. Эти сервера могут быть получены автоматически от роутера по DHCP или же заданы в ручную. В этой статье мы рассмотрим как выполняется настройка DNS Ubuntu 16.04 и более старых версиях.

Раньше, для настройки DNS серверов, которые будут использоваться системой было достаточно внести адреса нужных серверов в файл /etc/resolv.conf. Но сейчас всей конфигурацией сети в Ubuntu управляет NetworkManager, а этот файл теперь представляет собой только ссылку на файл NetworkManager.

Этот способ до сих пор работает, но в нем вы можете настроить DNS на LiveCD, или до перезагрузки. После перезагрузки все настройки собьются и придется все делать заново. Поэтому, чтобы все сохранилось нужно выполнять все действия через интерфейс NetworkManager. Сначала откройте контекстное меню для значка сети на панели и выберите "Изменить подключения" :

Выберите ваше подключение и нажмите "Изменить" :

В открывшемся окне перейдите на вкладку "Параметры IPv4" :

Затем, в поле "Способ настройки" выберите "Автоматически (DHCP, только адрес)" :

Теперь немного ниже появиться поле "Серверы DNS" , где вам нужно прописать нужные серверы, можно несколько адресов через запятую. Например, можно указать сервера от Google:

Собственно, это все, но есть еще один способ настройки через консоль, если этот не сработал или вы предпочитаете работать из консоли.

Настройка DNS через терминал Ubuntu

В Ubuntu есть унифицированный интерфейс настройки сети, который настраивается через конфигурационный файл /etc/network/interfaces. Сначала смотрим список сетевых интерфейсов:

ls /sys/class/net/

Откройте файл для редактирования и найдите в нем имя своего сетевого интерфейса, например, auto enp0s3, если такой секции нет, ее нужно добавить:

sudo vi /etc/network/interfaces

auto enp0s3
iface enp0s3 inet dhcp

Затем, добавьте в эту секцию строчку:

dns-nameserver 8.8.8.8

Здесь адрес 8.8.8.8 - это адрес вашего DNS сервера. Но эта настройка сработает, только если ваш DHCP клиент не пытается назначить адрес самостоятельно. Чтобы указать DNS адрес на уровне DHCP сервера нужно добавить такую строчку в конфигурационный файл /etc/dhcp/dhclient.conf:

sudo vi /etc/dhcp/dhclient.conf

supersede domain-name-servers 8.8.8.8

Здесь тоже адрес 8.8.8.8 означает адрес DNS сервера. Для верности, вы можете добавить свои адреса DNS серверов в файл /etc/resolvconf/resolv.conf.d/base:

sudo vi /etc/resolvconf/resolv.conf.d/base

nameserver 8.8.8.8

Чтобы настройки вступили в силу необходимо перезапустить сеть:

sudo systemctl restart networking

Возможно, даже лучше будет если вы полностью перезагрузите компьютер. Теперь вы можете открыть /etc/resolv.conf и посмотреть применялся ли новый адрес DNS:

Как видите, в моем примере все заработало. Подобно этому выполняется настройка dns linux для любого дистрибутива.

Выводы

В этой небольшой статье мы рассмотрели как выполняется настройка DNS Ubuntu 16.04 через графический интерфейс или терминал. В Ubuntu автоматической настройкой DNS могут заниматься множество утилит и это создает некоторые проблемы при настройке, но со всем можно разобраться. Надеюсь, эта информация была полезной для вас.

Об авторе

Основатель и администратор сайта сайт, увлекаюсь открытым программным обеспечением и операционной системой Linux. В качестве основной ОС сейчас использую Ubuntu. Кроме Linux интересуюсь всем, что связано с информационными технологиями и современной наукой.



Есть вопросы?

Сообщить об опечатке

Текст, который будет отправлен нашим редакторам: