域名解析系统(DNS)是互联网架构中的一个中心部分,它提供了一种解析域名到 IP 地址的方式。你可以把 DNS 认为是互联网的电话号码薄。
每个连接到互联网的设备都被一个独立的 IP 地址所标识。当你在浏览器中输入你想浏览的网站网址时,它的域名必须被解析成它的对应 IP 地址。操作系统首先检测本地 hosts 文件,如果没有域名的相关条目,它将会通过 DNS 域名解析服务器来查询指定的域名。
一旦域名被查询到 IP 地址,系统将会缓存请求,并且在本地保存一条记录,关于域名和对应 IP 的记录。
DNS 域名解析服务器是一些服务器,它们专门被其他设备用来对请求域名进行 DNS 查询。
通常,DNS 解析服务器由你的 ISP 供应商提供。不管怎样,这些这些域名解析服务器可能很慢,或者没有正常更新,导致有时候指向错误的 IP 地址,以至你不能解析你想要的域名。
还有一些免费的,公共的 DNS 域名解析服务器,它们很快,私密并且能正常更新。
下面是一个著名的公开 DNS 解析服务器:
- Google (8.8.8.8, 8.8.4.4)
- Cloudflare (1.1.1.1 and 1.0.0.1)
- OpenDNS (208.67.222.222, 208.67.220.220)
- Level3 (209.244.0.3, 209.244.0.4)
在这篇指南中,我们将会讲解如何在 Ubuntu 18.04 上配置 DNS 域名解析服务器。
一、在 Ubuntu 桌面版设置 DNS 域名解析服务器
在 Ubuntu 桌面版设置 DNS 域名解析服务器很简单,并且不需要任何技术知识。
01.打开设置窗口
02.如果你连接到了 WiFi 网络,点击“Wi-FI”标签栏。否则,如果你有一个有线连接,点击『Network』标签栏。
03.选择你要设置 DNS 的网络连接,并且点击齿轮状的按钮,打开网络管理器。
04.选择 IPv4 设置标签栏。
05.禁用自动开关,并且输入 DNS 的 IP 地址,用逗号隔开。我们使用 Google DNS 域名解析服务器。
06.点击“Apply”按钮,保存修改。
这个修改应该会立即有效,除非那些已经缓存了的 DNS 条目。
如果你想切换回旧的设置,打开网络管理器,IPv4 设置,并且启用自动开关。
二、在 Ubuntu 服务器版设置 DNS 域名解析服务器
在过去的日子里,不管你在那个 Linux 你想要设置 DNS 解析服务器时,你都会想简单打开/etc/resolv.conf
,编辑条目,保存,就搞定了。这个文件仍然存在,但是被 systemd 服务器接管了,并且不可以手动编辑。
systemd-resolved 是一个服务器,它提供了 本地 DNS 域名解决方案,并且可以通过Netplan来配置。Netplan 是 Ubuntu 18.04 上默认的网络管理工具。
Netplan 配置文件在/etc/netplan
目录下。你将会在这个目录下发现一两个 YAML 文件。这个文件与一步一步操作的不同。通常,文件被命名为01-netcfg.yaml
和50-cloud-init.yaml
,但是在你的系统中,可能会不一样。
这些文件允许你配置网络接口,包括 IP 地址,网关,DNS 域名解析服务器,等等。
想要配置 DNS 域名解析服务器,使用您的文本编辑器打开网络接口配置文件:
代码语言:javascript复制sudo nano /etc/netplan/01-netcfg.yaml
这个文件的内容看起来像下面这样:
代码语言:javascript复制network:
version: 2
renderer: networkd
ethernets:
ens3:
dhcp4: no
addresses:
- 192.168.121.199/24
gateway4: 192.168.121.1
nameservers:
addresses: [8.8.8.8, 8.8.4.4]
配置接口的 DNS 域名解析服务器,修改现在的 IP 地址到你喜欢的 DNS 服务器。例如,如果你想使用 Cloudflare 的 DNS 域名解析服务器,您可以将地址一行修改为:
代码语言:javascript复制 nameservers:
addresses: [1.1.1.1, 1.0.0.1]
DNS 域名解析服务器必须使用英文逗号分隔。你也可以添加两个或者更多的域名解析服务器。
如果这个条目不存在,将它添加到接口名配置块下。当编辑这个 Yaml 文件是,请确保你符合YAML 代码缩进标准。如果有语法错误,Netplan 将不能解析这个文件。
一旦设置完成,保存文件,并且应用修改:
代码语言:javascript复制sudo netplan apply
Netplan 将会位 systemd-resolved 服务生成配置文件。
想要验证新的 DNS 域名解析服务器是否被正确设置,运行下面的命令:
代码语言:javascript复制systemd-resolve --status | grep 'DNS Servers' -A2
systemd-resolve -status
打印出很多信息。我们使用grep
来顾虑『DNS Servers』字段。输出将会像下面这样:
DNS Servers: 1.1.1.1
1.0.0.1
三、总结
Netplan 是 Ubuntu 18.04 上的默认网络管理工具,替代了在以前 Ubuntu 版本上用来配置网络的/etc/resolv.conf
和/etc/network/interfaces
配置文件。