网站打不开是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 如何限制ip访问端口号

    iptables 或 firewalld 配置规则,限制特定 IP

    2025年8月16日
    10800
  • Linux如何查看U盘?命令行还是图形界面?

    命令行方式(推荐)识别U盘设备插入U盘后,打开终端(Ctrl+Alt+T),执行:lsblk输出示例:NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTsda 8:0 0 238.5G 0 disk├─sda1 8:1 0 512M 0 part /boot└─sda2 8:2 0……

    2025年7月9日
    13500
  • cdlinux系统如何切换到中文语言界面?

    CDLinux是一款轻量级的Linux发行版,常被用于应急系统维护、数据恢复或作为便携式操作系统使用,由于其默认界面语言可能为英文或其他语言,对于中文用户而言,切换到中文版能显著提升操作体验,本文将详细介绍CDLinux切换到中文版的完整步骤,包括语言包安装、环境配置、字体优化及输入法设置等关键环节,帮助用户顺……

    2025年9月25日
    9700
  • 如何临时进入GRUB菜单?

    在Linux系统中,GRUB(GRand Unified Bootloader)是大多数发行版的默认引导程序,负责加载操作系统内核,进入GRUB菜单通常用于修复系统启动问题、选择内核版本、进入恢复模式或调整启动参数,以下是详细方法及注意事项:在开机过程中快速按键是最常用方式,但时机要求严格:传统BIOS/MBR……

    2025年7月15日
    14100
  • Linux如何创建主干分支?

    在Linux环境下使用Git进行版本控制时,主干分支(通常为main或master分支)是项目的核心开发线,承载着稳定、可发布的代码,创建和管理主干分支是团队协作的基础,本文将详细介绍在Linux系统中通过Git命令行创建主干分支的具体步骤、注意事项及最佳实践,准备工作:安装与配置Git在创建分支前,需确保Li……

    2025年10月1日
    9700

发表回复

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

联系我们

400-880-8834

在线咨询: QQ交谈

邮件:HI@E.KD.CN

关注微信