按照 Ubuntu 官方的方式来设置 DNS

本文介绍如何在Ubuntu系统中正确配置DNS服务器。不同于传统方法修改/etc/resolv.conf文件, Ubuntu使用netplan进行网络配置。通过编辑/etc/netplan/*.yaml文件并运行netplan apply命令,可以成功设置自定义DNS服务器。

绝大多数的 Linux 发行版都是在 /etc/resolv.conf 文件中设置 DNS 服务器,然而到了 Ubuntu 这里,这个方法不 work 了。即使强行手动修改这个文件,系统仍然会自动恢复到如下的默认设置。

# This file is managed by man:systemd-resolved(8). Do not edit.
#
# This is a dynamic resolv.conf file for connecting local clients to the
# internal DNS stub resolver of systemd-resolved. This file lists all
# configured search domains.
#
# Run "systemd-resolve --status" to see details about the uplink DNS servers
# currently in use.
#
# Third party programs must not access this file directly, but only through the
# symlink at /etc/resolv.conf. To manage man:resolv.conf(5) in a different way,
# replace this symlink by a static file or a different symlink.
#
# See man:systemd-resolved.service(8) for details about the supported modes of
# operation for /etc/resolv.conf.

nameserver 127.0.0.53
options edns0

网上有文章介绍说需要修改 /etc/systemd/resolved.conf ,然而你会发现 DNS 的配置还是不能正常生效。甚至有人建议把 systemd-resolved 服务停掉,这就更不是官方推荐的做法了。实际上,Ubuntu 使用了 netplan 工具来配置网络。修改 DNS,需要在 netplan 的配置文件 /etc/netplan/*.yaml 修改。通常,配置文件会是 01-xxx.yaml 的形式,内容一般如下

# Let NetworkManager manage all devices on this system
network:
  version: 2
  renderer: NetworkManager
  ethernets:
    eno1:
     addresses: [xxx.xxx.xxx.xxx/24]
     gateway4: xxx.xxx.xxx.1
     nameservers:
        addresses:
        - "8.8.8.8"

只需要把 DNS 服务器的地址加入 nameservers 下面的 addresses 列表里(如上述的 8.8.8.8)就可以了。
请注意,修改完配置文件后,需要运行

netplan apply

以使新配置生效。

这时可以运行如下命令查看系统所用的 DNS

systemd-resolve --status

就能发现我们的新设置已经生效了。

参考链接

  1. netplan 官方网站 https://netplan.io/
  2. Netplan——新一代网络配置工具 https://www.jianshu.com/p/174656635e74
Ubuntu 22.04系统中配置DNS服务器通常涉及使用`systemd-resolved`服务,这是默认的网络管理工具之一。以下是配置DNS服务器的步骤: ### 配置DNS解析 1. **编辑 `resolved.conf` 文件** 可以通过修改 `/etc/systemd/resolved.conf` 文件来设置全局DNS服务器。例如,要使用Google的公共DNS(8.8.8.8和8.8.4.4),可以执行以下命令: ```bash sudo nano /etc/systemd/resolved.conf ``` 在文件中找到 `DNS=` 这一行,并进行如下修改: ```ini DNS=8.8.8.8 8.8.4.4 ``` 如果需要指定特定的域名后缀搜索列表,可以添加 `Domains=` 行: ```ini Domains=example.com ``` 2. **重启 `systemd-resolved` 服务** 修改完配置文件后,需要重启 `systemd-resolved` 服务以应用更改: ```bash sudo systemctl restart systemd-resolved ``` 3. **检查当前的DNS状态** 可以通过以下命令验证DNS是否已正确配置: ```bash systemd-resolve --status ``` 此命令会显示当前的DNS服务器以及相关的网络接口信息[^1]。 ### 使用 Netplan 配置静态DNS 如果使用的是Netplan作为网络配置工具(如Ubuntu Server 22.04),可以在YAML配置文件中直接指定DNS服务器。例如,修改 `/etc/netplan/01-netcfg.yaml` 文件: ```yaml network: version: 2 ethernets: enp0s3: dhcp4: no addresses: - 192.168.1.100/24 gateway4: 192.168.1.1 nameservers: addresses: - 8.8.8.8 - 8.8.4.4 ``` 保存文件后,运行以下命令以应用新的网络配置: ```bash sudo netplan apply ``` 此方法适用于静态IP地址配置场景,并且能够确保DNS设置与网络接口绑定[^2]。 ### 设置本地DNS缓存(可选) 为了提高DNS查询性能,可以安装并启用本地DNS缓存服务,比如 `dnsmasq` 或者继续依赖 `systemd-resolved` 的缓存功能。安装 `dnsmasq` 的方法如下: ```bash sudo apt update sudo apt install dnsmasq ``` 安装完成后,可以通过编辑 `/etc/dnsmasq.conf` 文件来自定义缓存行为和其他高级选项。 ### 验证DNS配置 最后,可以使用 `nslookup` 或 `dig` 命令测试DNS解析是否正常工作: ```bash nslookup google.com ``` 或者 ```bash dig google.com ``` 这些命令将返回目标域名对应的IP地址,从而确认DNS服务器是否成功响应请求[^1]。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值