Como faço para definir um endereço de servidor de nomes DNS estático no Ubuntu Server?

7

Eu estou tentando estaticamente para definir endereços de servidor DNS no meu servidor Ubuntu em execução como máquina virtual. Eu segui todas as recomendações em páginas de suporte oficiais do Ubuntu, mas simplesmente não consigo me livrar dos servidores DNS do meu ISP definidos pelo DHCP.

Eu atribuí a interface br0 no endereço IP estático da minha máquina host e a eth0 na VM para usar o DNS do Google e meu próprio DNS local em execução na segunda VM, definindo-o em /etc/network/interfaces . Tentei mexer com arquivos de base e cauda em /etc/resolvconf/resolv.conf.d/ e tentei embaralhar a ordem da interface em /etc/resolvconf/interface-order , mas quando reiniciei o serviço de rede, obtive os endereços DNS do ISP de volta o tempo todo.

Existe uma maneira de desabilitar o resolvconf e configurar meu arquivo resolv.conf manualmente, como sempre fiz na Red Hat? Ou você pode me dizer qual script de gancho continua colocando os DNSs do ISP no resolv.conf? Meu ISP não permite que eu altere as configurações do DHCP no meu roteador, portanto não posso fazê-lo dessa maneira.

Por que uma coisa tão simples como configurar servidores DNS ficou tão complicada ???

    
por Aleks 04.11.2012 / 14:07

3 respostas

5

1: O Resolvconf grava seu arquivo dinâmico resolv.conf em /run/resolvconf/resolv.conf . /etc/resolv.conf é um link simbólico para o último local. Se você quiser usar um arquivo estático resolv.conf, simplesmente substitua o link simbólico /etc/resolv.conf por um arquivo. Isso é atualmente suportado, mas não recomendado.

2: Pelo que entendi, a máquina afetada está executando a edição do Ubuntu Server. Nesse caso, ele configura as interfaces usando o programa ifup , cujo arquivo de configuração é /etc/network/interfaces . Para interfaces configuradas pelo método dhcp , ifup (normalmente) usa dhclient do pacote isc-dhcp-client . O dhclient recebe as informações do servidor de nomes do servidor DHCP e seu script de gancho /etc/dhcp/dhclient-enter-hooks.d/resolvconf envia essas informações para resolvconf , que as coloca em resolv.conf .

Uma coisa que você pode fazer é editar /etc/resolvconf/interface-order tal que eth0.dhcp vem antes de eth0.dhclient . (Eu suponho que a interface relevante é eth0 .) Se você tem o padrão interface-order você pode, por exemplo, apenas adicionar uma linha eth0.dhcp antes da linha eth* .

--- interface-order_ORIG    2012-11-06 10:12:47.630529145 +0100
+++ interface-order 2012-11-06 10:13:16.410529800 +0100
@@ -9,6 +9,7 @@
 hso*
 em+([0-9])?(_+([0-9]))*
 p+([0-9])p+([0-9])?(_+([0-9]))*
+eth0.dhcp
 eth*
 ath*
 wlan*

Em seguida, adicione uma linha dns-nameservers à sub-rotina iface eth0 em /etc/network/interfaces com o endereço correto do servidor de nomes.

iface eth0 inet dhcp
    dns-nameservers 1.2.3.4

Como eth0.dhcp vem antes de eth0.dhclient , o endereço correto do servidor de nomes será incluído em resolv.conf antes do incorreto.

Outra maneira de substituir o comportamento indesejado de incluir o endereço do servidor de nomes fornecido pelo servidor DHCP é editar o script de gancho do dhclient. Por exemplo, você pode adicionar uma linha como a seguinte (onde 1.2.3.4 é um endereço de servidor de nomes que você gostaria de descartar).

--- resolvconf_ORIG 2012-03-29 22:37:14.000000000 +0200
+++ resolvconf  2012-11-05 20:53:33.312681077 +0100
@@ -54,6 +54,7 @@
            fi
            shopt -s nocasematch
            for nameserver in $new_dhcp6_name_servers ; do
+               [ "$nameserver" = "1.2.3.4" ] && continue

No entanto, outra possibilidade (um pouco bruta, já que é completamente estática) é adicionar uma opção de servidor de nomes a /etc/resolvconf/resolv.conf.d/head .

3: A configuração de endereços de servidores DNS ficou mais complicada porque as máquinas estão se tornando móveis, estão ficando cada vez mais interfaces e a configuração estática está sendo gradualmente substituída pela autoconfiguração.

    
por jdthood 05.11.2012 / 20:59
3

Simplesmente aproveite o dhclient (isso usa o google DNS, por exemplo). Isso é muito mais limpo do que as outras respostas IMO:

  1. Faça o backup de /etc/resolv.conf: sudo cp /etc/resolv.conf /etc/resolv.conf.auto

  2. Edite /etc/dhcp[3]/dhclient.conf (o ubuntu 14.04 omite o 3): sudo vi /etc/dhcp/dhclient.conf

  3. Se houver uma linha contendo domain-name-servers, anote os endereços IP para referência futura.
  4. Substitua essa linha por ou adicione a seguinte linha: Para IPv4: %código% Para IPv6: %código%
  5. Agora libere e renove o IP: %código%

Agora reinicie todos os clientes da rede que você está usando (como o chrome ou o whatnot)

    
por rynop 29.04.2014 / 22:32
0

IMO: este é um bug na ferramenta de configuração gráfica.

Minha correção mais fácil é comentar (ou remover) a linha iniciada com "request ..." no arquivo /etc/dhcp/dhclient.conf

    
por ubuntu_new69 24.07.2014 / 09:49