[翻译]systemd-resolved

URL:https://www.freedesktop.org/software/systemd/man/systemd-resolved.service.html

网络名称解析管理器 systemd-resolved.service

systemd-resolved是一项系统服务,可为本地应用程序提供网络名称解析。它实现了缓存和验证DNS / DNSSEC存根解析器以及LLMNR和MulticastDNS解析器和响应器。本地应用程序可以通过三个接口提交网络名称解析请求:

  1. 系统解析的本机,功能齐全的API 在总线上公开。有关详细信息,请参见 API文档。通常建议客户端使用此API,因为它是异步的且功能齐全(例如,为支持本地链接网络而正确返回DNSSEC验证状态和地址的接口范围)。
  2. RFC3493定义的glibc getaddrinfo(3) API 及其相关的解析程序功能,包括gethostbyname(3)。该API得到了广泛的支持,包括Linux平台之外的其他支持。当前,它不公开DNSSEC验证状态信息,并且仅是同步的。此API由glibc名称服务开关(nss(5))支持。 为了允许glibc的NSS解析器功能通过systemd-resolved解析主机名,需要 使用glibc NSS模块nss-resolve(8)
  3. 此外,systemd-resolved在本地回送接口上的IP地址127.0.0.53上提供了本地DNS存根侦听器。直接绕过任何本地API发出DNS请求的程序可以定向到此存根,以便将它们连接到systemd-resolved。但是请注意,强烈建议本地程序改用glibc NSS或总线API(如上所述),因为各种网络解析概念(例如链接本地寻址或LLMNR Unicode域)无法映射到单播DNS协议。

