Linux之resolvectl命令管理系统DNS解析配置
Tags: DNSLinuxOSresolvectl缓存
简介
resolvectl是一个用于管理系统DNS解析配置的命令行工具,它通常与systemd-resolved服务一起使用。
Linux 中named 和dnsmasq 的区别是啥
named
和dnsmasq
是两种在Linux系统中常用的DNS服务器软件,它们在功能和用途上有一些区别:
- named(也称为BIND):
- named是一个功能强大的、广泛使用的DNS服务器软件。它是Internet上最常用的DNS软件之一,被用于管理大型网络和互联网域名解析。
- named支持完整的DNS功能,包括支持区域传输、反向解析、安全扩展(如DNSSEC)等。
- named可以作为一个权威DNS服务器,用于管理和提供域名解析服务,也可以作为一个递归DNS服务器,用于向客户端提供域名解析查询。
- dnsmasq:
- dnsmasq是一个轻量级的DNS服务器和DHCP服务器软件,它主要用于小型网络和家庭网络环境中。
- dnsmasq具有简单易用的特点,配置简单且占用资源较少。
- dnsmasq不支持权威DNS功能,主要用于提供本地区域网络(LAN)内的域名解析服务,为局域网上的设备提供DNS解析和DHCP服务。
总结来说,named是一个功能强大的、适用于大型网络和互联网的DNS服务器软件,而dnsmasq则是一个轻量级的、适用于小型网络和家庭网络的DNS服务器和DHCP服务器软件。选择使用哪个软件取决于您的网络规模和需求。如果您需要管理大型网络的域名解析或使用高级的DNS功能,named可能更适合。如果您只需要提供简单的本地区域网络的域名解析和DHCP服务,dnsmasq是一个简单和有效的选择。
named使用
1 2 3 4 5 6 | sudo apt-get update sudo apt-get install bind9 sudo yum install bind sudo systemctl status named |
dnsmasq使用
1 2 3 4 5 6 | sudo apt-get update sudo apt-get install dnsmasq sudo yum install dnsmasq sudo systemctl status dnsmasq |
安装resolvectl
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | sudo apt-get update sudo apt-get install systemd-resolved yum install systemd-resolved systemd-networkd systemctl restart systemd-resolved systemctl status systemd-resolved systemctl status systemd-networkd -- Ubuntu 、centos 8以上 resolvectl status resolvectl flush-caches networkctl status eth0 cat /etc/resolv.conf -- Ubuntu 17.04 或 18.04 systemd-resolved --flush-caches |
示例
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 | root@lhrubuntu2204:/# resolvectl status Global Protocols: -LLMNR -mDNS -DNSOverTLS DNSSEC=no/unsupported resolv.conf mode: foreign Current DNS Server: 114.114.114.114 DNS Servers: 114.114.114.114 8.8.8.8 Link 470 (eth0) Current Scopes: none Protocols: -DefaultRoute +LLMNR -mDNS -DNSOverTLS DNSSEC=no/unsupported root@lhrubuntu2204:/# cat /etc/resolv.conf nameserver 114.114.114.114 nameserver 8.8.8.8 root@lhrubuntu2204:/# vi /etc/resolv.conf root@lhrubuntu2204:/# root@lhrubuntu2204:/# root@lhrubuntu2204:/# root@lhrubuntu2204:/# resolvectl status Global Protocols: -LLMNR -mDNS -DNSOverTLS DNSSEC=no/unsupported resolv.conf mode: foreign Current DNS Server: 114.114.114.114 DNS Servers: 114.114.114.114 8.8.8.8 Link 470 (eth0) Current Scopes: none Protocols: -DefaultRoute +LLMNR -mDNS -DNSOverTLS DNSSEC=no/unsupported root@lhrubuntu2204:/# systemctl restart systemd-resolved root@lhrubuntu2204:/# systemctl status systemd-resolved ● systemd-resolved.service - Network Name Resolution Loaded: loaded (/lib/systemd/system/systemd-resolved.service; enabled; vendor preset: enabled) Active: active (running) since Sun 2023-06-25 09:19:15 CST; 1s ago Docs: man:systemd-resolved.service(8) man:org.freedesktop.resolve1(5) https://www.freedesktop.org/wiki/Software/systemd/writing-network-configuration-managers https://www.freedesktop.org/wiki/Software/systemd/writing-resolver-clients Main PID: 99387 (systemd-resolve) Status: "Processing requests..." Tasks: 1 (limit: 77088) Memory: 5.9M CGroup: /docker/4f609a31da331f84f6a782d07fcbb6dfb8d0d3939d4e54f18903821cea505e64/system.slice/systemd-resolved.service └─99387 /lib/systemd/systemd-resolved Jun 25 09:19:15 lhrubuntu2204 systemd[1]: Starting Network Name Resolution... Jun 25 09:19:15 lhrubuntu2204 systemd-resolved[99387]: Positive Trust Anchors: Jun 25 09:19:15 lhrubuntu2204 systemd-resolved[99387]: . IN DS 20326 8 2 e06d44b80b8f1d39a95c0b0d7c65d08458e880409bbc683457104237c7f8ec8d Jun 25 09:19:15 lhrubuntu2204 systemd-resolved[99387]: Negative trust anchors: home.arpa 10.in-addr.arpa 16.172.in-addr.arpa 17.172.in-addr.arpa 18.172.in-addr.arpa 19.172.in-addr.arpa 20.172.in-addr.arpa 21.172.in-addr.arpa 22.172.in-addr.arpa 23.172.in-addr.arpa 24.172.in-addr.arpa 25.172.in-addr.arpa 26.172.in-addr.arpa 27.172.in-addr.arpa 28.172.in-addr.arpa 29.172.in-addr.arpa 30.172.in-addr.arpa 31.172.in-addr.arpa 168.192.in-addr.arpa d.f.ip6.arpa corp home internal intranet lan local private test Jun 25 09:19:15 lhrubuntu2204 systemd-resolved[99387]: Using system hostname 'lhrubuntu2204'. Jun 25 09:19:15 lhrubuntu2204 systemd[1]: Started Network Name Resolution. root@lhrubuntu2204:/# resolvectl status Global Protocols: -LLMNR -mDNS -DNSOverTLS DNSSEC=no/unsupported resolv.conf mode: foreign Current DNS Server: 223.5.5.5 DNS Servers: 223.5.5.5 8.8.8.8 Link 470 (eth0) Current Scopes: none Protocols: -DefaultRoute +LLMNR -mDNS -DNSOverTLS DNSSEC=no/unsupported |
删除 dnsmasq DNS 缓存
刷新 dnsmasq 生成的 DNS 缓存很简单。由于缓存存储在内存中,因此重新启动服务会删除所有存储的条目。
要重新启动 dnsmasq,请运行以下 systemctl 命令:
1 | sudo systemctl restart dnsmasq |
或者,发出以下命令:
1 | service dnsmasq restart |
如果出现提示,请输入管理员密码。dnsmasq 现在将重新启动,所有现有的 DNS 条目将从缓存中删除。
刷新 DNS 缓存后,最好查看本地缓存条目并验证数据是否已成功删除。您可以使用 dig(许多网络故障排除 Linux 命令之一),并检查输出中的“查询时间”值。如果超过 0 毫秒,则缓存已成功清除(0 毫秒表示域记录仍在缓存中)。
1 | dig google.com |
清除谷歌浏览器的DNS缓存
您经常使用的 Web 浏览器也会缓存 DNS 记录。输入 URL 时,系统会在本地浏览器缓存中搜索缓存条目。如果未找到,它将检查本地系统缓存中的记录。清除 Web 浏览器的 DNS 缓存至关重要,因为它的优先级高于系统范围的缓存。
为了演示,让我们刷新谷歌浏览器中的DNS缓存。在其他浏览器上也有一些方法可以做到这一点,所以最好 Google 一下如何使用你使用的浏览器做到这一点。
首先,在URL栏中键入“chrome://net-internals/#dns”并按Enter键:
单击清除主机缓存 Clear host cache 以清除存储在谷歌浏览器中的DNS条目。
详解
名称
resolvectl, resolvconf — 解析主机名、IP地址、域名、DNS资源记录、服务;内省及重新配置DNS解析器
大纲
resolvectl
[OPTIONS...] {COMMAND} [NAME...]
描述
resolvectl 利用 systemd-resolved.service(8) 系统服务解析主机名、IP地址、域名、DNS资源记录、服务。 默认情况下,参数列表将被视为域名/主机名的列表,程序的输出将是它们所对应的 IPv4 或 IPv6 地址。 如果参数符合 IPv4 或 IPv6 格式,那么表示反解析IP地址所对应的主机名。
程序的输出包括查找所使用的协议与网络接口, 还包括查找到的信息是否是可靠的。 所有通过 DNSSEC 认证的信息将被认为是可靠的, 所有从本地可信源获取的信息也被认为是可靠的, 包括对本机主机名的解析、特殊的 "localhost
" 主机名、所有来自 /etc/hosts
中的结果。
选项(OPTIONS)
-4
,-6
在解析主机名时,默认同时查询 IPv4 与 IPv6 地址。 使用
-4
表示仅查询 IPv4 地址, 使用-6
表示仅查询 IPv6 地址。-i
INTERFACE
,--interface=
INTERFACE
指定使用哪个网络接口。 可以使用网卡的数字序号,也可以使用例如 "
en0
" 这样的网卡名称。 注意,在使用全局DNS(位于/etc/resolv.conf
或/etc/systemd/resolve.conf
)的时候,此选项没有效果。-p
PROTOCOL
,--protocol=
PROTOCOL
指定查询所用的协议。可以设为下列值之一: "
dns
"(经典的单播DNS)、 "llmnr
" (链路本地多播名称解析(Link-Local Multicast Name Resolution))、 "llmnr-ipv4
"(IPv4上的LLMNR)、 "llmnr-ipv6
"(IPv6上的LLMNR)、 "mdns
" (多播DNS(Multicast DNS)), "mdns-ipv4
"(IPv4上的MDNS)、 "mdns-ipv6
"(IPv6上的MDNS) 。 默认使用所有适合的协议。 可以多次使用此选项以指定多个查询协议。 注意:(1)设置 "llmnr
" 等价于同时设置 "llmnr-ipv4
" 与 "llmnr-ipv6
" ; (2)此选项并不表示必须强制使用指定的查询协议, 因为某个必需的网络接口与相应的配置可能并不存在; (3)特殊值 "help
" 可用于列出所有可用的协议。-t
TYPE
,--type=
TYPE
,-c
CLASS
,--class=
CLASS
指定查找的DNS资源记录的 type(A, AAAA, MX, …) 与 class(IN, ANY, …)。 如果使用了此选项,那么仅查询与指定的 type/class 匹配的DNS资源记录。 如果仅指定了 type 的话,那么 class 的默认值是"IN"。 特殊值 "
help
" 可用于列出所有可用的值。--service-address=
BOOL
默认值 yes 表示在使用
--service
查找服务时,同时也解析包含在 SRV 资源记录内的主机名。--service-txt=
BOOL
默认值 yes 表示在使用
--service
查找 DNS-SD 服务时,同时也解析 TXT 服务元数据记录。--cname=
BOOL
默认值 yes 表示追踪 DNS 的 CNAME 或 DNAME 重定向。 否则,在接收到 CNAME 或 DNAME 应答后, 直接返回错误。
--search=
BOOL
默认值 yes 表示 所有不含"."的主机名 都将在搜索域列表(若非空)中进行搜索。
本人提供Oracle(OCP、OCM)、MySQL(OCP)、PostgreSQL(PGCA、PGCE、PGCM)等数据库的培训和考证业务,私聊QQ646634621或微信db_bao,谢谢!