Ubuntu: Como configurar servidores DNS em / etc / network / interfaces corretamente para o resolvconf?


13

Todos os exemplos que eu vi de configurations ( /etc/network/interfaces) mostraram que você configura uma interface e, em seguida, abaixo dela, as dns-*linhas como:

auto eth0
iface eth0 inet static
        ...
        dns-nameservers 127.0.0.2
        dns-search example.com my.example.com

Agora estou ciente de que o protocolo DNS é independente do mecanismo de transporte. Portanto, não deve ser errado adicionar um endereço IPv6 na dns-nameserverslinha.

No entanto, como também estou configurando a interface para IPv6, fazia sentido adicionar a dns-nameserverslinha lá:

iface eth0 inet6 static
        ...
        dns-nameservers ::2
        dns-search example.com my.example.com

... ou fez? Porque quando o resolvconfcria /etc/resolv.confsimplesmente ignora todos os servidores DNS IPv6. Também parece ignorar dns-searche dns-domain. A única linha que parece honrar é a dns-nameserverslinha da configuração do IPv4 eth0.

Qual é o método correto de configuração de servidores DNS?


Evidência circunstancial adicional sobre por que ela deve fazer parte de cada ifaceestrofe respectiva . Citação de man 8 resolvconf:

O ifup(8) programa pode ser usado para configurar interfaces de rede de acordo com as configurações em /etc/network/interfaces(5). Para obter ifupinformações push do servidor de nomes para resolvconfquando ele configura uma interface, adicione dns-linhas à ifaceestrofe relevante em /etc/network/interfaces. Para adicionar endereços de servidor de nomes, adicione uma linha que comece com dns-nameservers.


Se você ainda tiver esse problema, publique todo o arquivo / etc / network / interfaces e a saída de / usr / share / resolvconf / dump-debug-info que está incluída no pacote resolvconf no Ubuntu 15.04.
— Jdthood

Respostas:


9

É correto colocar as opções dns- * na iface eth0 inet staticsub - rotina ou na iface eth0 inet6 staticsub - rotina. As opções se tornam ativas quando a definição de interface lógica à qual pertencem se torna ativa.

Acabei de testar isso na minha própria máquina Ubuntu 15.04, que normalmente configuro com o DHCP. Desativei o NetworkManager e editei o / etc / network / interfaces para que fique assim:

iface eth0 inet static
        address 192.168.178.22
        netmask 255.255.255.0
        dns-nameservers 8.8.8.8
        dns-search foo

iface eth0 inet6 static
        address fe80::390:f5ff:fef7:96b9/64
        dns-nameservers ::2
        dns-search bar

Então eu fiz

$ sudo ifup eth0

Os resultados:

$ ifconfig eth0
eth0      Link encap:Ethernet  HWaddr 00:90:f5:f7:96:b9  
      inet addr:192.168.178.22  Bcast:192.168.178.255  Mask:255.255.255.0
      inet6 addr: fe80::390:f5ff:fef7:96b9/64 Scope:Link
      UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
      RX packets:2114609 errors:0 dropped:1 overruns:0 frame:0
      TX packets:1757693 errors:0 dropped:0 overruns:0 carrier:0
      collisions:0 txqueuelen:1000 
      RX bytes:2033346950 (2.0 GB)  TX bytes:1318685445 (1.3 GB)
      Interrupt:20 Memory:f7e00000-f7e20000 

$ cat /etc/resolv.conf
# Dynamic resolv.conf(5) file for glibc resolver(3) generated by resolvconf(8)
#     DO NOT EDIT THIS FILE BY HAND -- YOUR CHANGES WILL BE OVERWRITTEN
nameserver ::2
nameserver 8.8.8.8
search bar foo

Observe que os endereços, servidores de nomes de DNS e opções de pesquisa de DNS de ambas as estrofes agora estão ativos.

[Atualizado em 30 de maio de 2015]


1

No meu RPi executando o Ubuntu 16.04.2 LTS, minhas descobertas foram as seguintes:

Nota: Desinstalei o NetworkManager e apenas deixei o resolvconf para executar suas tarefas. (Este é um servidor fixo, para que as coisas não mudem muito em termos de rede.)

