linux的DNS配置以及上游NetworkManager和Netplan共存

问题描述:

系统信息:

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的配置。

  • 24
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Ubuntu使用netplan来配置网络接口和DNS服务器。在Ubuntu 18.04及更高版本中,netplan取代了之前的网络配置工具,如ifconfig和/etc/network/interfaces。 要配置DNS服务器,请按照以下步骤进行操作: 1. 打开终端,并切换到root用户,或使用sudo命令以管理员权限执行以下命令。 2. 打开netplan配置文件。默认情况下,配置文件位于/etc/netplan目录下,并以".yaml"作为扩展名。可以使用任何文本编辑器打开此文件。 3. 查找当前网络接口的配置。通常,接口配置位于"network"节下,并以"ethernet"或"ens"开头。找到您要配置DNS的接口,并记下其名称。 4. 在该接口的配置下,添加一个新的"nameservers"项。例如,您可以添加一个公共DNS服务器的IP地址(例如"8.8.8.8")。 5. 如果您的DNS服务器有多个IP地址,您可以在"nameservers"下添加更多的IP地址。 6. 保存并关闭文件。 7. 在终端中执行以下命令,以应用新的配置:sudo netplan apply 8. 您的DNS配置已完成。您可以使用nslookup或ping等命令来测试新的DNS服务器是否正在正常工作。 请注意,如果您的系统使用NetworkManager而不是netplan来管理网络接口,则需要在NetworkManager配置文件中添加DNS服务器。该文件位于/etc/NetworkManager目录下,名为"NetworkManager.conf"。找到[main]节,添加"dns=none",然后在[ipv4]或[ipv6]节下添加"DNS"项并指定您的DNS服务器的IP地址。完成后,重新启动NetworkManager服务。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值