问题描述:
系统信息:
ubuntu 20.04 LTS (server)
DCU服务器
今天dcu服务器,在ping baidu.com的时候报错如下:
ping baidu.com
Temporary failure in name resolution
(打开浏览器访问也不行,右上角能看到wifi图标,但是标有?)。
报这个错误,意思是域名解析时暂时失败。实际上是DNS的配置有问题。
解决方案:DNS配置
治标:
Linux 系统通常通过修改/etc/resolv.conf 来设置DNS(域名解析器,用来解析域名为ip),原始内容如下:
nameserver 127.0.0.53
options edns0 trust-ad
我们需要删除原来的内容,(因为原始内容是ubuntu20.04的初始化),添加新的内容如下(Google Public DNS)
nameserver 8.8.8.8
nameserver 114.114.114.114
但是这样子修改后,一旦进行重启NM的操作
sudo systemctl restart network-manager
/etc/resolv.conf 文件就会被重写为初始内容。
那么我们该怎么做呢?
治本:
原来/etc/resolv.conf这个文件由man:systemd-resolved管理来动态生成。
解决方案如下:
1.修改 /etc/systemd/resolved.conf ()
[Resolve]
DNS=8.8.8.8 114.114.114.114
#FallbackDNS=
#Domains=
#LLMNR=no
#MulticastDNS=no
#DNSSEC=no
#DNSOverTLS=no
#Cache=no-negative
#DNSStubListener=yes
#ReadEtcHosts=yes
将DNS改写,并且这个文件并不会被动态生成,而是保持原状。
2.重启systemd-resolved(systemd家族组件,用于域名解析)
sudo systemctl restart systemd-resolved
sudo systemctl enable systemd-resolved
3.软链接:管理文件–>动态生成的文件
#备份
sudo mv /etc/resolv.conf /etc/resolv.conf.bak
#软链接:/run/systemd/resolve/resolv.conf <------ /etc/resolv.conf
sudo ln -s /run/systemd/resolve/resolv.conf /etc/resolv.conf
接下来就可以愉快的玩耍了,如果不行,重启一下网络(NM)
sudo systemctl restart network-manager
引发原因:
waiting to fill…
误区:
说是误区其实也不是,因为这些都是必须走通的道路,才能发现上面最终原因是DNS配置,不过今天在配置好了这个之后一直以为是没配好,没有向下继续排查,这个是一个误区。
Netplan
Ubuntu 通过 Netplan 配置网络教程 - 知乎 (zhihu.com)
netplan是一个linux的网络配置工具,用yaml格式配置网络,可以配置多种网络接口的配置,给出以下几个示例:
配置:/etc/netplan/00-installer-config.yaml文件
vim /etc/netplan/00-installer-config.yaml
- DHCP:
network:
version: 2
renderer: networkd
ethernets:
enp3s0:
dhcp4: true
- 静态IP
network:
version: 2
renderer: networkd
ethernets:
enp3s0:
addresses:
- 10.0.0.10/8
gateway4: 10.0.0.1
nameservers:
search: [mydomain, otherdomain]
addresses: [10.0.0.5, 1.1.1.1]
- NetworkManager托管:(我们最后用的就是这个方案)
network
version : 2
rederer : NetworkManager
执行这个命令可以使得命令生效:
sudo netplan apply
NetworkManager
这是另一个网络管理软件,更适合桌面操作,但实际上我们并没有用它做什么,只是把Netplan指向它,不做过多赘述。
总结:
在ubuntu中有两个可选的网络管理软件:Netplan和NetworkManager,他们可以共存,只需设置Netplan,而NetworkManager不修改,说是共存,实际上主要是NM在托管。
vim /etc/netplan/00-installer-config.yaml
network
version : 2
rederer : NetworkManager
在设置好网络管理软件后,还需要额外进行DNS的配置。