5154

Good Luck To You!

DNS的永久配置文件

S的永久配置文件通常是/etc/resolv.conf,不同Linux发行版可能有特定路径,如Ubuntu的/etc/systemd/resolved.conf。

DNS的永久配置文件详解

DNS(Domain Name System)作为互联网基础设施的核心组件,负责将易于记忆的域名转换为IP地址,在Linux系统中实现DNS的永久配置需要根据不同的发行版采用特定的方法,本文详细介绍了Ubuntu/Debian和CentOS/RHEL两大主流系统的永久配置方案,并提供了验证步骤与常见问题解决方案。

Ubuntu/Debian系统配置

Netplan方式(推荐用于服务器环境)

现代Ubuntu默认使用Netplan进行网络管理,其配置文件以YAML格式存储在/etc/netplan/目录下,典型文件名为01netcfg.yaml或其他以.yaml结尾的文件,以下是具体操作流程:

  • 编辑配置文件:执行命令sudo nano /etc/netplan/01netcfg.yaml,定位到对应网络接口(如ens33)的配置区块;
  • 设置DNS参数:在nameservers字段下添加目标DNS服务器地址数组,
     nameservers:
       addresses: [8.8.8.8, 8.8.4.4]

    若使用静态IP需同时设置dhcp4: no;对于DHCP模式则建议添加dhcp4overrides钩子并配置usedns: false防止覆盖手动设置;

  • 应用变更:保存后运行sudo netplan apply使配置生效;
  • 验证机制:通过nslookup example.com或查看/etc/resolv.conf确认解析策略是否更新。

⚠️注意:YAML语法对缩进极度敏感,建议使用带语法高亮的编辑器进行检查,修改前务必备份原文件,避免因格式错误导致网络中断。

NetworkManager图形化工具(适合桌面用户)

桌面环境可通过系统托盘图标打开网络连接编辑器,在IPv4设置中手动指定DNS并勾选“忽略自动获取的DNS”,此方法会修改底层的nmcli配置,持久化效果通过sudo nmcli connection modify "Wired connection 1" ipv4.dns "8.8.8.8 8.8.4.4"命令实现。

systemdresolved服务(全局解析方案)

编辑/etc/systemd/resolved.conf文件,取消注释并修改如下参数:

[Resolve]
DNS=8.8.8.8 8.8.4.4
FallbackDNS=114.114.114.114

重启服务后创建符号链接:sudo ln sf /run/systemd/resolve/resolv.conf /etc/resolv.conf,该方案优势在于提供缓存加速和跨会话一致性。

CentOS/RHEL系统配置

传统网卡配置文件

直接修改/etc/sysconfig/networkscripts/ifcfgeth0(或其他物理接口文件),添加类似以下内容:

DNS1=8.8.8.8
DNS2=8.8.4.4
PEERDNS=no # 关键参数,禁用DHCP对DNS的覆盖

执行sudo systemctl restart network重启服务即可生效,此方法适用于静态IP场景,动态分配时需配合NetworkManager使用。

NetworkManager高级控制

创建自定义配置文件/etc/NetworkManager/conf.d/dns.conf,写入:

[main]
dns=none

该设置将完全接管DNS解析权,允许管理员自由编辑/etc/resolv.conf而不受干扰,随后运行sudo systemctl restart NetworkManager激活更改。

通用验证方法

检测工具 命令示例 预期结果
nslookup nslookup google.com 返回对应IP及解析路径
dig dig @8.8.8.8 www.baidu.com 显示详细查询日志
cat /etc/resolv.conf 列出当前生效的DNS服务器列表
ping ping c 3 www.example.com 成功响应证明解析链完整

常见问题与解答

Q1: 为什么修改了配置文件但DNS仍未生效?

A: 可能原因包括:①未正确应用配置(如忘记执行netplan apply);②DHCP服务覆盖了手动设置(检查PEERDNSignoreautodns选项);③存在多个冲突的配置源(如同时启用了NetworkManager和netplan),建议优先使用systemctl status systemdresolved检查服务状态,并通过journalctl u network查看错误日志。

Q2: 如何在多网卡环境中指定不同DNS?

A: 在Netplan中可为每个接口独立配置nameservers;CentOS则需在对应ifcfg*文件中分别设置,例如为备用链路预留备用DNS:

# Ubuntu示例
ethernets:
  enp0s9: # 主网卡
    nameservers:
      addresses: [8.8.8.8]
  enp0s8: # 备份网卡
    nameservers:
      addresses: [114.114.114.114]

Q3: 如何实现企业内网域名优先解析?

A: 利用search域参数实现层级化查找,例如在/etc/resolv.conf中添加:

search localdomain internal.corp eif.cn
nameserver 192.168.1.100 # 内网DNS服务器
nameserver 8.8.8.8       # 公共DNS作为后备

这将确保先尝试内部域名解析失败后再转向外部服务器。

最佳实践建议

  1. 版本控制:使用Git管理重要配置文件变更历史;
  2. 冗余设计:至少配置两个不同运营商提供的DNS服务器;
  3. 安全加固:限制递归查询范围,启用DNSSEC验证;
  4. 监控告警:部署Prometheus+BlackboxExporter监控解析延迟;
  5. 容器化场景:Kubernetes环境推荐使用CoreDNS插件实现集群内智能解析。

通过以上配置方案,可以确保DNS设置在系统重启、服务重载等场景下保持稳定,满足生产环境的高可用

发表评论:

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

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

    Powered By Z-BlogPHP 1.7.3

    Copyright Your WebSite.Some Rights Reserved.