Como persistir opções de resolv.conf como rotate, timeout no CentOS?

9

O CentOS apagará todas as alterações manuais feitas /etc/resolv.confperiodicamente. Os padrões no Linux são ruins em termos de failover em um tempo razoável (consulte servidores de nomes na mesma ordem todas as vezes, tempo limite de 5 segundos, 2 tentativas).

Portanto, o primeiro DNS no seu resolv.confcaminho é essencialmente crítico. Se falhar, você poderá observar 10 segundos antes de efetuar o failover.

Esses padrões são ajustáveis ​​(consulte a página de manual do resolv.conf ), mas como as alterações podem ser permanentes no CentOS e persistir através de reinicializações etc.?

Adam C
fonte

Respostas:

12

A resposta pode ser encontrada em /sbin/dhclient-script:

if [ -n "${RES_OPTIONS}" ]; then
    echo "options ${RES_OPTIONS}" >> ${rscf}
fi

Mas não é muito óbvio onde você pode configurar RES_OPTIONSo script para buscá-lo - algumas coisas como o domínio de pesquisa podem ser definidas no ifcfg-ethXarquivo, mas as opções do resolvedor estão definidas em outro lugar. O arquivo que você deseja é de fato /etc/sysconfig/network. Para definir as opções relevantes, adicione algo como esta linha a esse arquivo:

RES_OPTIONS="rotate timeout:1 retries:1"

Isso definirá o tempo limite para 1 segundo, use uma única tentativa e diga ao cliente para rotacionar seus resolvedores por solicitação, em vez de passar sequencialmente pela lista a cada vez.

Se você deseja que as alterações entrem em vigor imediatamente, emita um service network restartcomando e confira as novidades /etc/resolv.confem toda a sua glória. Aqui está a aparência da minha ao testar isso:

# 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
Adam C
fonte
1

A resposta aceita é ao usar scripts de rede herdados. Se você usa o NetworkManager, talvez nem o tenha /etc/sysconfig/network, e se o fizer, ainda não será usado para conexões gerenciadas pelo NetworkManager .

Se você usa o NetworkManager :

Para adicionar opções, por exemplo, adicionando rotatea bond0:

nmcli con mod bond0 +ipv4.dns-options rotate

Para remover essa opção:

nmcli con mod bond0 -ipv4.dns-options rotate

Também +é bom alterar as opções; O NetworkManager é inteligente o suficiente para detectar opções existentes e atualizá-las. Por exemplo, alterando o valor do tempo limite:

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"

Isso significa que o valor é ignorado para remoção e nem é necessário. Para remover o tempo limite:

nmcli con mod bond0 -ipv4.dns-options timeout

Também funcionará com um valor de tempo limite, mas esse valor será ignorado ; portanto, a remoção timeout:5também removerá qualquer outro valor de tempo limite.

Nota: Ao analisar isso, deparei-me com um bug relacionado que foi corrigido no gerenciador de rede v1.14.6 , v1.15.2-dev e v1.16 . Se você encontrar algum problema, verifique sua versão do gerenciador de rede primeiro.

Thomas Guyot-Sionnest
fonte
1
Ao adicionar uma nova resposta a uma antiga resposta aceita, é uma boa idéia anotar quantos anos tem uma pergunta e resposta. O que é considerado legado agora não era necessariamente mais de 4 anos atrás, quando a pergunta foi feita. Em vez de marcar como legado, se você notou quando os padrões foram alterados (qual versão do CentOS - 8 talvez?) E depois continuou adicionando suas informações, seria uma resposta muito mais útil. Como alternativa, solicite e responda sua própria versão (para versões mais recentes do CentOS ou ao usar o Network Manager, por exemplo) e vincule-o a esta mais antiga para referência.
Adam C
A maneira antiga ainda pode ser válida ... O NetworkManager já existe há muito tempo, mas você ainda pode configurar a maneira antiga no Debian e no CentOS.
Thomas Guyot-Sionnest 16/04
0

Se você precisar fazer isso com arquivos simples, e não com nmclicomandos (como uma ferramenta de gerenciamento de configuração), a Red Hat oferece outra solução.

Crie um script /etc/NetworkManager/dispatcher.d/15-resolv, que copie um costume /etc/resolv.confno local.

#!/bin/bash
#
# Description : script to override default resolv.conf file
# with customized file.
cp -f /etc/resolv.conf.custom /etc/resolv.conf

Após reiniciar o NetworkManager, esse script será executado, substituindo o arquivo pelo seu.

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

Aaron Copley
fonte
0

Você pode dizer ao NetworkManager para não gerenciar o /etc/resolv.confarquivo todos juntos.

  1. Crie o /etc/NetworkManager/conf.d/90-dns-none.confarquivo com o seguinte conteúdo:

    [main]
    dns=none
    
  2. Recarregue o serviço NetworkManager:

    systemctl reload NetworkManager
    

A documentação que veio possui uma segunda solução que envolve a substituição /etc/resolv.confpor um link simbólico para o seu arquivo.

Leia isto: 22. Configurando manualmente o arquivo /etc/resolv.conf

Aaron Copley
fonte
-1

basta adicionar

resolv_conf_options=rotate\ timeout:1\ retries:1

na tua resolvconf.conf

Evgeny F
fonte
Tem certeza de que é uma opção no CentOS (tem um link para documentos / algo para mostrar)? Eu vejo isso como uma opção FreeBSD e Ubuntu, mas não encontrá-lo no CentOS
Adam C
É uma parte do pacote openresolv
Evgeny F
1
que não parece ser um pacote padrão, por isso não é realmente uma opção para CentOS, especialmente em ambientes controlados, e não uma má opção em outro lugar embora
Adam C
-3

Eu enfrentei o mesmo problema da última vez com o meu novo VPS Linux assinado. Como eu o resolvi foi usar o comando chattr + i para tornar o arquivo imutável. Vá para a pasta / etc e execute-a depois de fazer as alterações necessárias no arquivo resolv.conf:

chattr + i resolv.conf

Se você quiser reverter a configuração, faça o seguinte:

chattr -i resolv.conf

Diretriz completa para sua referência: http://boxtutor.com/fix-etcresolv-conf-is-not-saving-after-server-reboot/

Chuichi
fonte
Isso seria um problema potencial aqui, porque, então, seria incapaz de pegar mudanças para servidores de nomes de DHCP - não mudaria muitas vezes, mas eu ainda quero que ele funcione
Adam C