CentOS вытрет любые ручные изменения, внесенные в /etc/resolv.conf
периодически. Значения по умолчанию в Linux плохи с точки зрения обработки отказа в разумный срок (серверы имени запроса в том же порядке каждый раз, 5 вторых тайм-аутов, 2 повторения).
Следовательно, первый DNS в Вашем resolv.conf
чрезвычайно критический путь. Если это перестало работать, можно смотреть за 10 секунд перед обработкой отказа.
Эти значения по умолчанию tweakable (см. resolv.conf страницу справочника), но как какие-либо изменения могут делаться постоянными в CentOS и сохраниться через перезагрузки и т.д.?
Ответ можно найти в / sbin / dhclient-script
:
if [ -n "${RES_OPTIONS}" ]; then
echo "options ${RES_OPTIONS}" >> ${rscf}
fi
Но не так уж очевидно, где можно установить RES_OPTIONS
чтобы сценарий подхватил его - некоторые вещи, например, домен поиска, можно установить в файле ifcfg-ethX
, но параметры преобразователя задаются где-то еще. На самом деле вам нужен файл / etc / sysconfig / network
. Чтобы установить соответствующие параметры, добавьте в этот файл что-то вроде этой строки:
RES_OPTIONS="rotate timeout:1 retries:1"
Это установит тайм-аут в 1 секунду, используйте одну повторную попытку и скажите клиенту, что нужно чередовать свои преобразователи для каждого запроса вместо последовательного просмотра списка каждый раз .
Если вы хотите, чтобы изменения вступили в силу немедленно, введите команду service network restart
и проверьте свой новый /etc/resolv.conf
во всей красе. Вот как мой выглядел во время тестирования:
# cat /etc/resolv.conf
; generated by /sbin/dhclient-script
search example.com
options rotate timeout:1 retries:1
nameserver 10.1.1.2
nameserver 10.1.1.1
В прошлый раз я столкнулся с той же проблемой с моим новым подписанным Linux VPS. Как я решил, это было использовать команду chattr + i, чтобы сделать файл неизменяемым. Просто перейдите в папку / etc и запустите это после того, как вы внесли необходимые изменения в файл resolv.conf:
chattr + i resolv.conf
Если вы хотите отменить настройку, просто сделайте следующее:
chattr -i resolv.conf
Полное руководство для справки: http://boxtutor.com/fix-etcresolv-conf-is-not-saving-after-server-reboot/
Принятый ответ - при использовании устаревших сетевых сценариев. Если вы используете NetworkManager , у вас может даже не быть / etc / sysconfig / network
, и если вы это сделаете, он все равно не будет использоваться для подключений, управляемых NetworkManager .
Если вы используете NetworkManager :
Чтобы добавить параметры, например, добавление , поверните
в bond0
:
nmcli con mod bond0 +ipv4.dns-options rotate
Чтобы удалить этот параметр:
nmcli con mod bond0 -ipv4.dns-options rotate
+
также хороши для изменения параметров; NetworkManager достаточно умен, чтобы обнаруживать существующие параметры и обновлять их. Например, изменение значения тайм-аута:
root@debian:~# nmcli con show bond0 |grep ipv4.dns-options
ipv4.dns-options: "rotate,timeout:5"
root@debian:~# nmcli con mod bond0 +ipv4.dns-options timeout:3
root@debian:~# nmcli con show bond0 |grep ipv4.dns-options
ipv4.dns-options: "rotate,timeout:3"
Это означает, что значение игнорируется для удаления и даже не требуется. Чтобы удалить тайм-аут:
nmcli con mod bond0 -ipv4.dns-options timeout
Он также будет работать со значением тайм-аута, но это значение будет проигнорировано , поэтому удаление тайм-аута: 5
также удалит любое другое значение тайм-аута.
NB: Изучая это, я обнаружил ошибку, связанную с , которая была исправлена в network-manager v1.14.6 , v1.15.2-dev и v1.16 . Если вы столкнулись с какой-либо проблемой, сначала проверьте свою версию network-manager .
Если вам нужно сделать это с плоскими файлами, а не с командами nmcli
(например, с помощью инструмента управления конфигурацией), Red Hat предлагает другое решение.
Создайте сценарий /etc/NetworkManager/dispatcher.d/15-resolv
, который копирует пользовательский /etc/resolv.conf
на место.
#!/bin/bash
#
# Description : script to override default resolv.conf file
# with customized file.
cp -f /etc/resolv.conf.custom /etc/resolv.conf
После перезапуска NetworkManager этот сценарий будет выполнен, заменив файл вашим собственным.
Вы можете указать NetworkManager не управлять файлом /etc/resolv.conf
вместе.
Создайте файл
/etc/NetworkManager/conf.d/90-dns-none.conf
со следующим содержанием:[основной] dns = none
Перезагрузить службу NetworkManager:
systemctl перезагрузить NetworkManager
В документации есть второе решение, которое включает замену /etc/resolv.conf
символической ссылкой на ваш файл.
Прочтите это: 22. Настройка файла /etc/resolv.conf вручную
Поскольку этот ответ появился в моих поисках того, как это сделать на моей машине (MX Linux, производная от Debian), и он не был ответ для этого дистрибутива, я хочу добавить, как это сделать для этого дистрибутива:
Редактировать этот файл:
/etc/resolvconf/resolv.conf.d/head