Как включить строки в resolv.conf, которые не будут потеряны при перезагрузке?
Я наконец-то перешел на 12.04 с 7.10. У меня есть одна последняя часть для завершения, но я в тупике. Я использую Puppet на каждом сервере, и в прошлом я включал адрес сервера имен и имя поискового домена для puppetmaster в 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 для обработки этого в голове, хвосте или основании? Если есть, есть ли примеры, которые я могу использовать для настройки на моем сервере.
Буду признателен за любую оказанную помощь.
21 ответ
Вероятно, лучше, чтобы ваш DNS-сервер мог разрешить "марионетку" по правильному адресу, либо чтобы ваш DHCP-сервер раздавал адрес 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
не запрашивать 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
Отметьте синтаксис как комментарий, используя #
на каждой строке или просто удалите каждый запрос name-server. В 16.04 от вас может не потребоваться вносить какие-либо изменения здесь.
В третьих
Перезагрузите сеть с помощью этой команды:
/etc/init.d/networking restart
В 16.04:
sudo ifdown -a
sudo ifup -a
Как и во многих других ответах, это связано с 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
Пожалуйста, посмотрите на 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
просто/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.
Это может быть какой-то странной причудой в моей машине, но у кого-то еще может быть такой же угловой случай.
Я пробовал многочисленные способы включения моих имен серверов 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 серверов имен. Я не могу объяснить это (может кто-то?), Но это может помочь кому-то застрять в одном месте.
Добавить записи в /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
Это работает для меня Ubuntu 19.04.
1 - установить resolvconf
$ sudo apt install resolvconf
2- добавление серверов имен
Откройте /etc/resolvconf/resolv.conf.d/base в текстовом редакторе, я использую vim.
$ sudo vim /etc/resolvconf/resolv.conf.d/base
затем добавьте серверы имен в открытый файл
напр.:
nameserver 208.67.222.123
nameserver 208.67.220.123
3 - обновление resolv.conf
$ sudo resolvconf -u
4 Отключить systemd-resolved
Отключить systemd-resolved и перезагрузиться. nameserver 127.0.0.53 не записывается в /etc/resolv.conf.
$ sudo systemctl отключить systemd-resolved
$ sudo reboot
Готово!
Рекомендации
https://www.hiroom2.com/2017/08/24/ubuntu-1610-nameserver-127-0-0-53-en/
Добавить в последнюю строку, например:
nameserver 8.8.8.8
Откройте терминал и введите
sudo chattr +i /etc/resolv.conf
+ я позаботился о том, чтобы файл не перезагружался при загрузке.
Отменить вышеуказанное
sudo chattr -i /etc/resolv.conf
Для большего
man chattr
Добавьте свой сервер имен в файл /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
Другие решения не работали для меня в моей системе Fedora 20. Моя конкретная проблема заключалась в том, что строка "search" в /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. Войдите в систему и перейдите в каталог сетевых устройств конфигурации системы:
$ sudo su -[sudo]
password for youruser:
# cd /etc/sysconfig/networking/devices`
- Используйте ваш любимый доступный редактор, чтобы добавить
Domain
строка с дополнительными доменами для поиска:
DOMAIN="yourcompany.com intnet.yourcompany.com"
Сохраните, выйдите из системы и снова войдите в систему. Теперь в NetworkManager должна быть строка \etc\resolve.conf
:
search rn.yourcompany.com yourcompany.com intnet.yourcompany.com
Для Ubuntu Server 18 Netplan - новая утилита для настройки сети.
# cd /etc/netplan
Затем отредактируйте запись адресов серверов имен в файле yaml (используйте правильный отступ). Например, если вы используете DNS-серверы Google:
nameservers:
addresses: [8.8.8.8,8.8.4.4]
Перезапустить сервис
# netplan apply
Смотрите https://netplan.io/
https://www.techrepublic.com/article/how-to-set-dns-nameservers-in-ubuntu-server-18-04/
Другой способ - настроить resolvconf(8) на использование локального домена поиска и серверов имен, прежде чем запрашивать DHCP-домены поиска и серверы имен. Это достигается путем создания /etc/resolvconf.conf
(sudo nano /etc/resolvconf.conf
):
search_domains="nono.com"
name_servers="1.1.1.1 1.0.0.1"
Спасибо Брайану Кунни в главном блоге
ничего из вышеперечисленного не сработало для меня в Ubuntu 20.4 . В итоге я добавил следующую запись в свой корневой crontab
@reboot sleep 20 && /root/restoreDNS>/etc/restoreDNS.out 1>2&
в основном после 20 секунд загрузки; он выполняет сценарий оболочки, который копирует мою версию в /etc/resolv.conf, и это было хорошо для меня.
Английский перевод:
Мой решен. "только 12,4"
Я заметил, что если вы добавляете dns-nameserver в интерфейсы, которые не используют сервер разрешения имен, то благодаря помощи, найденной здесь, удалось решить проблему.
http://manpages.ubuntu.com/manpages/lucid/man8/resolvconf.8.html
Чтобы не допустить изменения resolv.conf при редактировании вручную, сделайте это в терминале:
sudo resolvconf –disable-updates
после:
sudo resolvconf -a eth0 # or your network Interfas
затем вручную отредактируйте /run/resolvconf/resolv.conf
добавление максимум двух DNS-серверов. спасибо PS не забудь перезагрузить
sudo /etc/init.d/networking restart
Первоначальный текст:
соло убунту 12.4
Ми решение.
Он имеет доступ к общему серверу имен и интерфейсов, не имея разрешения на получение разрешения.
Gracias a la ayuda encontrada en esta pagina он решает проблему.
http://manpages.ubuntu.com/manpages/lucid/man8/resolvconf.8.html
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 PD no olvidar reiniciar:
sudo /etc/init.d/networking restart
Просто сделайте резервную копию вашего resol.conf, удалите пакет resolvconf и отредактируйте файл /etc/resolv.conf так, как вам нужно.
apt-get remove -y resolvconf
echo 'nameserver 8.8.8.8' > /etc/resolv.conf
Мы должны иметь право не использовать плохое программное обеспечение, такое как resolvconf.
Кстати, поле поиска в /etc/resolv.conf бесполезно.
Я нашел это самое простое исправление. Если у вас есть файлы resolv.conf и resolvconf, они будут сталкиваться друг с другом. Вам необходимо удалить файл resolv.conf, который перезаписывается при каждой перезагрузке. Поместите сервер имен 8.8.8.8 8.8.4.4 внизу файла resolvconf и затем выполните командуsudo rm /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.
Смотрите подробности в https://wiki.debian.org/NetworkConfiguration.
Просто положить
dns-search google.com && dns-nameservers (sample: 8.8.8.8)
командовать на вашем /etc/network/interfaces
конфигурации. затем перезагрузите вашу сеть.
он должен работать.
Эта конфигурация объявлена в /etc/default/bind9
RESOLVCONF=no|yes
нет = не применять условие в init.d
bind9
да, или другое значение = переопределить resolv.conf
Эта проблема возникает при установке bind9
и не заботиться о проверке всех конфов.