5154

Good Luck To You!

ubuntu里dns怎么配置?本地dns服务器怎么搭建?

在Ubuntu操作系统中,DNS(域名系统)配置是网络连接的核心环节,它负责将人类可读的域名(如www.example.com)转换为机器可识别的IP地址,正确的DNS配置直接影响网络访问速度、稳定性以及安全性,本文将详细讲解Ubuntu中DNS配置的多种方式、常见问题及解决方案。

DNS配置的基础概念

DNS配置的核心在于指定域名解析服务器地址,在Ubuntu中,DNS解析顺序通常遵循以下优先级:1. 本地hosts文件(/etc/hosts);2. 本地DNS缓存(如systemd-resolved或nscd);3. 网络接口配置中的DNS服务器;4. 外部DNS服务器(如通过DHCP分配或手动配置),了解这一顺序有助于排查解析失败问题。

主流DNS配置方法

Netplan配置(适用于Ubuntu 18.04及后续版本)

Netplan是Ubuntu默认的网络配置工具,通过YAML文件定义网络参数,以静态IP配置为例,在/etc/netplan/01-netcfg.yaml中添加DNS服务器:

network:
  version: 2
  ethernets:
    eth0:
      addresses: [192.168.1.100/24]
      gateway4: 192.168.1.1
      nameservers:
        addresses: [8.8.8.8, 114.114.114.114]
        search: [example.com]

配置完成后执行sudo netplan apply使生效。addresses字段指定DNS服务器IP,search字段定义域名后缀(可选)。

ubuntu里dns

NetworkManager配置(适用于桌面版Ubuntu)

对于使用NetworkManager的桌面环境(如GNOME、KDE),可通过图形界面或命令行配置DNS,命令行方式使用nmcli工具:

sudo nmcli connection modify "连接名称" ipv4.dns "8.8.8.8 114.114.114.114"
sudo nmcli connection down "连接名称" && sudo nmcli connection up "连接名称"

图形界面路径为“设置”>“网络”>“选中连接”>“IPv4设置”>“DNS服务器”。

systemd-resolved配置(本地DNS缓存服务)

Ubuntu默认使用systemd-resolved作为本地DNS缓存,其配置文件为/etc/systemd/resolved.conf,修改以下行:

ubuntu里dns

[Resolve]
DNS=8.8.8.8 114.114.114.114
Domains=~example.com

执行sudo systemctl restart systemd-resolved重启服务,此时本地DNS解析将通过127.0.0.53:53进行,可通过resolvectl status查看状态。

传统/etc/resolv.conf配置

尽管不推荐直接修改/etc/resolv.conf(因其可能被网络管理工具覆盖),但可通过resolvconf工具间接管理,安装resolvconf后,在/etc/resolvconf/resolv.conf.d/base中添加:

nameserver 8.8.8.8
nameserver 114.114.114.114
search example.com

执行sudo resolvconf -u更新配置。

ubuntu里dns

DNS配置常见问题及排查

DNS解析失败

  • 检查网络连接:使用ping 8.8.8.8测试网络连通性。
  • 验证DNS服务器:临时替换为公共DNS(如8.8.8.8)测试。
  • 清理DNS缓存:执行sudo systemd-resolve --flush-caches(systemd-resolved)或sudo /etc/init.d/nscd restart(nscd)。
  • 检查hosts文件:确保/etc/hosts中无错误映射。

配置不生效

  • Netplan:检查YAML语法是否正确(使用netplan try预览)。
  • NetworkManager:确认连接名称是否正确,检查nmcli connection show获取列表。
  • 权限问题:确保配置文件由root所有,且无语法错误。

安全性考虑

  • 避免使用不可信的公共DNS,可选择加密DNS(如DoH):
    sudo apt install dnscrypt-proxy2
    sudo systemctl enable --now dnscrypt-proxy
  • 在Netplan中添加ipv4.ignore-auto-dns: true避免DHCP覆盖自定义DNS。

不同配置方式的适用场景

配置方式 适用场景 优点 缺点
Netplan 服务器版Ubuntu或需要静态IP环境 统一管理,支持复杂网络 需要YAML语法知识
NetworkManager 桌面版Ubuntu或动态IP环境 图形化界面,易操作 服务器端支持有限
systemd-resolved 需要本地DNS缓存的系统 自动处理本地域名解析 配置相对复杂
/etc/resolv.conf 临时调试或简单场景 直接生效 易被覆盖,非持久化

相关问答FAQs

Q1: 如何在Ubuntu中测试DNS解析是否正常?
A1: 可使用以下命令组合测试:

  1. nslookup www.example.com:查询域名对应的IP地址,若返回结果则解析成功。
  2. dig www.example.com:提供更详细的DNS解析过程,包括查询时间、响应服务器等。
  3. host www.example.com:简化版的DNS查询工具,适合快速验证。
    若所有命令均无法解析,需检查DNS服务器配置及网络连接。

Q2: 修改DNS配置后仍无法上网,如何排查?
A2: 按以下步骤逐步排查:

  1. 确认IP配置:使用ip addr show检查网络接口是否获取到正确IP。
  2. 测试网关连通性:执行ping 网关IP(如192.168.1.1),确保能访问路由器。
  3. 检查DNS服务状态:对于systemd-resolved,运行systemctl status systemd-resolved确认服务运行。
  4. 临时切换DNS:在浏览器中直接输入IP地址访问网站,若可访问则说明DNS问题,尝试更换DNS服务器。
  5. 查看系统日志:使用journalctl -u systemd-networkdjournalctl -u NetworkManager查看网络服务日志,定位错误信息。

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

«    2025年9月    »
1234567
891011121314
15161718192021
22232425262728
2930
控制面板
您好,欢迎到访网站!
  查看权限
网站分类
搜索
最新留言
    文章归档
    网站收藏
    友情链接

    Powered By Z-BlogPHP 1.7.3

    Copyright Your WebSite.Some Rights Reserved.