You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

关于/etc/systemd/resolved.conf中DNS=设置里man手册格式address#server_name的含义问询

关于/etc/systemd/resolved.conf中DNS=设置里man手册格式address#server_name的含义问询

嘿,我来帮你把这个点掰扯清楚——systemd-resolved里DNS=配置项的address#server_name格式,其实是专门为DNS Over TLS(DoT)场景设计的,man手册的表述确实有点太简洁,容易让人摸不着头脑。

先直接给你答案:你理解的DNS=Server_IP#FQDN是完全正确的,比如你举的DNS=123.456.78.9#www.example.com(不过这里建议用DNS服务器专属的FQDN,比如dns.example.com会更合理,只要和你Unbound服务器证书里的域名一致就行)。

接下来拆解这个格式里每个部分的作用:

  • address:就是你Unbound DNS服务器的公网IP地址,直接指定IP是为了避免“先解析DNS服务器域名才能用DoT”的死循环问题。
  • #:纯粹是分隔符,用来把IP地址和后面的服务器域名明确分开,让systemd-resolved能准确识别两个字段。
  • server_name:这是DoT安全验证的核心——当开启DNSOverTLS=yes时,systemd-resolved会向指定IP发起TLS连接,然后检查服务器返回的SSL证书里的域名是否和这个server_name完全匹配,以此确认你连接的是真正属于你的Unbound服务器,而不是被篡改的伪装节点。

给你补充几个关键注意点:

  • 如果只写IP不跟#server_name,开启DoT后大概率会失败,因为systemd-resolved会尝试用IP地址去验证证书,但几乎没有DNS服务器会把IP绑定到SSL证书里。
  • 如果只写FQDN不写IP,systemd-resolved会先用普通未加密的DNS去解析这个FQDN,完全失去了DoT的意义,所以必须用IP#FQDN的格式。

举个符合规范的配置例子,假设你的Unbound服务器IP是123.456.78.9,FQDN是dns.example.com,那你的/etc/systemd/resolved.conf应该这么写:

[Resolve]
DNS=123.456.78.9#dns.example.com
DNSOverTLS=yes
# 其他配置项按需添加

备注:内容来源于stack exchange,提问作者DanRan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.23 13:52:27