linux网络服务:网络名称解析管理器,提供系统级的DNS缓存服务,并管理网络连接和DNS解析的服务systemd-resolved详解

目录

一、概述

二、功能特点

[1. DNS 缓存](#1. DNS 缓存)

[2. DNS 服务器管理](#2. DNS 服务器管理)

[3. 域名搜索列表](#3. 域名搜索列表)

[4. 域名解析](#4. 域名解析)

[5. LLMNR解析](#5. LLMNR解析)

[6. IPv6 支持](#6. IPv6 支持)

[7. 统一的 /etc/resolv.conf 文件](#7. 统一的 /etc/resolv.conf 文件)

三、安装与配置

[1. 安装](#1. 安装)

[2. 配置](#2. 配置)

四、状态与启动配置

[五、使用 resolvectl](#五、使用 resolvectl)

1、查看状态

[2、设置 DNS 服务器](#2、设置 DNS 服务器)

3、设置域名搜索列表

4、刷新缓存

六、服务管理

[1. 启动与停止](#1. 启动与停止)

[2. 启用与禁用](#2. 启用与禁用)

七、缓存管理

[1. 查看缓存](#1. 查看缓存)

[2. 刷新缓存](#2. 刷新缓存)

八、优点与适用场景

[1. 高效性](#1. 高效性)

[2. 稳定性](#2. 稳定性)

[3. 可配置性](#3. 可配置性)

[4. 安全性](#4. 安全性)

九、注意事项


一、概述

systemd-resolved 是一个由 systemd 提供的 DNS 解析器守护进程,它旨在提高系统的 DNS 解析性能,并为用户提供更多的配置选项。systemd-resolved 可以作为一个本地 DNS 缓存,它会缓存 DNS 查询结果以减少对外部 DNS 服务器的请求次数,从而加快 DNS 解析速度并减轻外部服务器的负载。

二、功能特点

1. DNS 缓存

systemd-resolved 可以作为本地 DNS 缓存,存储最近查询过的域名及其 IP 地址,以加速后续的查询速度。

2. DNS 服务器管理

用户可以通过 resolvectl 工具来管理 DNS 服务器列表,如添加或移除 DNS 服务器地址。

3. 域名搜索列表

用户可以配置域名搜索列表,当查询的域名没有包含顶级域(TLD)时,默认会在这些域名后面附加进行查找。

4. 域名解析

作为网络名称解析管理器,systemd-resolved负责处理DNS解析请求,将域名解析为IP地址。

5. LLMNR解析

除了DNS解析外,systemd-resolved还支持LLMNR(本地链路多播名称解析)解析,这有助于在本地网络上解析主机名。

6. IPv6 支持

systemd-resolved 支持 IPv6 DNS 记录的解析。

7. 统一的 /etc/resolv.conf 文件

为了简化 /etc/resolv.conf 文件的维护,systemd-resolved 会生成一个指向实际解析器配置的符号链接。这意味着 /etc/resolv.conf 文件不应该直接编辑,而是通过 systemd-resolved 来管理。

三、安装与配置

1. 安装

在CentOS 7等较早的Linux发行版中,systemd-resolved可能不是默认安装的。此时,可以使用yum或dnf等包管理器进行安装。例如,在CentOS 7上,可以使用以下命令安装systemd-resolved:

更新yum数据库:sudo yum makecache

安装systemd-resolved:sudo yum -y install systemd-resolved

而在Fedora、Ubuntu等较新的Linux发行版中,systemd-resolved通常是默认安装的。

2. 配置

systemd-resolved的配置文件通常位于/etc/systemd/resolved.conf。可以通过编辑此文件来更改DNS服务器、DNSSEC设置等。修改配置文件后,需要重启systemd-resolved服务以使更改生效。

四、状态与启动配置

systemd-resolved 服务通常在现代 Linux 发行版中默认启用。可以通过下面的命令来查看它的状态:

$ systemctl status systemd-resolved.service

实际操作如下:
查看服务是否启动

如果服务没有启动,可以通过以下命令来启动并设置开机启动:

$ sudo systemctl start systemd-resolved

$ sudo systemctl enable systemd-resolved

五、使用 resolvectl

resolvectl 是用来与 systemd-resolved 交互的主要工具,可以使用它来执行以下操作:

1、查看状态

使用如下命令:

$ resolvectl status

实际操作如下:
查看状态

2、设置 DNS 服务器

使用如下命令:

$ resolvectl dns <interface> <ip_address>

3、设置域名搜索列表

使用如下命令:

$ resolvectl domain <interface> <domain>

4、刷新缓存

使用如下命令:

$ resolvectl flush-caches

实际操作如下图所示:
刷新缓存

六、服务管理

1. 启动与停止

可以使用systemctl命令来启动、停止和重启systemd-resolved服务。例如:

启动服务:sudo systemctl start systemd-resolved

停止服务:sudo systemctl stop systemd-resolved

重启服务:sudo systemctl restart systemd-resolved

2. 启用与禁用

可以使用systemctl命令来启用或禁用systemd-resolved服务的自动启动。例如:

启用自动启动:sudo systemctl enable systemd-resolved

禁用自动启动:sudo systemctl disable systemd-resolved

七、缓存管理

1. 查看缓存

可以使用resolvectl status命令来查看当前的DNS缓存状态,包括已解析的域名和对应的IP地址等。如下图所示:
查看DNS缓存

2. 刷新缓存

当DNS缓存中的记录过期或存在错误时,需要刷新缓存。可以使用sudo systemctl restart systemd-resolved命令来重启服务并清空DNS缓存,或者使用sudo resolvectl flush-caches命令来直接刷新缓存。操作如下图所示:
刷新DNS缓存

八、优点与适用场景

1. 高效性

systemd-resolved使用更高效的DNS解析算法,可以提高域名解析的速度。

2. 稳定性

systemd-resolved具有更好的稳定性,可以避免一些网络连接问题。

3. 可配置性

systemd-resolved提供了更多的配置选项,可以更好地满足用户的需求。

4. 安全性

systemd-resolved具有更好的安全性,可以保护用户的隐私和数据安全。

九、注意事项

虽然 systemd-resolved 提供了许多优点,但在某些情况下,例如在需要更细粒度的 DNS 控制或者与其他 DNS 客户端/守护进程冲突的情况下,可能需要禁用它。禁用 systemd-resolved 可以通过下面的命令完成:

$ sudo systemctl stop systemd-resolved

$ sudo systemctl disable systemd-resolved

systemd-resolved服务适用于需要高效、稳定、可配置和安全的DNS解析服务的Linux系统。特别是在那些默认安装了systemd的Linux发行版中,systemd-resolved已成为网络名称解析的标准解决方案。

总的来说,systemd-resolved 是一个强大的工具,它可以帮助优化系统的 DNS 解析性能,并提供了一个统一的接口来管理 DNS 相关的配置。


文章正下方可以看到我的联系方式:鼠标"点击" 下面的 "威迪斯特-就是video system 微信名片"字样,就会出现我的二维码,欢迎沟通探讨。


相关推荐
Zmxcl-0076 分钟前
IIS解析漏洞
服务器·数据库·microsoft
Stark、6 分钟前
【Linux】文件IO--fcntl/lseek/阻塞与非阻塞/文件偏移
linux·运维·服务器·c语言·后端
vortex58 分钟前
Burp与其他安全工具联动及代理设置教程
网络·安全
新手上路狂踩坑1 小时前
Android Studio的笔记--BusyBox相关
android·linux·笔记·android studio·busybox
xserver21 小时前
ensp 基于端口安全的财务部网络组建
网络·安全
kong79069282 小时前
电商项目-网站首页高可用(二)
缓存·二级缓存·网站首页高可用
一个不秃头的 程序员2 小时前
服务器上加入SFTP------(小白篇 1)
运维·服务器
fnd_LN2 小时前
Linux文件目录 --- 复制命令CP、递归复制目录、软连接、硬链接
linux·运维·服务器
MorleyOlsen2 小时前
【Trick】解决服务器cuda报错——RuntimeError: cuDNN error: CUDNN_STATUS_NOT_INITIALIZED
运维·服务器·深度学习
周周的奇妙编程2 小时前
基于鲲鹏服务器的打砖块小游戏部署
运维·服务器