当前位置:首页 > 虚拟主机 > 正文

Linux如何配置域名解析?高效DNS设置教程详解

核心配置文件

  1. /etc/hosts

    本地静态域名映射(优先级高于DNS)。

    示例

    0.0.1 localhost 192.168.1.10 server1.example.com server1
  2. /etc/resolv.conf

    定义DNS服务器和搜索域(注意:可能被网络服务覆盖)。

    示例

    nameserver 8.8.8.8 # 首选DNS nameserver 1.1.1.1 # 备用DNS search example.com # 自动补全域名后缀 options timeout:2 # 查询超时时间(秒)


配置方式(按网络管理工具分类)

传统配置(手动修改,重启后可能失效)

  • 直接编辑 /etc/resolv.conf(不推荐,易被覆盖): sudo nano /etc/resolv.conf

使用 systemd-resolved (Ubuntu/CentOS 8+)

  • 配置文件:/etc/systemd/resolved.conf [Resolve] DNS=8.8.8.8 192.168.1.1 # 指定DNS Domains=example.com # 搜索域
  • 生效命令: sudo systemctl restart systemd-resolved
  • 状态检查: resolvectl status # 查看当前DNS配置

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

  • 命令行配置: nmcli connection modify "eth0" ipv4.dns "8.8.8.8 1.1.1.1" # 设置DNS nmcli connection modify "eth0" ipv4.dns-search "example.com" # 设置搜索域 nmcli connection down "eth0" && nmcli connection up "eth0" # 重启连接
  • 图形界面

    进入网络设置 → 选择连接 → 配置DNS和搜索域。

修改网卡配置文件(CentOS/RHEL 7)

  • 编辑网卡配置(如 /etc/sysconfig/network-scripts/ifcfg-eth0): DNS1=8.8.8.8 DNS2=1.1.1.1 DOMAIN="example.com"
  • 重启网络: sudo systemctl restart network


域名解析顺序控制

调整 /etc/nsswitch.conf 中的 hosts 行,决定查询顺序:

hosts: files dns myhostname # 顺序:先查/etc/hosts → DNS → 系统主机名

  • files:/etc/hosts
  • dns:DNS服务器
  • myhostname:系统主机名


验证配置

  1. 检查生效DNS

    cat /etc/resolv.conf # 查看当前使用的DNS resolvectl status # systemd-resolved环境 nmcli dev show | grep DNS # NetworkManager环境
  2. 测试解析

    Linux如何配置域名解析?高效DNS设置教程详解 第1张

    nslookup example.com # 基础查询 dig example.com # 详细DNS记录 ping -c 2 server1 # 测试域名解析(按nsswitch顺序)


注意事项

  • /etc/resolv.conf 被覆盖问题

    若文件由网络服务管理(如NetworkManager),修改前需:

    Linux如何配置域名解析?高效DNS设置教程详解 第2张

    Linux如何配置域名解析?高效DNS设置教程详解 第3张

    • 禁用覆盖:在网卡配置中添加 PEERDNS=no(CentOS)。
    • 使用 chattr +i /etc/resolv.conf 锁定文件(不推荐)。

  • 临时生效

    测试时可直接修改 /etc/resolv.conf,但重启网络服务后失效。

  • 多网卡场景

    每个网络连接可独立配置DNS(通过NetworkManager或网卡配置文件)。

根据您的系统环境选择合适的配置方式,建议优先使用网络管理工具(如nmcli或systemd-resolved)确保配置持久化。

0