Como configurar o systemd-resolved e o systemd-networkd para usar o servidor DNS local para resolver domínios locais e servidor DNS remoto para domínios remotos?

6

Estou conectado à rede local com acesso à Internet por meio do gateway. Há um servidor DNS na rede local que é capaz de resolver nomes de host de computadores da rede local.

Eu gostaria de configurar systemd-resolved e systemd-networkd para que as solicitações de pesquisa para nomes de host locais sejam direcionadas (roteadas) exclusivamente para o servidor DNS local e solicitações de pesquisa para todos os outros nomes de host seria direcionado exclusivamente para outro servidor DNS remoto.

Vamos supor que eu não saiba onde estão os arquivos de configuração ou se devo adicionar mais arquivos e exigir que seus caminhos sejam especificados na resposta.

    
por Piotr Dobrogost 08.05.2018 / 19:01

1 resposta

9

No arquivo de configuração da interface de rede local, temos que especificar se queremos obter o endereço do servidor DNS local do servidor DHCP usando DHCP= option :

[Network]
DHCP=yes

ou especifique seu endereço explicitamente usando DNS= option :

[Network]
DNS=10.0.0.1

Além disso, precisamos especificar (na mesma seção) domínios locais usando % opçãoDomains=

Domains=domainA.example domainB.example ~example

Especificamos os domínios locais domainA.example domainB.example para obter o seguinte comportamento (da página do manual systemd-resolved.service, systemd-resolved ):

Lookups for a hostname ending in one of the per-interface domains are exclusively routed to the matching interfaces.

Desta forma, hostX.domainA.example será resolvido exclusivamente pelo nosso servidor DNS local.

Especificamos com ~example que todos os domínios terminados em example devem ser tratados como domínios somente de rota para obter o seguinte comportamento (da descrição de este commit):

DNS servers which have route-only domains should only be used for the specified domains.

Desta forma, hostY.on.the.internet será resolvido exclusivamente pelo nosso servidor DNS global e remoto.

Nota

O ideal é que, ao usar o protocolo DHCP, os nomes de domínio local sejam obtidos no servidor DHCP, em vez de serem especificados explicitamente no arquivo de configuração da interface de rede acima. Consulte a UseDomains= opção . No entanto, ainda há problemas pendentes com esse recurso - consulte a opção opção de domínios de pesquisa DHCP do systemd-networkd .

Precisamos especificar o servidor DNS remoto como nosso servidor DNS global do sistema. Podemos fazer isso em /etc/systemd/resolved.conf file:

[Resolve]
DNS=8.8.8.8 8.8.4.4 2001:4860:4860::8888 2001:4860:4860::8844

Não se esqueça de recarregar a configuração e reiniciar os serviços:

$ sudo systemctl daemon-reload
$ sudo systemctl restart systemd-networkd
$ sudo systemctl restart systemd-resolved

Cuidado!

Acima de garantias aplicam-se somente quando os nomes estão sendo resolvidos por systemd-resolved - veja man page para nss-resolve, libnss_resolve.so.2 e man page para systemd-resolved.service, systemd-resolved .

Veja também:

Referências:

por 08.05.2018 / 19:01