配置方法
Ubuntu 22.04
Ubuntu 22.04 使用 systemd-resolved
作为默认的 DNS 解析服务,它与传统的 /etc/resolv.conf
文件结合使用,但其配置主要通过其他文件进行管理。
-
/etc/systemd/resolved.conf
:- 这是
systemd-resolved
的主要配置文件。 - 可以在这里设置全局 DNS 服务器、搜索域等信息。
- 修改后需要重启
systemd-resolved
服务:sudo systemctl restart systemd-resolved
- 这是
-
/etc/netplan/*.yaml
(Netplan 配置文件):- Netplan 是 Ubuntu 用于网络配置的新工具,它读取 YAML 格式的配置文件并应用相应的网络设置。
- 在这些文件中可以指定静态 IP 地址、网关、DNS 服务器等。
- 修改后需要运行
sudo netplan apply
来应用更改。
-
/etc/resolv.conf
:- 这个文件通常是一个符号链接,指向
/run/systemd/resolve/stub-resolv.conf
或/run/systemd/resolve/resolv.conf
。 - 它由
systemd-resolved
动态生成,不建议直接编辑。
- 这个文件通常是一个符号链接,指向
-
NetworkManager(如果启用):
- 如果你使用 NetworkManager 管理网络连接,可以通过它的图形界面或命令行工具来配置 DNS 设置。
- NetworkManager 的配置文件通常位于
/etc/NetworkManager/conf.d/
或/etc/NetworkManager/NetworkManager.conf
。
CentOS 7
CentOS 7 默认使用 NetworkManager 来管理网络配置,包括 DNS 设置。它依赖于传统的 /etc/resolv.conf
文件,并且没有像 systemd-resolved
这样的独立解析服务。
-
/etc/resolv.conf
:- 这是主要的 DNS 配置文件,直接包含了 DNS 服务器和搜索域的信息。
- 虽然可以直接编辑此文件,但推荐通过 NetworkManager 或者其他网络配置工具来修改 DNS 设置,以确保配置的一致性和持久性。
-
/etc/sysconfig/network-scripts/ifcfg-<interface>
:- 每个网络接口都有一个对应的配置文件,在这里可以指定静态 IP 地址、网关以及 DNS 服务器(通过
DNS1
,DNS2
等参数)。 - 修改后需要重启网络服务:
sudo systemctl restart network
- 每个网络接口都有一个对应的配置文件,在这里可以指定静态 IP 地址、网关以及 DNS 服务器(通过
-
NetworkManager:
- 类似于 Ubuntu,如果你使用 NetworkManager,可以通过它的图形界面或命令行工具来配置 DNS 设置。
- NetworkManager 的配置文件位于
/etc/NetworkManager/
目录下。
区别总结
-
DNS 解析服务:
- Ubuntu 22.04 使用
systemd-resolved
,而 CentOS 7 主要依赖于 NetworkManager 和/etc/resolv.conf
。
- Ubuntu 22.04 使用
-
主要配置文件:
- Ubuntu 22.04 的 DNS 配置集中在
systemd-resolved
和 Netplan 上,而 CentOS 7 则更多地依赖于/etc/resolv.conf
和 NetworkManager 的配置文件。
- Ubuntu 22.04 的 DNS 配置集中在
-
动态 vs 静态配置:
- Ubuntu 22.04 的
/etc/resolv.conf
是动态生成的,不应手动编辑;而 CentOS 7 的/etc/resolv.conf
更加静态,虽然也可以动态更新,但更常见的是直接编辑。
- Ubuntu 22.04 的
-
网络配置工具:
- Ubuntu 22.04 推荐使用 Netplan 来配置网络设置,包括 DNS;而 CentOS 7 传统上依赖于
/etc/sysconfig/network-scripts/
下的配置文件。
- Ubuntu 22.04 推荐使用 Netplan 来配置网络设置,包括 DNS;而 CentOS 7 传统上依赖于
常用命令
resolvectl
适用于使用 systemd-resolved
的系统,如 Ubuntu 22.04
显示所有网络接口的 DNS 配置
resolvectl status
root@wenzi:~# resolvectl status
Global
Protocols: -LLMNR -mDNS -DNSOverTLS DNSSEC=no/unsupported
resolv.conf mode: stub
Link 2 (ens33)
Current Scopes: DNS
Protocols: +DefaultRoute +LLMNR -mDNS -DNSOverTLS DNSSEC=no/unsupported
Current DNS Server: 223.5.5.5
DNS Servers: 223.5.5.5 8.8.8.8
查询域名的 A 记录
resolvectl query example.com
root@wenzi:~# resolvectl query www.baidu.com
www.baidu.com: 240e:e9:6002:15c:0:ff:b015:146f -- link: ens33
240e:e9:6002:15a:0:ff:b05c:1278 -- link: ens33
180.101.50.188 -- link: ens33
180.101.50.242 -- link: ens33
(www.a.shifen.com)
显示指定接口的 DNS 配置
resolvectl dns eth0
root@wenzi:~# resolvectl dns ens33
Link 2 (ens33): 223.5.5.5 8.8.8.8
nslookup
查询域名对应的 IP 地址
nslookup example.com
指定 DNS 服务器进行查询
nslookup example.com 8.8.8.8
dig
简单 A 记录查询
dig example.com A
使用特定的 DNS 服务器查询
dig @8.8.8.8 example.com
反向 DNS 查找(通过 IP 查域名)
dig -x 93.184.216.34
host
基本域名解析
host example.com
使用指定的 DNS 服务器
host example.com 8.8.8.8
反向查找 IP 地址对应的主机名
host 93.184.216.34