Se eu tivesse as linhas dns-search e dns-nameserver em apenas uma interface (a principal conectada com fio), mas não a outra (wlan0) depois da reinicialização, cerca de 95% das vezes que meu arquivo /etc/resolv.conf seria esvaziar.

Por exemplo, quando meu arquivo de interfaces ficou assim:

# The primary network interface
auto enxb827ebbfedcf
iface enxb827ebbfedcf inet static
    address 192.168.1.16
    netmask 255.255.255.0
    network 192.168.1.0
    broadcast 192.168.1.255
    gateway 192.168.1.1
    dns-search summer.co.uk summer.vpn
    dns-nameserver 192.168.1.16 
    dns-nameserver 192.168.1.1

# end stanza with clear line+

# The loopback network interface
auto lo
iface lo inet loopback

auto wlan0 
iface wlan0 inet static
    address 192.168.1.17
    netmask 255.255.255.0
    network 192.168.1.0
    broadcast 192.168.1.255
    gateway 192.168.1.1 
wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf

ENTÃO, após uma reinicialização, meu resolv.conf ficaria assim:

# Dynamic resolv.conf(5) file for glibc resolver(3) generated by resolvconf(8)
#     DO NOT EDIT THIS FILE BY HAND -- YOUR CHANGES WILL BE OVERWRITTEN

No entanto, em uma ou duas reinicializações, notei que ela tinha o que queria, por exemplo

# Dynamic resolv.conf(5) file for glibc resolver(3) generated by resolvconf(8)
#     DO NOT EDIT THIS FILE BY HAND -- YOUR CHANGES WILL BE OVERWRITTEN
nameserver 192.168.1.16
nameserver 192.168.1.1
search summer.co.uk summer.vpn

Solução Quando dei a ambas as interfaces (com fio e wlan0) as linhas dns-search e dns-nameserver, tudo funcionou bem em todas as reinicializações (até agora, de qualquer maneira)

ou seja, o seguinte arquivo de interfaces funciona para mim:

# The primary network interface
auto enxb827ebbfedcf
iface enxb827ebbfedcf inet static
    address 192.168.1.16
    netmask 255.255.255.0
    network 192.168.1.0
    broadcast 192.168.1.255
    gateway 192.168.1.1
    dns-search summer.co.uk summer.vpn
    dns-nameserver 192.168.1.16 
    dns-nameserver 192.168.1.1

# end stanza with clear line+

# The loopback network interface
auto lo
iface lo inet loopback

auto wlan0 
iface wlan0 inet static
    address 192.168.1.17
    netmask 255.255.255.0
    network 192.168.1.0
    broadcast 192.168.1.255
    gateway 192.168.1.1
    dns-search summer.co.uk summer.vpn
    dns-nameserver 192.168.1.16 
    dns-nameserver 192.168.1.1
wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf

e me fornece o seguinte resolv.conf correto após cada reinicialização (até agora)

# Dynamic resolv.conf(5) file for glibc resolver(3) generated by resolvconf(8)
#     DO NOT EDIT THIS FILE BY HAND -- YOUR CHANGES WILL BE OVERWRITTEN
nameserver 192.168.1.16
nameserver 192.168.1.1
search summer.co.uk summer.vpn

Presumo que essa configuração duplicada seja normal, se for um pouco redundante.

Conclusão: Se uma interface (diferente de lo0) não possui informações de pesquisa de DNS e servidor de nomes de DNS, o resolvconf não coloca nada no seu arquivo resolv.conf. (É como se o ifup fizesse a interface wlan0 em segundo e o ifup limpasse o resolv.conf ou algo assim.)

Eu não tenho certeza se isso é um bug ou não, parece errado para mim.


-1

Editar interfaces de rede para adicionar o DNS personalizado é uma maneira ... mas, para modificar permanentemente o resolv.conf em todo o sistema com o dnsnameserver personalizado, é necessário instalar o pacote resolvconf (se já não estiver instalado por padrão) e preencher sua base. arquivo de configuração com seus valores personalizados de servidores de nomes DNS. Espero que este pequeno guia o ajude a obter configurações adicionais relacionadas às entradas DNS do resolv.conf http://www.bytelinux.com/make-permanent-changes-to-resolv-conf-file-on-ubuntu/