联系的DNS服务器由以下各项中的全局设置确定: 文件中/etc/systemd/resolved.conf的每个链接静态设置 /etc/systemd/network/*.network(如果使用 systemd-networkd.service(8)),通过DHCP接收的每个链接动态设置,通过resolvectl发出的用户请求 (1),以及其他系统服务可用的任何DNS服务器信息。见 resolved.conf(5)和 systemd.network(5)有关DNS服务器systemd自己的配置文件的详细信息。为了提高兼容性, /etc/resolv.conf为了发现已配置的系统DNS服务器,必须对其进行读取,但前提是它不是指向或的符号链接/run/systemd/resolve/stub-resolv.conf。 /usr/lib/systemd/resolv.conf/run/systemd/resolve/resolv.conf (见下文)。

综合纪录

在以下情况下, systemd解析会合成DNS资源记录(RR):

  • 本地配置的主机名将解析为按其作用域排序的所有本地配置的IP地址,或者-如果未配置,则为IPv4地址127.0.0.2(位于本地环回上)和IPv6地址:: 1(即本地主机)。
  • 主机名“ localhost”和“ localhost.localdomain”(以及任何以“ .localhost”或“ .localhost.localdomain” 结尾的主机名)被解析为IP地址127.0.0.1和:: 1。
  • 主机名“ _gateway”解析为所有当前默认路由网关地址,按其度量标准排序。这将为当前网关分配一个稳定的主机名,对于独立于当前网络配置状态引用该主机名很有用。
  • 在中定义的映射/etc/hosts将解析为其配置的地址并返回,但它们不会影响非地址类型(如MX)的查找。

协议和路由

根据以下规则,查找请求将路由到可用的DNS服务器,LLMNR和MulticastDNS接口:

  • 特殊主机名“ localhost”的查找永远不会路由到网络。(其他一些特殊域的处理方式也相同。)
  • 使用LLMNR协议,将单标签名称路由到所有能够进行IP多播的本地接口。仅通过IPv4上的LLMNR发送对IPv4地址的查找,而仅通过IPv6上的LLMNR发送IPv6地址的查找。本地配置的主机名和“ _gateway”主机名的查找永远不会路由到LLMNR。
  • .local使用MulticastDNS协议,将带有后缀“ ”的多标签名称路由到所有能够进行IP多播的本地接口。与LLMNR一样,IPv4地址查找通过IPv4发送,而IPv6地址查找通过IPv6发送。
  • 其他多标签名称将路由到配置了DNS服务器的所有本地接口,如果存在则将路由到全局配置的DNS服务器。从链接本地地址范围进行的地址查找永远不会路由到DNS。请注意,默认情况下,带有.local后缀“ ”的域的查找不会路由到DNS服务器,除非该域被明确指定为DNS服务器和接口的路由或搜索域。这意味着,在.local站点特定的DNS服务器中定义了“ ”域的网络上,需要配置显式搜索或路由域,以使在此DNS域中的查找有效。请注意,今天通常建议避免.local在DNS服务器中定义“ ”,如RFC6762 保留此域供MulticastDNS专用。

如果将查找路由到多个接口,则返回第一个成功的响应(从而有效地合并所有匹配接口上的查找区域)。如果在所有接口上查找失败,则返回最后一个失败的响应。

查找的路由可能会受到配置每个接口的域名和其他设置的影响。有关详细信息,请参见 systemd.network(5)和 resolvectl(1)。以下查询路由逻辑适用于单播DNS通信:

  • 如果要查找的名称匹配(即:等于或具有后缀)的任何链接的任何已配置搜索或仅路由域(或全局配置的DNS设置),则“最佳匹配”搜索/路由-仅确定域:标签最多的匹配域。然后将查询发送到任何链接的所有DNS服务器或与此“最佳匹配”仅搜索/路由域关联的全局配置的DNS服务器。(请注意,多个链接可能配置了相同的“最佳匹配”搜索/仅路由域,在这种情况下,查询将并行发送给所有它们)。
  • 如果查询与任何已配置的仅搜索/仅路由域(既不是每个链接也不是全局)都不匹配,则它将被发送到在“ DNS默认路由”选项集的链接上配置的所有DNS服务器以及全局配置的DNS服务器。
  • 如果没有将链接配置为“ DNS默认路由”,也没有配置全局DNS服务器,则使用嵌入式后备DNS服务器。
  • 否则,查询将失败,因为无法确定合适的DNS服务器。

“ DNS默认路由”选项是可使用resolvectl或在 .network文件中配置的布尔设置。如果未设置,则根据为链接配置的DNS域隐式确定:如果有任何仅路由域(不匹配“ ~.”),则默认为false,否则为true。

实际上,这意味着:为了将所有未与仅搜索/仅路由域配置明确匹配的DNS查询路由到特定链接,请在其上配置“ ~.仅路由” 域。这将确保不会为查询考虑其他链接(除非它们也带有此类仅路由域)。为了仅在没有其他链接可取的情况下将所有此类DNS查询路由到特定链接,请将该链接的“ DNS默认路由”选项设置为true,并且不要~.在其上配置“ 仅路由” 域。最后,为了确保特定链接永远不会收到与任何其配置的仅搜索/路由域都不匹配的DNS流量,请将其“ DNS默认路由”选项设置为false。

有关API 提供的信息,请参阅已解析的D-Bus API文档systemd-resolved

/etc/resolv.conf

支持四种处理方式/etc/resolv.conf(请参阅 resolv.conf(5)):

  • systemd-resolved维护 /run/systemd/resolve/stub-resolv.conf文件以与传统Linux程序兼容。该文件可能是从链接的/etc/resolv.conf。此文件将127.0.0.53 DNS存根(请参见上文)列出为唯一的DNS服务器。它还包含由systemd-resolved使用的搜索域列表。搜索域列表始终保持最新。请注意, /run/systemd/resolve/stub-resolv.conf应用程序不应直接使用,而只能通过的符号链接使用/etc/resolv.conf/etc/resolv.conf为了连接所有绕过本地DNS API的本地客户 端到具有正确搜索域设置的 systemd-resolved,可以对该文件进行符号链接 。建议使用此操作模式。
  • 提供了一个静态文件/usr/lib/systemd/resolv.conf,该文件列出了127.0.0.53 DNS存根(请参阅上文)作为唯一的DNS服务器。/etc/resolv.conf为了将绕过本地DNS API的所有本地客户端连接到 systemd-resolved,可以对该文件进行符号链接 。该文件不包含任何搜索域。
  • systemd-resolved维护 /run/systemd/resolve/resolv.conf文件以与传统Linux程序兼容。该文件可能是从符号链接的,/etc/resolv.conf并且始终保持最新状态,其中包含有关所有已知DNS服务器的信息。请注意文件格式的局限性:它不了解每接口DNS服务器的概念,因此仅包含系统范围的DNS服务器定义。请注意, /run/systemd/resolve/resolv.conf应用程序不应直接使用,而只能通过的符号链接使用/etc/resolv.conf。如果使用此操作模式,则绕过任何本地DNS API的本地客户端也将绕过 systemd-resolved,并将直接与已知的DNS服务器通信。
  • 或者,/etc/resolv.conf可以由其他程序包管理,在这种情况下,systemd-resolved将读取该数据包以获取DNS配置数据。在这种操作方式下, systemd-resolved是该配置文件的使用者而不是提供者。

请注意,此文件的所选操作模式是完全自动检测到的,具体取决于是否 /etc/resolv.conf将符号链接指向/run/systemd/resolve/resolv.conf127.0.0.53或将其列为DNS服务器。

Signals

SIGUSR1

收到systemd-resolvedSIGUSR1过程信号后, 系统会将其维护的所有DNS资源记录缓存的内容以及它从已配置的DNS服务器中学到的所有功能级别信息都转储到系统日志中。SIGUSR2

收到SIGUSR2过程信号 systemd-resolved后,将刷新其维护的所有缓存。请注意,除调试目的外,通常不需要显式地请求此请求,因为无论何时 主机的网络配置发生更改,systemd-resolved都会自动刷新缓存。发送此信号到systemd-resolved等效于resolvectl flush-caches 命令,但是建议使用后者,因为它以同步方式运行。SIGRTMIN+1

收到SIGRTMIN+1过程信号 systemd-resolved时,将忘记它所了解的有关已配置DNS服务器的所有信息。具体来说,会清除有关服务器功能支持的所有信息,并在下一个请求(从功能最全的级别开始)起重新启动服务器功能探测逻辑。请注意,除调试目的外,通常无需显式请求此请求,因为在DNS服务器配置更改时, systemd-resolved会自动忘记学习的信息。发送此信号到systemd-resolved等效于 resolvectl reset-server-features 命令,但是建议使用后者,因为它以同步方式运行。

[推荐]网络加速器

推荐两个一直在用的网络加速器:

1. 一枝红杏

用了四年,也被墙过,但一直更新。比一些续了一年就挂了靠谱多了。双十二有7折优惠(入门级套餐年付7折后69元,每月50G,11个节点)。 是个小而美的SS加速器 。

支持续费, 账号续费的形式。

试用活动下架了。邀请链接

2. 布丁

最近看到有活动,5折(最低的年付套餐5折后 44元,每月128G,12个节点),测试速度不错,是个小而美的V2ray加速器。

每月更新订阅的形式。流量包套餐的形式。

感兴趣的还有1元的试用套餐,试用好像快下架了。邀请链接

浙大校园网ZJUWLAN连接后VMWare虚拟机域名解析失败

如题,浙大校园网ZJUWLAN连接后VMWare虚拟机,可以ping通外网,但域名解析失败。

ping 233.5.5.5 // ok

ping www.baidu.com //error

解决方法,修改虚拟机DNS,示例如下:

$ cat /etc/network/interfaces
# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).

source /etc/network/interfaces.d/*

# The loopback network interface
auto lo
iface lo inet loopback

# The primary network interface
auto ens33
iface ens33 inet static 
        address 192.168.237.112
        gateway 192.168.237.2
        netmask 255.255.255.0
        network 192.168.237.0
        broadcast 192.168.237.255
        dns-nameservers 10.10.0.21

将dns-nameservers改为10.10.0.21,使用校园网的DNS服务器。

树莓派Raspberry Pi 4连接浙江大学有线网络ZJUVPN

之前购买了树莓派4,最近有空捣鼓一下。树莓派4有1个千兆网线接口,在浙江大学西溪校区学校宿舍连接校园有线网络需要连接ZJUVPN,网络中心只提供了CentOS amd64的客户端安装包,看来要自己捣鼓一下了。连接有线网络后,可以将无线网卡改为AP模式,开启热点供多设备使用。

希望能帮到有同样需要的同学。记录重要的步骤。

预准备

这里罗列整理了一些零散的材料:

申请IP

微信公众号:浙大学生公寓管理服务中心

登录并选择下面的iHome,选择IP地址申请,需要填一下你的MAC地址。

配置IP地址

  • IP地址
  • 网络掩码
  • 网关
  • DNS地址

连接有线网络

需要安装xl2tpd,后来我才搜到GitHub zjunet - Command Line Scripts for ZJU (VPN / WLAN / DNS),感觉很方便。我原来是按照Gist 浙江大学 VPN 及 ZJUWLAN 网络配置配置的。