Файл resolv conf перезаписывается после перезагрузки
Я наконец-то перешел на 12.04 с 7.10. У меня есть одна последняя часть для завершения, но я в тупике. Я использую Puppet на каждом сервере, и в прошлом я включал адрес сервера имен и имя поискового домена для puppetmaster в resolv.conf.
В 12.04 resolv.conf перезаписывается при перезагрузке. Я не могу использовать статический IP-адрес для них, поэтому использование /etc/network/interfaces для помощи мне не имеет смысла.
Есть ли способ получить resolvconf для обработки этого в голове, хвосте или основании? Если есть, есть ли примеры, которые я могу использовать для настройки на моем сервере.
Буду признателен за любую оказанную помощь.
Вероятно, лучше, чтобы ваш DNS-сервер мог разрешить "марионетку" по правильному адресу, либо чтобы ваш DHCP-сервер раздавал адрес DNS-сервера имен и список поиска, либо (если у вас есть статические IP-адреса) иметь что-то вроде следующее в /etc/network/interfaces.
Но если вы хотите сделать это через конфигурационные файлы resolvconf, вам нужно отредактировать /etc/resolvconf/resolv.conf.d/base , В этом файле введите ваши данные, как в resolv.conf ,
Затем скажите resolvconf для восстановления resolv.conf ,
Я думаю, что ответом является проверка вашего /etc/dhcp/dhclient.conf не запрашивать dns-nameservers от вашего клиента dhcp.
Затем обновите свой /etc/network/interfaces
Тогда ваш resolv.conf будет автоматически настроен так, как вы этого хотите.
Добавить к dns-search а затем запустить /etc/init.d/networking restart (хотя этот скрипт устарел, он все еще работает).
Вероятно, это вызвано настройкой DHCP при первой установке Ubuntu. Попробуйте этот трехэтапный процесс для решения этой проблемы автоматической конфигурации.
Первый
Отредактируйте конфигурацию вашего интерфейса, которая находится в: /etc/network/interfaces
Добавьте эту строку ниже iface lo inet loopback :
В качестве примера для Google DNS вы можете использовать это:
второй
Отредактируйте файл конфигурации DHCP, расположенный по адресу:
В третьих
Перезагрузите сеть с помощью этой команды:
Как и во многих других ответах, это связано с resolvconf устанавливается в вашей системе.
Так что лучший способ сохранить что-то в resolv.conf это не потеряется при перезагрузке, это включить его в файлы конфигурации resolvconf, которые находятся в:
Там идти на head файл. Все, что вы положите туда, будет написано наверху /etc/resolv.conf
Так что все пойдет примерно так:
Есть и другие специальные файлы (голова и хвост), они могут помочь вам достичь того, что вы хотите.
Для меня приведенные выше ответы были неадекватными по следующим причинам:
- Я не пользуюсь 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 со следующим содержанием:
Затем сделайте файл исполняемым:
Теперь при запуске 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 для динамических обновлений. Без изменений.
Я нуждаюсь в помощи, выясняя почему мой resolv.conf продолжает изменяться на это, заставляя меня не смочь получить доступ к внешнему Интернету и только локальной сети:
Я думал, что зафиксировал его путем избавления от петлевого интерфейса и добавления в интерфейсе eth0 в /etc/network/interfaces с инструкциями относительно блога posterous jontsai.
Я попробовал вещи как выполнение:
И затем вещи работали бы временно, и в конечном счете сервер имен в resolv.conf вернуться снова.
P.S. Я также отправил это на ubuntuforums.
Таким образом, я пробую это:
while true; do echo listening; lsof | grep /etc/resolv.conf; echo sleeping; sleep 1; done
Добавление вывода файлов:
Никакой такой файл как /etc/NetworkManager/NetworkManager.conf
Вы можете сделать статические дополнения к /etc/resolv.conf . Эти дополнения могут переопределять автоматически добавляемые вещи.
Сначала установите пакет resolvconf .
Затем нажмите Alt+F2 и запустите gksudo nautilus . Откройте /etc/resolvconf/resolv.conf.d/head , если хотите добавить в начало файла; откройте /etc/resolvconf/resolv.conf.d/tail , если хотите добавить в конец. Внесите изменения, сохраните/закройте файлы, а затем запустите sudo resolvconf -u , чтобы применить изменения.
(К сожалению, я не помню, имеют ли настройки в начале или в конце файла наивысший приоритет.)
(В этом ответе содержатся способы исследования происходящего. Я могу дать реальное решение, если вы используете эти методы для сбора и предоставления дополнительной информации.)
Возможным триггером для, казалось бы, спонтанных обновлений /etc/resolv.conf является момент, когда DHCP-аренда обновляется. Проверьте, на какой период времени вы получаете DHCP-аренду (это должно появиться в системных журналах, я думаю, в /var/log/syslog ).
Вы можете использовать auditd для того, чтобы узнать, что изменяет файл. Запустите демона ( sudo service auditd start ) и скажите ему, чтобы он следил за изменениями в этом файле:
Audit logs находятся в /var/log/audit/audit.log . Вы увидите время, когда файл был изменен, и имя программы, которая его модифицировала.
Если у вас установлен пакет resolvconf , Network Manager может наступать на ноги. Попробуйте выключить все сетевые интерфейсы, затем остановить сетевой менеджер ( sudo service network-manager stop ), затем перезапустить его.
Я отключаю обновление разрешения -to . conf , создав файл с именем disable_make_resolv_conf в /etc/dhcp3/dhclient-enter-hooks.d
Он заменяет стандартную функцию тем же именем, которое отвечает за обновление resolv.conf .
У меня была точно такая же проблема - resolv.conf переписывался каждый раз при перезагрузке сервера.
Это было вызвано DHCP. Чтобы установить resolv.conf таким, каким я хочу его видеть, я отредактировал /etc/dhcp/dhclient.conf и добавил следующее:
Фактически, вы можете немного контролировать свой файл resolv.conf. внесением изменений в это.
Надеюсь, это поможет.
ответ дан Peter Sankauskas 23 November 2019 в 00:53Откройте терминал и введите
+ i позаботится о том, чтобы файл не сбрасывался при загрузке даже с правами root.
Для отмены вышеуказанного
Другой вариант, который мне повезло, связан с использованием resolvconf .
Добавьте любые записи в этот файл:
И они будут добавлены в /etc/resolv.conf .
Поздно, но я опубликую свой случай, поскольку он отличался от всего вышеперечисленного.
В моем случае /etc/resolv.conf является символической ссылкой на /var/run/NetworkManager/resolv.conf и по какой-то причине cat / etc /resolv.conf выдает ошибку: нет такого файла или каталога (может быть, потому что он пуст?)
Если я открою его с помощью vi и добавлю сервер имен xxxx , он будет работать, но очищается при перезагрузке.
Я попытался отредактировать / etc / network / interfaces и добавить dns-nameservers xxxx , изменить /etc/dhcp/dhclient.conf и удалить в запрос серверы доменных имен , также отредактированный , добавление серверов доменных имен xxxx [1170 403].
Двоичный файл Resolvconf не установлен, NetworkManager.conf не содержит ничего важного. Но каждый раз, когда я перезагружал машину, сервер домена отсутствовал.
Я не уверен, в чем причина, но похоже, что это связано с тем, что это машина VBox, запущенная GNS3 и из-за этого внутри Настройка VBox, я должен оставить его без создания интерфейса. Очевидно, GNS3 создает «интерфейс UDP» на лету, когда я запускаю машину, при условии, что я запускаю его из GNS3.
Если вручную прописать nameserver 8.8.8.8 , то через пару минут он перетирается адресами провайдера. Пробовал в /etc/dhcp/dhclient.conf добавлять строчку:
затем dhclient -r , но файл так и остался с адресами провайдераподскажите куда капать дальше ?
Посмотри через какой-нибудь inotifywait, например.
dhcpcd5 установлен? в /etc/dhcpcd.conf добавь строку вида
dhcpcd5 - не установлен
результат dpkg -l | grep dhcp :
Спасибо, из результата inotifywait видно что правит, как я понял, dhclient. Осталось понять что и куда прописать, чтобы изменения либо не производились, либо заменялись на необходимые адреса.
ну так установи это ж мастхевная штуковина!
Говно без задач если для дома.
Последнее исправление: amd_amd 09.10.19 16:30:58 (всего исправлений: 1)
не могу найти что перезаписывает файл resolv.conf
Что же вам все неймется, зачем развивается линукс? Где этот файл вообще? Зачем он нужен? Как его открыть, он же без расширения.
Поставил линукс, так какого чёрта ты задаешь такие вопросы? Купи или скачай толстую книгу, читай ее вдумчиво.
Уточню, а пров раздает инет без всяких там ppp и тому подобное ?
Во-первых, ты наркоман, systemd-resolved в принципе _ничего_ не делает с /etc/resolv.conf. Во-вторых, у тебя проблемы с чтением — Что перезаписывает resolv.conf (комментарий)
Накапай себе man 5 interfaces.
Ради интереса на подопытном Debian GNU/Linux 9.9 (stretch) проверил следующее
1. resolvconf - запущен
2. Снес ссылку /etc/resolv.conf
3. Создал файл /etc/resolv.conf и в него прописал одну строку nameserver 8.8.8.8
4. Отправил в ребут
После ребута
5. сервис resolvconf матюгается что не могет что-то сделать, так как это не ссылка.
6. /etc/resolv.conf остался не измененным
7. Конфиги isc-dhclient не трогал
systemd-resolved в принципе ничего не делает с /etc/resolv.conf
С самим им не делает, но заменяет его на симлинк в /var (или /run ?), который интенсивно насилует. Или я путаю systemd-resolved с systemd-networkd?
Иногда чукча не читатель, да. А вообще, раз галки РЕШЕТО решено нет, можно попытаться помочь.
Тогда может объяснишь, чем поведение systemd в Gentoo отличается от поведения systemd в Debian? В принципиальные отличия с каким-нибудь Fedora я ещё готов поверить.
Прочтите это руководство, чтобы узнать, как внести постоянные изменения DNS в resolv.conf на Linux.
Файл предназначен для чтения человеком и содержит список ключевых слов со значениями, которые предоставляют различные типы информации о резолвере.
Файл конфигурации считается надежным источником информации DNS (например, информация о битах AD DNSSEC будет возвращена из этого источника без изменений).
Если этот файл не существует, будет опрошен только сервер имен (nameserver) на локальном компьютере, а список search будет содержать имя локального домена, определенное по имени хоста.
Внесем постоянные изменения DNS в resolv.conf
Внесем постоянные изменения DNS в resolv.conf
Любые изменения, внесенные вручную в файл конфигурации /etc/resolv.conf, обязательно будут перезаписаны при изменениях в сети или перезагрузке системы.
Согласно комментариям, сделанным в файле, файл является динамическим. «DO NOT EDIT THIS FILE BY HAND — YOUR CHANGES WILL BE OVERWRITTEN».
Итак, возьмем, к примеру, если вы хотите добавить DNS-сервер в свой Linux-сервер, вы обычно обновляете этот файл, указывая IP-адрес сервера имен, который должен запрашивать резолвер.
См. Приведенную ниже команду, которая обновляет файл resolv.conf общедоступным первичным DNS-сервером Google DNS, выполнив такую команду:
Использование фреймворка Resolvconf
Он настраивается как посредник между программами, которые предоставляют эту информацию (такими как ifup и ifdown, DHCP-клиенты, демон PPP и локальные серверы имен) и программами, которые используют эту информацию, такими как кэши DNS и библиотеки resolver).
В дистрибутивах Ubuntu/Debian вы можете установить resolvconf, выполнив команду ниже;
После установки фреймворк стартует и запускается при загрузке системы.
Затем отредактируйте файл конфигурации /etc/resolvconf/resolv.conf.d/base и введите настройки DNS.
Затем обновите файл /etc/resolv.conf, чтобы внести постоянные изменения в DNS:
Обновление настроек DNS-сервера в dhclient.conf
Если вы используете DHCPd для автоматического назначения IP-адреса, отредактируйте файл /etc/dhcp/dhclient.conf и добавьте следующую строку;
supersede domain-name-servers IP1, IP2;
Замените IP1 и IP2 соответствующими IP-адресами DNS:
Сохраните файл и выйдите.
Теперь, если вы запустите dhclient, ваш /etc/resolv.conf будет обновлен с использованием серверов DNS, определенных в dhclient.conf.
Вы можете использовать опцию prepend вместо supersede, чтобы добавить дополнительные IP-адреса к IP-адресу по умолчанию, предоставленному интернет-провайдером.
Как уcтановить IP-адрес сервера имен в настройках вашего интерфейса.
Отредактируйте файл конфигурации сетевого интерфейса и добавьте адрес сервера имен.
В Ubuntu 18.04/20.04 вы должны обновить файл конфигурации Netplan, например:
Мы устанавили DNS на публичный адрес DNS-сервера Google, 8.8.8.8.
В вашем случае все может быть иначе.
Перезапустите сеть, чтобы изменения вступили в силу;
На CentOS и аналогичных производных отредактируйте соответствующий интерфейс следующим образом.
Замените INTERFACE своим именем интерфейса.
Также отключите управление сетевым интерфейсом с помощью демона NetworkManager.
Читайте также: