Systemd-networkd: Como posso acrescentar uma entrada estática de servidor de nomes aos servidores de nomes descobertos pelo DHCP?

3

Estou usando o systemd 213 no Arch Linux e systemd-networkd / resolvido com DHCP para conectar-me à Internet. Eu também estou executando um servidor DNS de cache em 127.0.0.1. Eu gostaria de fazer deste servidor o primeiro servidor DNS na lista, mas também gostaria de usar os servidores de nomes descobertos pelo systemd-resolved. Usar um resolv.conf estático não é realmente possível, porque eu me conecto a redes com diferentes configurações de DNS.

Eu sei que posso definir servidores DNS de fallback em /etc/systemd/resolved.conf , mas existe uma maneira com systemd-networkd para prefixar meu servidor DNS local àqueles descobertos pelo DHCP?

Edit: O que eu tentei até agora

  • A adição de uma entrada manual DNS no arquivo .network resulta nessa entrada sendo anexada em vez de prefixada:

    # This file is managed by systemd-resolved(8). Do not edit.
    #
    # Third party programs must not access this file directly, but
    # only through the symlink at /etc/resolv.conf. To manage
    # resolv.conf(5) in a different way, replace the symlink by a
    # static file or a different symlink.
    
    nameserver 141.48.3.51
    nameserver 141.48.3.17
    nameserver 141.48.3.3
    # Too many DNS servers configured, the following entries may be ignored
    nameserver 127.0.0.1
    
  • Se eu adicionar UseDNS=true na seção [DHCPv4] , como descrito na manpage systemd.network(5) , os servidores de nomes descobertos pelo DHCP serão ignorados e somente a entrada DNS estática será usada , o que não é o que eu quero:

    # This file is managed by systemd-resolved(8). Do not edit.
    #
    # Third party programs must not access this file directly, but
    # only through the symlink at /etc/resolv.conf. To manage
    # resolv.conf(5) in a different way, replace the symlink by a
    # static file or a different symlink.
    
    nameserver 127.0.0.1
    
  • Usar a representação in_addr para o endereço DNS apenas acrescenta o meu servidor de nomes, assim como usar a representação normal.

por runiq 12.06.2014 / 11:16

3 respostas

2

Você já tentou adicionar estas duas linhas:

  [Network]
  DNS=127.0.0.1

para um dos arquivos /etc/systemd/network/*.network ? Por exemplo, para um cliente dhcp, modifique /etc/systemd/network/80-dhcp.network para conter as linhas:

  [Match]
  Name=en*

  [Network]
  DHCP=yes
  DNS=127.0.0.1

EDITAR:

Já tentou a representação in_addr? Tente substituir 127.0.0.1 por 16777343.

    
por 12.06.2014 / 12:29
0

O truque parece ser que seu arquivo de configuração em /etc/systemd/network deve ordenar lexicamente antes das configurações padrão em /run/systemd/network , que são prefixadas com 10- . Observe que, se você substituir a configuração padrão, também deverá ativar o DHCP na interface, caso contrário, a interface surgirá sem o DHCP configurado.

Aqui está um exemplo de arquivo de configuração que eu coloquei em /etc/system/network/1-test.network :

[Match]
Name=ens5

[Network]
DHCP=ipv4
DNS=8.8.8.8

[DHCP]
UseDNS=false

Para aplicar essas configurações, execute systemctl restart systemd-networkd . Isso não parece derrubar a interface, basta reconfigurá-la. Você pode usar networkctl status ens5 para validar se as configurações foram aplicadas.

Eu validei isso, pelo menos, funciona no Ubuntu 18.04 (biônico).

    
por 04.09.2018 / 06:41
-1

O mesmo que a resposta de @MariusMatutiae, mas mova a entrada de DNS acima de DHCP = sim

  [Match]
  Name=en*

  [Network]
  DNS=127.0.0.1
  DHCP=yes
    
por 23.10.2017 / 17:52