网站打不开是DNS的锅?

在Linux系统中配置DNS是确保网络连接正常的关键步骤,以下将详细介绍多种配置方法,涵盖主流发行版(如Ubuntu、CentOS、Debian等),并强调安全性和最佳实践,所有操作均需root权限(使用sudo或切换root用户)。

  • DNS作用:将域名(如www.example.com)解析为IP地址(如0.2.1)。
  • 配置文件
    • /etc/resolv.conf:传统DNS配置文件(可能被覆盖)。
    • /etc/systemd/resolved.conf:systemd系统的DNS配置。
    • /etc/NetworkManager/NetworkManager.conf:NetworkManager服务配置。
    • /etc/netplan/*.yaml:Ubuntu 18.04+的Netplan配置。

配置方法详解

方法1:临时修改(重启失效)

编辑/etc/resolv.conf(适用于临时测试):

sudo nano /etc/resolv.conf

添加DNS服务器(例如Cloudflare和Google DNS):

nameserver 1.1.1.1
nameserver 8.8.8.8

注意:某些服务(如NetworkManager)会覆盖此文件,需结合以下永久配置。


方法2:永久配置(推荐)

1 使用NetworkManager(图形界面/命令行)

  • 图形界面(Ubuntu/CentOS GNOME):
    1. 打开设置网络 → 选择连接 → IPv4/IPv6
    2. 关闭自动获取DNS,手动输入DNS地址(如1.1.1,8.8.8.8)。
  • 命令行
    nmcli con mod "连接名" ipv4.dns "1.1.1.1 8.8.8.8"
    nmcli con up "连接名"  # 应用配置

2 使用systemd-resolved(Ubuntu/Debian)

  1. 编辑配置文件:
    sudo nano /etc/systemd/resolved.conf
  2. 取消注释并修改:
    [Resolve]
    DNS=1.1.1.1 8.8.8.8
    Domains=example.com
  3. 重启服务:
    sudo systemctl restart systemd-resolved
  4. 验证状态:
    systemd-resolve --status

3 使用Netplan(Ubuntu 18.04+)

  1. 编辑YAML文件(如/etc/netplan/01-netcfg.yaml):
    network:
      version: 2
      ethernets:
        eth0:
          dhcp4: no
          addresses: [192.168.1.10/24]
          gateway4: 192.168.1.1
          nameservers:
            addresses: [1.1.1.1, 8.8.8.8]
            search: [example.com]
  2. 应用配置:
    sudo netplan apply

4 传统配置(Debian/CentOS)

  • 文件路径/etc/network/interfaces(Debian)或/etc/sysconfig/network-scripts/ifcfg-eth0(CentOS 7)。
  • 示例(Debian)
    iface eth0 inet static
      address 192.168.1.10
      netmask 255.255.255.0
      gateway 192.168.1.1
      dns-nameservers 1.1.1.1 8.8.8.8
      dns-search example.com
  • 重启网络服务:
    sudo systemctl restart networking  # Debian
    sudo systemctl restart network     # CentOS 7

验证DNS配置

  1. 检查生效的DNS
    cat /etc/resolv.conf  # 注意:可能被覆盖
    systemd-resolve --status  # systemd系统
  2. 测试解析
    nslookup google.com
    dig google.com +short
    ping -c 3 google.com

常见问题解决

  • DNS被覆盖:若/etc/resolv.conf被重置,检查:
    • NetworkManager的dns=none选项(在/etc/NetworkManager/NetworkManager.conf中)。
    • 禁用resolvconf服务:sudo systemctl stop resolvconf.service
  • 解析缓慢:优化DNS顺序或更换公共DNS(如1.1.18.8.8更快)。
  • 安全建议
    • 使用加密DNS(DoH/DoT),如cloudflare-dns.com
    • 避免公共Wi-Fi中使用默认DNS(防劫持)。

最佳实践

  1. 主备DNS分离:配置至少两个DNS(如主用Cloudflare,备用Google)。
  2. 本地缓存加速:安装dnsmasqsystemd-resolved提升解析速度。
  3. 企业环境:优先使用内部DNS服务器,保障域名解析安全。

引用说明基于Linux官方文档(kernel.org)、Ubuntu Manpage(manpages.ubuntu.com)及Cloudflare公共DNS指南(1.1.1),配置前请备份原始文件,操作需符合企业安全策略。

原创文章,发布者:酷番叔,转转请注明出处:https://cloud.kd.cn/ask/8449.html

(0)
酷番叔酷番叔
上一篇 2025年7月24日 06:50
下一篇 2025年7月24日 07:01

相关推荐

  • Linux终端如何打开程序?

    Linux终端作为Linux系统的核心交互工具,不仅能高效执行命令,还能灵活启动和管理各类程序,无论是图形界面应用还是命令行工具,掌握终端启动方法能显著提升操作效率,本文将从基础命令到高级技巧,详细说明Linux终端打开程序的多种方式,帮助用户应对不同场景需求,基础打开命令:通用与桌面环境特定工具xdg-ope……

    2025年8月26日
    14900
  • 如何准确查看当前系统是Linux还是Unix操作系统?

    要判断当前操作系统是Linux还是Unix,需从内核信息、发行版标识、文件系统结构、命令工具差异及许可协议等多个维度综合分析,以下是具体查看方法和注意事项:通过内核信息判断(核心方法)内核是操作系统的核心,Linux与Unix的内核名称、版本号格式及输出内容有明显差异,可通过uname系列命令快速获取,unam……

    2025年9月22日
    15000
  • 安装前不备份数据会丢失吗?

    在开始安装前务必备份硬盘上所有重要个人数据,安装过程涉及磁盘分区操作,不当操作可能导致数据丢失。

    2025年7月6日
    14800
  • Linux不重启还原系统的具体操作方法是什么?

    Linux系统在运行过程中,常因配置误操作、软件包冲突或服务异常等问题需要还原状态,与重启还原不同,不重启的动态还原能避免服务中断,适用于生产环境的高可用需求,本文将从配置文件、软件包、服务状态、内核参数及用户数据等方面,详细介绍Linux不重启系统还原的具体操作方法,配置文件还原配置文件错误是系统异常的常见原……

    2025年9月20日
    13100
  • 在Linux中如何高效按日期筛选日志文件?具体命令和操作步骤有哪些?

    Linux系统中,日志是系统运行状态、用户行为及应用程序活动的忠实记录,对于故障排查、安全审计和性能优化至关重要,面对海量的日志数据,按日期筛选是常用的操作,能够快速定位特定时间段的日志信息,本文将详细介绍Linux日志按日期筛选的多种方法,涵盖常用命令行工具及特定日志管理工具的使用技巧,并分析不同方法的适用场……

    2025年10月7日
    12500

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

联系我们

400-880-8834

在线咨询: QQ交谈

邮件:HI@E.KD.CN

关注微信