DNS域名系统是网络基础架构的核心部分,提供了一种将域名转换为IP地址的方法。
您可以将DNS视为互联网的电话簿。注意这篇文章不是在Ubuntu 22.04配置自己的DNS服务器。而是给客户端配置DNS的IP地址。
连接到Internet的每个设备均由其IP地址作为唯一标识。当您在浏览器中键入要访问的网站时,其域名必须转换为相应的IP地址。
什么是 DNS与DNS工作方式
操作系统首先检查其hosts文w件中是否存在相应的域,如果域名中不存在hosts文件,它将查询配置的DNS域名服务器以解析指定的域名。
域名解析后,系统将缓存请求并保留域名和相应IP地址的记录。DNS域名服务器为其他设备执行DNS解释的服务器。
通常,DNS服务器地址由您的ISP分配。但是,这些DNS服务器可能运行缓慢或未定期更新,这可能会导致在查询域名时解析为错误的IP地址。
或者出现延迟,有时您可能根本无法解析所需的域名的IP地址。有很多免费的公共DNS服务器。
这些DNS域名服务器快速,并定期更新。这是一些最受欢迎的公共DNS服务器。Google(8.8.8.8
,8.8.4.4
),Cloudflare(1.1.1.1
,1.0.0.1
)。
OpenDNS(208.67.222.222
,208.67.220.220
),Level3(209.244.0.3
,209.244.0.4
)。
如果要为连接到本地网络的所有设备设置DNS域名服务器,那么最简单和建议的方法是在家庭路由器进行更改。
Ubuntu 22.04 查看 DNS
在Linux 查看正在使用DNS服务器IP地址方法有很多,可以使用dig
命令或者查看systemd-resolve
服务的状态。
systemd-resolve -status
命令打印很多信息。但我们可以使用grep
命令来过滤DNS Servers
字符串。
对于dig命令,如果只需要查看当前使用DNS地址,请运行命令dig myfreax.com | grep SERVER
。
dig myfreax.com | grep SERVER
sudo systemd-resolve --status | grep 'DNS Servers' -A2
dig myfreax.com | grep SERVER
;; SERVER: 8.8.8.8#53(8.8.8.8)
sudo systemd-resolve --status | grep 'DNS Servers' -A2
DNS Servers: 1.1.1.1
1.0.0.1
sudo systemd-resolve --status | grep 'DNS Servers' -A2
Ubuntu 22.04 桌面设置DNS
在Ubuntu 22.04桌面环境设置DNS地址非常简单,不需要任何技术知识。首先打开设置
窗口。
如果您连接到WiFi网络,请单击Wi-FI
标签。否则,如果您有有线连接,请单击网络
选项卡。
选择要为其设置DNS的连接,然后单击齿轮图标以打开网络管理器。选择IPv4设置
选项卡。
禁用自动
切换开关,然后输入DNS服务器的IP地址,以逗号分隔。我们将使用Google DNS服务器。
点击应用
按钮以保存更改。更改立即生效,除非您的系统或应用程序缓存了DNS记录。
如果要切换回原来的设置,请打开网络管理器,转到IPv4设置
并启用自动
切换开关。
Ubuntu 22.04 服务器设置DNS
过去,每当您想在Linux中配置DNS地址时,只需打开/etc/resolv.conf
文件,编辑记录,保存文件就可以。
现在/etc/resolv.conf
文件仍然存在,但它是由systemd-resolved服务控制的符号链接,不应手动对其进行编辑。
systemd-resolved是为本地服务和应用程序提供DNS名称解析的服务,可以使用Netplan进行配置,Netplan是Ubuntu 22.04的默认网络管理工具。
Netplan配置文件存储在/etc/netplan
目录。您可能会在此目录中找到一个或两个YAML文件。
各个安装程序的文件名可能不同。通常,该文件名为01-netcfg.yaml
或50-cloud-init.yaml
,但在您的系统中,可能会有所不同。
这些文件使您可以配置网络接口,我们通常称为网卡,包括IP地址,网关,DNS域名服务器等。
要设置DNS,请使用你喜欢的文本编辑器编辑文件,在本教程中我们将使用vim编辑文件。
sudo vim /etc/netplan/01-network-manager-all.yaml
network:
version: 2
renderer: NetworkManager
ethernets:
ens3:
dhcp4: true
nameservers:
addresses: [8.8.8.8, 8.8.4.4]
注意,你必须修改本教程中接口名称ens3
为你的计算机接口名称。然后使用您的首选DNS更改nameservers的IP地址。
例如如果您想使用Cloudflare的DNS服务器,则可以将nameservers的addresses
行更改为。
DNS服务器IP地址必须用逗号分隔,如果该nameservers字段不存在,请将nameservers添加到接口名称字段下。
nameservers:
addresses: [1.1.1.1, 1.0.0.1]
编辑Yaml文件时,请确保您遵循YAML代码缩进标准。如果配置中存在语法错误,Netplan将无法解析该文件。完成后,保存文件并退出vim。
然后运行命令sudo netplan apply
应用更改。Netplan将为systemd-resolved的服务生成配置文件/run/systemd/resolve/resolv.conf。
此外,还有一些应用程序依然使用/etc/resolv.conf的配置文件的DNS地址进行域名的解释,因此你还需要修改/etc/resolv.conf文件。
要修改此文件我们只需要将/run/systemd/resolve/resolv.conf软链接到/etc/resolv.con即可。
运行命令sudo ln -sf /run/systemd/resolve/resolv.conf /etc/resolv.conf
。
sudo netplan apply
sudo ln -sf /run/systemd/resolve/resolv.conf /etc/resolv.conf
Ubuntu 22.04 验证DNS设置
要验证是否正确设置DNS地址,请运行命令systemd-resolve --status | grep 'DNS Servers' -A2
或者命令dig www.myfreax.com
。
systemd-resolve -status
命令打印很多信息。我们使用grep
命令来过滤DNS Servers
字符串。
sudo systemd-resolve --status | grep 'DNS Servers' -A2
DNS Servers: 1.1.1.1
1.0.0.1
这里需要注意的是,如果你的Ubuntu 22.04带有桌面环境,请一定使用桌面环境的网络设置来修改DNS的IP地址。
如果你想使用命令的方式修改DNS地址,可能会不如你所愿。当你在终端运行命令dig www.myfreax.com
的时候。
你将会在dig命令的结果看到应答的服务器永远是;; SERVER: 127.0.0.1#53(127.0.0.1)或者是你的网关地址;; SERVER: 192.168.1.1#53(192.168.1.1)。
dig www.myfreax.com
; <<>> DiG 9.16.1-Ubuntu <<>> www.myfreax.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 451
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 512
;; QUESTION SECTION:
;www.myfreax.com. IN A
;; ANSWER SECTION:
www.myfreax.com. 300 IN A 43.457.68.101
;; Query time: 119 msec
;; SERVER: 8.8.8.8#53(8.8.8.8)
;; WHEN: Thu Dec 01 19:14:33 HKT 2022
;; MSG SIZE rcvd: 60
结论
Netplan是Ubuntu 22.04的默认网络管理工具,替代之前的Ubuntu版本中用于配置网络的/etc/resolv.conf
和/etc/network/interfaces
配置文件。