2
Bem-vindo ao Unix e Linux! Embora isso possa teoricamente responder à pergunta, seria preferível incluir mais das partes essenciais desse guia aqui e fornecer o link para referência.
— Anthon

@MateiCezar: você poderia elaborar? Não sei se você leu minha pergunta até o fim. O pacote resolvconf está instalado. Gostaria /etc/network/interfacesde configurar meus servidores DNS para IPv4 e IPv6, respectivamente.
— 0xC0000022L

-1

Você deseja usar servidores DNS IPv6 em /etc/network/interfaces ... basta colocar suas entradas de nomes IPv6 DNS na interface de rede específica, como esta:

dns-nameservers 2001:4860:4860::8844 2001:4860:4860::8888. 

Para adicionar permanentemente dnsnamesers IPv6 ao resolv.conf, use o mesmo link que eu adicionei abaixo e edite o arquivo base resolvconf preenchendo seus próprios nomes de DNS IPv6:

nameserver 2001:4860:4860::8844
nameserver 2001:4860:4860::8888 

Para configurar o / etc / network / interfaces com o IPv6, use este guia http://www.bytelinux.com/configure-permanent-static-ip-address-alias-interfaces-debian-based-systems/ e substitua o IPv4 pelo IPv6 como segue: auto eth0

iface eth0 inet6 static
        address 2800:210:0:1::3
        netmask 64
        gateway 2800:210:0:1::1
        dns-nameservers 2001:4860:4860::8844 

Corrigida sua formatação. Mais uma vez, minha pergunta afirma claramente que isso não resulta na adição desses servidores DNS para IPv6 /etc/resolv.conf. Se isso funcionar de alguma forma para você, seria útil saber a versão exata do sistema.
— 0xC0000022L 02/02

deixe-me ver se entendi ... você deseja usar os resolvedores DNS IPv6 em / etc / network / interfaces e, de alguma forma, adicioná-los nesse arquivo não funciona para você?
— Matei Cezar 02/02

Eu posso adicioná-los a /etc/network/interfacesmulta. O que não acontece é que eles são transferidos /etc/resolv.confcomo deveriam. E estou tentando descobrir o que estou fazendo de errado, sim.
— 0xC0000022L 02/02

Ainda não entendeu? Essas entradas DNS de / etc / network / interfaces são transferidas para /etc/resolv.conf ou não? Atualmente, essas entradas de servidores de nomes das interfaces nunca são transferidas ou gravadas no /etc/resolv.com, elas funcionam por conta própria dessa NIC e não são implementadas em todo o sistema. Apenas o DNS do arquivo /etc/resolv.conf é usado pelas interfaces que não possuem entradas dnsnameservers.
— Matei Cezar

Desculpe ... mas ainda não entendo o que você tenta obter com essas entradas de servidores de nomes DNS.
— Matei Cezar

-1

Por que você não implementa esses servidores de nomes DNS IPv6 diretamente no arquivo /etc/resolv.conf em todo o sistema editando o arquivo base resolvconf conforme sugerido na minha resposta anterior com o link e ainda continua usando o arquivo de interfaces de rede? Você pode adicionar um conjunto de servidores de nomes IPv6 DNS no /etc/resolv.conf e, se desejar usar outros servidores de nomes IPv6 para uma NIC específica, use-os somente em / etc / network / interfaces.


o que você mencionou na última frase é exatamente o motivo pelo qual não quero usar a resolução base do configconf e é exatamente o que estou tentando. Além disso, é exatamente o que está falhando.
— 0xC0000022L

OK, entendi! Mas por que você deseja implementar as coisas dessa maneira? De qualquer maneira, você só precisa que esses servidores de nomes DNS estejam acessíveis em todo o sistema; existe algum motivo para transferi-los da rede / interfaces para o resolv.conf, quando você pode apenas escrevê-los nos dois arquivos e pronto !?
— Bytelinux com

Não tenho certeza de quantas máquinas você administra, mas para mim é o suficiente para tentar facilitar minha vida. Como /etc/network/interfacesé suposto fazer o trabalho, estou tentando descobrir o que estou fazendo de errado.
— 0xC0000022L
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.