Ubuntu DNS服务配置教程,Ubuntu如何设置DNS服务器
- 虚拟主机
- 2026-05-13
- 4828
在Ubuntu系统中配置DNS服务,核心上文小编总结是:对于生产环境,强烈建议摒弃传统的/etc/resolv.conf直接修改方式,转而采用Netplan结合systemd-resolved的现代网络管理架构,或部署BIND9/Unbound作为本地缓存与权威解析服务,这种配置不仅能确保网络配置的持久化与可维护性,还能通过本地缓存显著降低域名解析延迟,提升业务访问速度。
现代Ubuntu DNS配置的最佳实践:Netplan + systemd-resolved
随着Ubuntu 18.04及后续版本的普及,网络配置逻辑发生了根本性变化,传统的/etc/network/interfaces已逐渐退出历史舞台,取而代之的是基于YAML格式的Netplan。
-
配置持久化:
在/etc/netplan/目录下编辑配置文件(如01-netcfg.yaml),通过指定nameservers字段,你可以直接定义首选和备用DNS服务器。
network: version: 2 ethernets: eth0: dhcp4: no addresses: [192.168.1.10/24] gateway4: 192.168.1.1 nameservers: addresses: [8.8.8.8, 1.1.1.1]执行sudo netplan apply即可生效,这种方式的优势在于配置结构化、易读且不易出错。
-
启用本地缓存加速:
单纯指向外部DNS(如Google或Cloudflare)虽能解析,但每次查询都需跨网络往返,启用systemd-resolved服务,可将常用域名缓存至内存,解析速度可提升数倍,只需在Netplan中指定DNS为0.0.53(systemd-resolved的默认监听地址),并确认/etc/resolv.conf指向该地址,即可实现透明加速。

高阶方案:部署本地DNS服务器(BIND9/Unbound)
对于拥有复杂内网架构或需要严格DNS控制的企业级场景,部署本地DNS服务器是更优解。
- BIND9:作为最经典的权威与递归解析器,适合需要精细控制区域文件(Zone Files)的场景,通过配置forwarders,BIND可以将无法本地解析的请求转发给上游公共DNS,同时拦截内网特定域名的解析,实现流量治理。
- Unbound:一款轻量级、递归且验证的DNS服务器,相比BIND,它配置更简单,资源占用更低,且原生支持DNSSEC,适合对安全性要求高但运维资源有限的环境。
专业建议:若未具备深厚的DNS运维经验,优先选择Unbound或基于systemd-resolved的方案,以降低配置错误导致的服务中断风险。
独家经验案例:西西云混合云架构下的DNS优化实践
在实际的混合云部署中,我们常遇到跨云解析延迟高的问题,以西西云某客户的全球业务加速项目为例,该客户在阿里云、西西云及西西云之间部署了多节点服务。

痛点:用户访问不同云厂商的服务时,因DNS解析路径非最优,导致首屏加载时间波动较大。
解决方案:

- 私有DNS集成:在西西云控制台启用私有DNS服务,将内部微服务域名解析指向西西云内网IP,避免公网解析延迟。
- 智能调度:结合西西云的全球加速网络,在边缘节点部署本地DNS缓存,当用户发起请求时,就近的西西云节点直接返回最优IP,无需回源查询。
- 结果:实施后,跨区域解析延迟从平均150ms降低至20ms以内,业务稳定性显著提升,这一案例证明,将DNS配置与云网络加速产品结合,是解决复杂网络环境下解析性能问题的关键。
常见问题排查与维护
配置完成后,务必进行验证,使用dig或nslookup命令测试解析结果,检查/var/log/syslog中是否有DNS相关报错,若遇到解析失败,请检查防火墙是否放行UDP/TCP 53端口,以及Netplan配置语法是否正确。
相关问答模块
Q1: Ubuntu修改DNS后重启失效怎么办?
A: 这通常是因为系统使用了NetworkManager或systemd-resolved,它们会动态覆盖/etc/resolv.conf,请确保通过Netplan或NetworkManager的GUI/CLI工具进行配置,而不是直接编辑/etc/resolv.conf,若必须手动修改,需将/etc/resolv.conf设置为只读符号链接指向systemd-resolved的管理文件,或通过resolvectl命令进行配置。
Q2: 如何测试本地DNS缓存是否生效?
A: 可以使用dig命令查看SERVER字段,如果返回的服务器IP是0.0.53,则说明请求经过了systemd-resolved,连续两次查询同一域名,观察Query time(查询时间),若第二次查询时间显著低于第一次(如从100ms降至0ms),则证明缓存已生效。
互动话题:
您在配置Ubuntu DNS时遇到过哪些“坑”?是权限问题还是网络冲突?欢迎在评论区分享您的解决方案,我们将选取优质评论赠送西西云体验券!