Как включить строки в resolv.conf, которые не будут потеряны при перезагрузке?

148

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

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 обрабатывать это либо в голове, хвосте или базе? Если есть, есть ли какие-либо примеры, которые я могу использовать для настройки на моем сервере.

Любая помощь очень ценится.

    
задан Sam 28.06.2012 в 15:54
источник

16 ответов

120

Вероятно, лучше, чтобы ваш 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
    
ответ дан tgm4883 28.06.2012 в 17:35
32

Я думаю, что ответ проверяет ваш /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 (даже если этот скрипт устарел, он все еще работает).     

ответ дан Jamin 26.11.2012 в 02:58
18

Вероятно, это связано с настройкой 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

В 16.04:

sudo ifdown -a
sudo ifup -a
    
ответ дан astrajingga 20.06.2013 в 03:50
7

Посмотрите man-страницу 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.

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

    
ответ дан roadmr 04.09.2012 в 16:26
4

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

  • Я не использую 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 - он загружает этот скрипт nodnsupdate . Этот скрипт переопределяет внутреннюю функцию, называемую make_resolv_conf() , которая обычно перезаписывает resolv.conf и вместо этого ничего не делает.

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

    
ответ дан richardkmiller 05.03.2015 в 23:12
3

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

Таким образом, лучший способ сохранить что-то в resolv.conf , который не потеряется при перезагрузке, - это включить его в файлы конфигурации resolvconf, которые находятся в:

/etc/resolvconf/resolv.conf.d/

Вставьте файл head . Все, что вы положили, будет написано в верхней части /etc/resolv.conf

Итак, все будет выглядеть примерно так:

# echo nameserver 8.8.8.8 >> /etc/resolvconf/resolv.conf.d/head
# resolvconf --enable-updates
# resolvconf -u
    
ответ дан Juan Javier Triff Cabanas 17.10.2016 в 15:59
2

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

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

[email protected]: ~ # 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
    
ответ дан HVNSweeting 23.10.2012 в 12:43
2

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

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

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

  • Я помещал их в /etc/resolv.conf явно, но, конечно, они были перезаписаны. Они отображались в /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. Я не могу объяснить это (может кто-то?), Но это может помочь кому-то застрять в том же месте.

    
ответ дан user297954 26.06.2014 в 07:18
1

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

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

$ ifconfig
  :
  :

em2:  <this was the one which was connected>

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

$ sudo su -[sudo] 
password for youruser:
# cd /etc/sysconfig/networking/devices'
  1. Используйте свой любимый доступный редактор, чтобы добавить Domain с дополнительными доменами для поиска:

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

Сохраните, выйдите из системы и войдите в систему. Теперь NetworkManager должен иметь строку в \etc\resolve.conf :

search rn.yourcompany.com yourcompany.com intnet.yourcompany.com
    
ответ дан CBI 29.08.2014 в 16:54
0

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

nameserver 8.8.8.8

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

sudo chattr +i /etc/resolv.conf

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

Чтобы отменить приведенный выше

sudo chattr -i /etc/resolv.conf

Для более

man chattr
    
ответ дан tanmay.01 23.02.2013 в 18:42
0

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

Мое решение. "всего 12,4"

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

Ссылка

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

sudo resolvconf –disable-updates

после

sudo resolvconf -a eth0 # or your network Interfas

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

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

sudo /etc/init.d/networking restart

Исходный текст:

соло ubuntu 12.4

Mi solucion.

Он visto que si agregas los dns-nameserver en interfaces 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

Despues:

sudo resolvconf -a eth0 # o tu interfas de red

luego editamos manualmente /run/resolvconf/resolv.conf

agregando un maximo de 2 DNS-сервера. Saludos Полицейское управление no olvidar reiniciar:

sudo /etc/init.d/networking restart
    
ответ дан enlinea777 04.09.2012 в 16:16
0

Если вы используете 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 .

    
ответ дан Kevin S. Miller 14.10.2015 в 15:38
0

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

echo 'search puppetmaster.com' | sudo tee -a /etc/resolvconf/resolv.conf.d/head
echo 'nameserver 192.168.1.XXX' | sudo tee -a /etc/resolvconf/resolv.conf.d/head

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

sudo resolvconf -u
    
ответ дан siz 17.05.2016 в 15:22
0

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

    
ответ дан Irv 19.10.2016 в 14:09
-1

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

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

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

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

    
ответ дан tesar 06.02.2015 в 10:15
-2

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

RESOLVCONF=no|yes

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

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

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

    
ответ дан user147967 09.04.2013 в 11:40