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.

0xC0000022L
fonte
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]

jdthood
fonte
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.

Vai
fonte
-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/

Matei Cezar
fonte
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 
Matei Cezar
fonte
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.

bytelinux com
fonte
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