dns服务器配置无域名的主机名解析及域名带.local 的测试情况如下
1 不支持dns无域名主机名解析
2 域名.local 结尾的也不支持
当双方主机都开启LLMNR=yes MulticastDNS=yes的情况下,可以ping通主机域名,走的llmnr链路本地多播名称解析
cat /etc/systemd/resolved.conf
[Resolve]
#DNS=
#FallbackDNS=
#Domains=
#LLMNR=no
#MulticastDNS=no
#DNSSEC=no
#DNSOverTLS=no
#Cache=yes
#DNSStubListener=yes
#ReadEtcHosts=yes
DNS=
:指定用作主要解析器的 DNS 服务器。可以指定多个服务器,用空格分隔。如果此项留空,systemd-resolved
将使用它从 systemd-networkd 或 NetworkManager 学到的 DNS 服务器。FallbackDNS=
:指定用作备用解析器的 DNS 服务器,如果主要解析器无法响应。可以指定多个服务器,用空格分隔。DNSSEC=
:如果设置为yes
,systemd-resolved
将使用 DNSSEC 验证 DNS 响应。如果设置为no
,则禁用 DNSSEC 验证。DNSOverTLS=
:如果设置为yes
,systemd-resolved
将使用 DNS over TLS 与 DNS 服务器通信。这为 DNS 请求提供了隐私保护。MulticastDNS=
和LLMNR=
:分别控制使用多播 DNS 和链路本地多播名称解析。如果设置为yes
,systemd-resolved
将使用这些协议解析本地网络名称。Cache=
:控制 DNS 缓存。如果设置为yes
,systemd-resolved
将缓存 DNS 响应以加快后续请求的速度。ReadEtcHosts=
:如果设置为yes
,systemd-resolved
将读取/etc/hosts
文件。
合成记录(Synthetic Record)
systemd-resolved
- 本机的主机名将按如下规则解析: 如果配置了本机IP地址, 那么将被解析为所有本机IP地址(按范围排序)。 如果不存在本机IP地址, 那么将被解析为本地回环上的 127.0.0.2 与 ::1
- "
localhost
" 与 "localhost.localdomain
" 以及所有以 ".localhost
" 或 ".localhost.localdomain
" 结尾的主机名, 都将被解析为 127.0.0.1 与 ::1 - "
_gateway
" 将被解析为所有当前路由表中的默认网关IP地址(按数字大小排序)。 通过给网关分配一个固定的名称, 方便了应用程序对网关地址的引用, 应用程序不再需要关心网络的具体配置。 - 在
/etc/hosts
中定义的映射关系(正向解析与反向解析)。 不过需要注意的是, 这些映射关系对非IP地址类解析(例如MX记录)无效。
协议与路由
在将查询请求路由到DNS服务器、LLMNR 与 MulticastDNS 接口时, 遵守下面的规则:
- 对 "
localhost
" 系列特殊域名的查询 永远不会路由到网络上去。 - 单标签主机名(不含"."的主机名)使用LLMNR协议路由到所有支持IP多播的本地接口。
对 IPv4 地址的查询只通过 LLMNR 在 IPv4 上查询;对 IPv6 地址的查询只通过 LLMNR 在 IPv6 上查询。
对本机的主机名、"
_gateway
" 以及/etc/hosts
中定义的域名的查询 永远不会路由到 LLMNR 接口。 - 带有 "
.local
" 后缀的多标签主机名(含有"."的主机名)使用多播DNS(MulticastDNS)协议 路由到所有支持IP多播的本地接口。 与 LLMNR 一样,IPv4 地址只在 IPv4 上查询;IPv6 地址只在 IPv6 上查询。 - 其他多标签主机名(含有"."的主机名)使用DNS协议路由到所有配置了DNS服务器的本地接口。
如果配置了全局DNS服务器,那么还会路由到全局DNS服务器。从 link-local 地址范围发起的查询永远不会路由到DNS服务器。
默认情况下,除非 "
.local
" 被显式的指定为DNS服务器和网络接口的路由域或搜索域, 否则不会将带有 ".local
" 后缀的主机名路由到DNS服务器。 这意味着,如果在特定网络环境中的DNS服务器中定义了 ".local
" 域, 那么就必须显式的配置搜索域或路由域,以确保可以正常在此DNS域中进行查找。 注意,应该避免在DNS服务器中定义 ".local
" 域, 因为 RFC6762 已将此域专门保留给 多播DNS(MulticastDNS)使用。