Solução temporária sem necessidade de reconfigurar se os IPs de DNS mudanças:
sudo rm -f /etc/resolv.conf
sudo ln -s /run/systemd/resolve/resolv.conf /etc/resolv.conf
reboot
Meu servidor DNS é 192.168.1.152
.
Este DNS é fornecido aos clientes pelo DHCP. Os clientes do Windows na minha LAN resolvem os nomes corretamente usando esse DNS, mas minha VM do Ubuntu não faz isso.
A VM é configurada com rede de ponte e está sendo fornecida adequadamente ao servidor DNS, mas meus nomes de host locais não estão sendo resolvidos pelo nslookup ou navegadores.
Aqui está um nslookup
de um dos meus domínios locais:
# nslookup unraid.local
Server: 127.0.0.53
Address: 127.0.0.53#53
** server can't find unraid.local: SERVFAIL
Aqui está o que deve ser resolvido usando meu servidor DNS:
# nslookup unraid.local 192.168.1.152
Server: 192.168.1.152
Address: 192.168.1.152#53
Name: unraid.local
Address: 192.168.1.152
/etc/resolv.conf
tem um servidor de nomes errado:
# 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
# 127.0.0.53 is the systemd-resolved stub resolver.
# run "systemd-resolve --status" to see details about the actual nameservers.
nameserver 127.0.0.53
Eu corri o comando. Sob Servidores DNS, confusamente, especifica o servidor correto (e meu gateway padrão).
root@ubuntu:~# systemd-resolve --status
Global
DNSSEC NTA: 10.in-addr.arpa
16.172.in-addr.arpa
168.192.in-addr.arpa
17.172.in-addr.arpa
18.172.in-addr.arpa
19.172.in-addr.arpa
20.172.in-addr.arpa
21.172.in-addr.arpa
22.172.in-addr.arpa
23.172.in-addr.arpa
24.172.in-addr.arpa
25.172.in-addr.arpa
26.172.in-addr.arpa
27.172.in-addr.arpa
28.172.in-addr.arpa
29.172.in-addr.arpa
30.172.in-addr.arpa
31.172.in-addr.arpa
corp
d.f.ip6.arpa
home
internal
intranet
lan
local
private
test
Link 2 (ens33)
Current Scopes: DNS LLMNR/IPv4 LLMNR/IPv6
LLMNR setting: yes
MulticastDNS setting: no
DNSSEC setting: no
DNSSEC supported: no
DNS Servers: 192.168.1.152
192.168.1.1
Eu não quero "codificar" o IP do servidor DNS em um arquivo de configuração porque não serei capaz de resolver quando eu mudar de rede.
Como posso fazer com que o resolvconf e o NetworkManager automaticamente definam o IP do servidor DHCP em /etc/resolv.conf
?
Solução temporária sem necessidade de reconfigurar se os IPs de DNS mudanças:
sudo rm -f /etc/resolv.conf
sudo ln -s /run/systemd/resolve/resolv.conf /etc/resolv.conf
reboot
Tente editar /etc/systemd/resolved.conf
, adicionando o servidor DNS desejado:
altere isso:
[Resolve]
#DNS=
para isso (mas use o que você quiser - este é um exemplo):
[Resolve]
DNS=192.168.1.152
depois disso, reinicie o serviço:
service systemd-resolved restart
E quando você verificar o status, verá
$ systemd-resolve --status
Global
DNS Servers: 192.168.1.152
DNSSEC NTA: 10.in-addr.arpa
16.172.in-addr.arpa
168.192.in-addr.arpa
17.172.in-addr.arpa
18.172.in-addr.arpa
19.172.in-addr.arpa
Eu montei um script que funciona em torno da questão do Netplan não suportando atualmente a capacidade de substituir servidores DNS fornecidos pelo DHCP e ordem de busca de domínio. Ele cria o arquivo yaml do Netplan e configura o systemd-resolved para funcionar como esperado.
################## Start Netplan config (renderer: NetworkManager)
# Some useful commands for customisation
# NetConn=$(nmcli device show|grep GENERAL.CONNECTION|head -n1|awk '{print $2}')
# IP=$(nmcli device show|grep IP4.ADDRESS|head -n1|awk '{print $2}')
# GATEWAY=$(nmcli device show|grep IP4.GATEWAY|head -n1|awk '{print $2}')
# sed -i 's/renderer: networkd/renderer: NetworkManager/' //etc/netplan/01-netcfg.yaml
######################################
systemctl start NetworkManager
NIC=$(nmcli device show|grep GENERAL.DEVICE|head -n1|awk '{print $2}')
##### create Netplan yaml config file
cat >/etc/netplan/01-netcfg.yaml <<EOF
# This file describes the network interfaces available on your system
# For more information, see netplan(5).
network:
version: 2
renderer: NetworkManager
ethernets:
EOF
echo " ${NIC}:" >> /etc/netplan/01-netcfg.yaml
cat >>/etc/netplan/01-netcfg.yaml <<EOF
dhcp4: yes
nameservers:
search: [abc.domain.edu, def.domain.edu]
addresses: [10.10.11.22, 10.10.11.23]
EOF
#work around DNS resolv bug
systemctl stop systemd-resolved
sed -i 's/#DNS=/DNS=10.10.11.22 10.10.11.23/' /etc/systemd/resolved.conf
sed -i 's/#Domains=/Domains=abc.domain.edu def.domain.edu' /etc/systemd/resolved.conf
systemctl start systemd-resolved
systemctl restart NetworkManager
netplan apply
reboot
############### End Netplan Config
A solução que funcionou para mim é postada aqui no meu blog
Use o editor nano para editar esses 2 arquivos
nano /etc/resolv.conf
nano /etc/resolvconf/resolv.conf.d/head
Adicione servidores DNS que você deseja usar
nameserver 9.9.9.9
nameserver 127.0.0.1
Em seguida, reinicie o serviço
service systemd-resolved restart
Verificação final:
cat /etc/resolv.conf
Faça nslookup
nslookup google.com
eu apenas usei isso e consertei o problema no meu laptop em casa, mas em algum momento no futuro, quando estou fora da minha rede doméstica, vejo que ele causará problemas, porque o servidor de dns primário e secundário ainda ser meus servidores domésticos com seus endereços de lan.
Eu tenho o mesmo problema. Cada reinicialização, nada será resolvido. Eu desinstalei tudo e reinstalei cerca de 50 vezes. Está simplesmente quebrado.
então a correção é .... "apenas aplique algumas configurações cada vez que você inicializar seu pc, o que permite que 90% dos nomes de host sejam resolvidos, mas wget e apt-get atualizações e upgrades falharão aleatoriamente sem motivo"
cat /etc/systemd/resolved.conf
# This file is part of systemd.
#
# systemd is free software; you can redistribute it and/or modify it
# under the terms of the GNU Lesser General Public License as published by
# the Free Software Foundation; either version 2.1 of the License, or
# (at your option) any later version.
#
# Entries in this file show the compile time defaults.
# You can change settings by editing this file.
# Defaults can be restored by simply deleting this file.
#
# See resolved.conf(5) for details
[Resolve]
#DNS=
#FallbackDNS=
#Domains=
#LLMNR=yes
#MulticastDNS=yes
#DNSSEC=no
#Cache=yes
#DNSStubListener=udp
Ao usar o Ubuntu 17.10 Desktop, você precisa editar o arquivo que diz NÃO EDITAR ESTE ARQUIVO BLAH BLAH
bem, essa é a única maneira que funciona ~!
root@nas:~# cat /etc/resolv.conf
# This file is managed by man:systemd-resolved(8). Do not edit.
#
# 127.0.0.53 is the systemd-resolved stub resolver.
# run "systemd-resolve --status" to see details about the actual nameservers.
nameserver 8.8.8.8
Então remova o IP 127.0.0.53 como o servidor de nomes e digite outro, google por exemplo. Parece que meu endereço IP de DNS real também não resolve nomes de host (embora ele funcione em outras 10 máquinas e dispositivos da casa), mas o Google funciona bem.
Eu finalmente consegui uma solução para esse problema para o Ubuntu 17.10. Por padrão, esta versão do Ubuntu usa systemd-resolved
, o que espero que seja estável para as próximas versões.
Para usar o dns personalizado em vez do cache resolvido pelo systemd local, faça o seguinte:
adicione novos servidores de nomes. Edite o arquivo em /etc/systemd/resolved.conf
como sudoer. Aqui eu comentei a entrada DNS e coloquei meu dns
[Resolve]
DNS=10.96.0.10 8.8.8.8 8.8.4.4
cancele o symlink real para /etc/resolv.conf
sudo ln -s /run/systemd/resolve/resolv.conf /etc/resolv.conf
sudo service systemd-resolved restart
sudo systemctl restart networking
E agora, se você pesquisar um nome fornecido pelo seu add dns, deverá ver o registro resolvido dig nexus.default.svc.cluster.mydomain
O último passo é atualizar a ordem de resolução em /etc/nsswitch.conf
, colocando o dns antes do mdns4_minimal
hosts files dns mdns4_minimal [NOTFOUND=return] resolve [!UNAVAIL=return] myhostname