5154

Good Luck To You!

ubuntu17设置永久dns

Ubuntu 17中,可通过编辑/etc/resolvconf/resolv.conf.d/base文件添加nameserver条目实现永久DNS设置。

是关于如何在Ubuntu 17.04及更高版本中设置永久DNS的详细指南,此过程涉及多个步骤和方法,确保即使重启系统后配置依然有效。

通过/etc/network/interfaces文件配置(传统方式)

适用场景

适用于使用传统网络管理工具(非Netplan)的情况,尤其适合物理机或早期版本的Ubuntu服务器。

操作步骤

  1. 打开配置文件
    以管理员权限编辑/etc/network/interfaces文件:

    sudo nano /etc/network/interfaces
  2. 定位对应网卡段落
    找到类似如下的部分(例如eth0或有线/无线接口):

    auto eth0
    iface eth0 inet static
        address X.X.X.X
        netmask Y.Y.Y.Y
        gateway Z.Z.Z.Z
  3. 添加DNS条目
    在上述段落下方新增一行:

    dnsnameservers 8.8.8.8 8.8.4.4  # Google公共DNS示例

    ⚠️ 注意:多个DNS用空格分隔,不要换行。

  4. 应用更改
    保存文件后执行以下命令重启网络服务:

    sudo ifdown eth0 && sudo ifup eth0    # 仅重启指定接口
    # 或直接重启整个系统验证生效性
  5. 验证结果
    运行cat /etc/resolv.conf查看是否已包含新设置的DNS地址。

参数 说明
dnsnameservers 指定DNS服务器IP列表,优先级按顺序排列
auto <接口名> 确保系统自动启动该网络接口
iface <接口名> 定义具体网络接口的配置块

利用resolvconf工具实现动态同步

核心原理

通过创建基础模板文件,由resolvconf服务自动生成最终的/etc/resolv.conf,避免手动修改被覆盖的问题。

实施流程

  1. 安装依赖包(若未预装):
    sudo apt install resolvconf
  2. 编辑默认模板
    修改/etc/resolvconf/resolv.conf.d/base文件:
    sudo vim /etc/resolvconf/resolv.conf.d/base

    添加目标DNS服务器:

    nameserver 218.2.2.2      # 电信DNSPod节点
    nameserver 223.5.5.5      # 阿里云公共DNS
  3. 更新全局配置
    执行刷新命令使改动立即生效:
    sudo resolvconf u
  4. 检查生效状态
    再次查看/etc/resolv.conf,确认底部已追加新的DNS记录。

💡 优势对比:此方法支持多网卡环境下的统一管理,且兼容DHCP动态分配场景。


现代化方案——修改Systemd解析服务(推荐用于新部署环境)

适用版本

特别适合Ubuntu 18.04+及后续版本,但向下兼容旧版系统如17.04同样有效。

详细步骤

  1. 调整主配置文件
    编辑/etc/systemd/resolved.conf
    sudo nano /etc/systemd/resolved.conf

    取消注释并修改关键参数:

    [Resolve]
    DNS=8.8.8.8 114.114.114.114         # 同时使用谷歌与国内高速线路
    FallbackDNS=8.8.8.8                # 备用兜底解析器
    Cache=nonegative                  # 缓存策略优化建议值
  2. 重启服务进程
    依次运行以下命令确保变更落地:
    sudo systemctl restart systemdresolved
    sudo systemctl enable systemdresolved     # 设置为开机自启
  3. 重建符号链接(重要!)
    为防止原始文件被其他组件篡改,需做软链替换:
    mv /etc/resolv.conf /etc/resolv.conf.bak      # 备份原文件
    ln s /run/systemd/resolve/resolv.conf /etc/resolv.conf
  4. 功能验证测试
    使用dignslookup命令测试域名解析是否正常:
    dig www.ubuntu.com +short           # 快速查询模式
    nslookup google.com                 # 交互式诊断工具
配置项 默认值 作用描述
DNS (空) 主DNS服务器列表
FallbackDNS (空) 当主控失败时的回退解析站
Domains (空) 本地域名搜索后缀(如localdomain)
LLMNR resolve 链路层多播节点协议处理模式
MulticastDNS resolve 组播DNS响应行为控制
DNSSEC yes 安全扩展启用状态
Cache yes 缓存机制开关及策略类型

常见问题与解答(Q&A)

Q1: 为什么直接修改/etc/resolv.conf无法持久化?

A: 因为现代Linux发行版普遍采用动态网络管理器(如NetworkManager、systemdresolved),它们会定期重写该文件以覆盖用户手动更改的内容,必须通过上述专业化工具或配置文件进行间接控制。

Q2: 如何确认当前使用的DNS是否真正生效?

A: 可通过两种方式验证:①执行systemdresolve status查看解析服务状态;②使用traceroute跟踪数据包路径,观察是否经过预设的DNS服务器节点。

systemdresolve status | grep 'Current DNS Server'
traceroute n T dns 8.8.8.8           # 测试到谷歌DNS的路由跳数

Q3: 如果遇到“DNS unreachable”错误怎么办?

A: 优先检查防火墙设置是否阻止了UDP/TCP端口53;其次确认上游DNS服务器可用性;最后尝试更换其他公共DNS(如Cloudflare的1.1.1.1),确保/etc/hosts文件中

发表评论:

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

«    2025年8月    »
123
45678910
11121314151617
18192021222324
25262728293031
控制面板
您好,欢迎到访网站!
  查看权限
网站分类
搜索
最新留言
    文章归档
    网站收藏
    友情链接

    Powered By Z-BlogPHP 1.7.3

    Copyright Your WebSite.Some Rights Reserved.