Як зберегти параметри resv.conf, такі як поворот, тайм-аут у CentOS?


9

CentOS видаляє /etc/resolv.confперіодичні зміни, внесені вручну . Значення за замовчуванням у Linux погані з точки зору виходу з ладу у розумний час (сервери імен запитів щоразу в одному порядку, 5 секунд таймаут, 2 повторення).

Отже, перший DNS у вашому resolv.confпо суті є критичним шляхом. Якщо це не вдається, ви можете дивитись за 10 секунд, перш ніж провалитися.

Ці значення по замовчуванням відбитка і (див resolv.conf сторінку людини), але як будь-які зміни будуть зроблені постійними в CentOS і зберігаються через перезавантажується і т.д.?

Відповіді:


12

Відповідь можна знайти у /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

1

Відповідь прийнята при використанні застарілих мережевих сценаріїв. Якщо ви використовуєте NetworkManager , можливо, у вас його навіть немає /etc/sysconfig/network, і якщо ви це зробите, він все ще не буде використовуватися для з'єднань, якими керує NetworkManager .

Якщо ви використовуєте NetworkManager :

Щоб додати параметри, наприклад додайте rotateдо 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

Він також буде працювати зі значенням тайм-аута, але це значення буде ігноровано , тому видалення timeout:5також видалить будь-яке інше значення тайм-ауту.

NB: Переглядаючи це, я натрапив на пов’язану помилку, яка була виправлена ​​у мережевому менеджері v1.14.6 , v1.15.2-dev та v1.16 . Якщо у вас виникли проблеми, спочатку перевірте версію свого мережевого менеджера .


1
Додаючи нову відповідь до старої прийнятої відповіді, непогано зауважити, скільки років питання та відповідь. Те, що вважається спадщиною зараз, не обов'язково було так 4+ років тому, коли питання було задано. Замість того, щоб позначати як застаріле, якщо ви відзначили, коли змінилися параметри за замовчуванням (яка версія CentOS - можливо, 8), а потім продовжували додавати інформацію, це було б набагато кориснішою відповіддю. Крім того, повторно запитайте та дайте відповідь на свою власну версію (наприклад, для новіших версій CentOS або, наприклад, при використанні Менеджера мереж) та посилання на цю старішу для ознайомлення.
Адам С

Старий спосіб все ще може бути дійсним, хоча ... NetworkManager існує вже давно, але ви все ще можете налаштувати старий спосіб як в Debian, так і в CentOS.
Томас Гайо-Сіоннест

0

Якщо вам потрібно це зробити з плоскими файлами, а не 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 цей сценарій буде виконаний, замінивши файл власним.

https://access.redhat.com/solutions/61921


0

Можна сказати NetworkManager не керувати /etc/resolv.confфайлом усі разом.

  1. Створіть /etc/NetworkManager/conf.d/90-dns-none.confфайл із таким вмістом:

    [main]
    dns=none
    
  2. Перезавантажте послугу NetworkManager:

    systemctl reload NetworkManager
    

Документація, з якої вийшло це, має друге рішення, яке передбачає заміну /etc/resolv.confсимвольного посилання на ваш файл.

Дайте про це прочитати: 22. Налаштування файлу /etc/resolv.conf вручну


-1

просто додати

resolv_conf_options=rotate\ timeout:1\ retries:1

у вашому resolvconf.conf


Ви впевнені, що це варіант у CentOS (отримали посилання на документи / щось, щоб його показати)? Я бачу це як варіант FreeBSD та Ubuntu, але не знаходжу його у CentOS
Адам C

Це частина пакету openresolv
Євгеній Ф

1
здається, це не стандартний пакет, тому насправді це не варіант для CentOS, особливо в контрольованих умовах, але не поганий варіант в інших місцях
Adam C,

-3

Я зіткнувся з тією ж проблемою минулого разу зі своїм новим підписаним Linux VPS. Як я вирішив це, було використовувати команду chattr + i, щоб зробити файл непорушним. Просто перейдіть до папки / etc та запустіть це після того, як ви внесли необхідні зміни у файл resv.conf:

chattr + i resolutionv.conf

Якщо ви хочете відновити налаштування, просто зробіть це:

chattr -i resoluv.conf

Повна інструкція для довідки: http://boxtutor.com/fix-etcresolv-conf-is-not-saving-after-server-reboot/


Це може бути потенційною проблемою, тому що тоді не вдасться зібрати зміни в серверах імен з DHCP - це не змінюватиметься часто, але я все одно хотів би, щоб це працювало
Адам C
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.