网站打不开是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

相关推荐

  • u深度安装Linux系统详细步骤是怎样的?

    使用u深度安装Linux系统是许多用户的首选方法,尤其适合新手操作,u深度作为一款功能强大的U盘启动盘制作工具,能帮助用户轻松将Linux系统写入U盘,并完成安装,以下是详细步骤及注意事项,确保安装过程顺利,准备工作下载系统镜像:访问Linux发行版官网(如Ubuntu、Linux Mint等),下载ISO格式……

    2025年9月24日
    4400
  • Linux如何查看服务器IP地址?

    在Linux系统中,查询服务器地址是日常运维和网络管理中的常见需求,服务器地址可能包含本地IP地址(IPv4/IPv6)、公网IP地址、MAC地址、主机名、域名解析信息等,掌握多种查询方法可以帮助运维人员快速定位问题、配置服务或排查网络故障,以下从不同维度详细介绍Linux系统中查询服务器地址的常用命令及具体操……

    2025年10月7日
    3400
  • Linux库如何正确添加?高效开发必备技巧

    库的类型与识别静态库(.a 文件)编译时直接嵌入程序,生成独立可执行文件,命名格式:libxxx.a(如 libmath.a),动态库(.so 文件)运行时加载,多个程序共享,节省资源,命名格式:libxxx.so(如 libmath.so.1.0),添加库的4种方法方法1:复制到标准库路径(推荐系统级使用)步……

    2025年7月24日
    6000
  • linux 如何查看txt

    Linux 中,可使用 cat、less、more 等命令

    2025年8月18日
    5800
  • 如何高效准备硬件与规划?

    确认阵列卡兼容性检查阵列卡型号(如LSI/Broadcom、Adaptec、Dell PERC)是否在Linux内核支持列表(推荐使用较新的HBA或RAID卡),访问制造商官网下载Linux驱动(.dd格式或内核模块),优先选择标有”Mainline Kernel Supported”的产品,备份关键数据警告……

    2025年8月7日
    5700

发表回复

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

联系我们

400-880-8834

在线咨询: QQ交谈

邮件:HI@E.KD.CN

关注微信