网站打不开是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.1比8.8.8更快)。
  • 安全建议:
    • 使用加密DNS(DoH/DoT),如cloudflare-dns.com。
    • 避免公共Wi-Fi中使用默认DNS(防劫持)。

最佳实践

  1. 主备DNS分离:配置至少两个DNS(如主用Cloudflare,备用Google)。
  2. 本地缓存加速:安装dnsmasq或systemd-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服务器是企业IT基础设施建设的核心环节,需结合硬件环境、业务需求及安全规范逐步操作,以下是详细安装流程,涵盖从准备到配置的全过程,安装前的准备工作硬件选择与检查根据服务器用途(如Web服务、数据库、虚拟化)选择硬件:CPU需满足性能要求,内存建议至少4GB(生产环境推荐8GB以上),硬盘建议使用S……

    2025年8月28日
    23500
  • 如何正确查看Linux定时任务?

    查看定时任务的两种主要工具Linux系统通过 cron 和 at 管理定时任务:cron:处理周期性任务(如每天、每周),at:处理一次性任务(如2小时后执行),查看cron定时任务查看当前用户的cron任务crontab -l直接列出当前用户的所有定时任务,若显示 no crontab for [user……

    2025年6月30日
    33100
  • linux如何使用gedit

    Linux 中,打开终端输入 gedit & 可启动 gedit 文本编辑器

    2025年8月14日
    23200
  • 在Linux操作系统下如何运行C++程序?编译步骤与方法详解

    在Linux系统中运行C++程序通常涉及编写代码、编译和执行三个核心步骤,同时可能涉及环境配置、调试和项目管理等进阶操作,以下是详细流程和注意事项,帮助你在Linux环境下高效运行C++文件,环境准备:安装C++编译器Linux系统本身不包含C++编译器,需先安装编译工具,主流C++编译器为GCC(GNU Co……

    2025年9月16日
    22300
  • 如何配置Linux系统的永久性IP地址?

    在Linux系统中,配置永久性IP地址是确保服务器、网络设备或关键工作站网络稳定性的基础操作,与临时IP地址(通过ifconfig或ip命令设置,重启后失效)不同,永久性IP地址会持久保存在配置文件中,即使系统重启也能保持不变,本文将以主流Linux发行版(CentOS/RHEL和Ubuntu/Debian)为……

    2025年8月27日
    4.3K00

发表回复

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

联系我们

400-880-8834

在线咨询: QQ交谈

邮件:HI@E.KD.CN

关注微信