Linux命令行如何正确设置DNS?

在Linux命令行中设置DNS是系统管理和网络配置中的常见任务,正确的DNS配置直接影响域名解析效率和网络访问能力,本文将详细介绍通过命令行修改DNS配置的多种方法,包括临时修改、永久配置以及不同Linux发行版的差异处理,同时结合实例和表格说明操作步骤,最后附上常见问题解答。

linux命令行设置dns
(图片来源网络,侵删)

临时修改DNS配置

临时修改DNS配置适用于测试场景或重启后无需保留的配置,主要涉及resolv.conf文件和nameserver命令。

  1. 直接编辑/etc/resolv.conf文件
    该文件是Linux系统传统的DNS解析配置文件,格式简单,包含nameserversearchdomain等字段。

    sudo nano /etc/resolv.conf

    在文件中添加或修改nameserver行,

    nameserver 8.8.8.8    # Google DNS
    nameserver 114.114.114.114  # 中国电信DNS

    保存后立即生效,但重启网络服务或系统后可能被重置。

    linux命令行设置dns
    (图片来源网络,侵删)
  2. 使用nmcli命令(NetworkManager管理)
    若系统使用NetworkManager(如Ubuntu、CentOS 7+),可通过nmcli临时修改:

    sudo nmcli connection show "连接名称" | grep ipv4.dns
    sudo nmcli connection modify "连接名称" ipv4.dns "8.8.8.8 114.114.114.114"
    sudo nmcli connection up "连接名称"

    连接名称”可通过nmcli connection show查看,此方法仅在NetworkManager运行时有效。

永久修改DNS配置

永久配置需根据Linux发行版和使用的网络管理工具选择不同方法,避免重启后失效。

基于NetworkManager的系统(Ubuntu 18.04+、CentOS 7+、Fedora等)

  • 通过nmcli命令

    linux命令行设置dns
    (图片来源网络,侵删)
    # 查看当前连接
    nmcli connection show
    # 修改DNS并自动配置
    sudo nmcli connection modify "ens33" ipv4.ignore-auto-dns yes ipv4.dns "8.8.8.8 1.1.1.1"
    # 重启连接
    sudo nmcli connection up "ens33"

    参数说明:ipv4.ignore-auto-dns忽略DHCP分配的DNS,ipv4.dns指定DNS服务器

  • 通过图形界面(可选)
    执行nm-connection-editor,在连接属性中切换到“IPv4设置”,将“DNS服务器”手动添加并保存。

基于systemd-networkd的系统(Debian 10+、Ubuntu 20.04+等)

此类系统使用netplansystemd-networkd管理网络。

  • 使用netplan配置
    编辑/etc/netplan/01-netcfg.yaml(文件名可能不同):

    network:
      version: 2
      ethernets:
        ens33:
          dhcp4: no
          addresses: [192.168.1.100/24]
          gateway4: 192.168.1.1
          nameservers:
            addresses: [8.8.8.8, 114.114.114.114]
            search: [example.com]

    应用配置:

    sudo netplan apply
  • 使用systemd-networkd
    创建或编辑/etc/systemd/network/ens33.network

    [Match]
    Name=ens33
    [Network]
    DNS=8.8.8.8 114.114.114.114
    DHCP=no
    Address=192.168.1.100/24
    Gateway=192.168.1.1

    重启网络服务:

    sudo systemctl restart systemd-networkd

传统SysVinit系统(CentOS 6、Debian 9等)

此类系统使用ifcfg文件配置网络。

  • 编辑/etc/sysconfig/network-scripts/ifcfg-ens33
    DEVICE=ens33
    BOOTPROTO=static
    IPADDR=192.168.1.100
    NETMASK=255.255.255.0
    GATEWAY=192.168.1.1
    DNS1=8.8.8.8
    DNS2=114.114.114.114
    ONBOOT=yes

    重启网络服务:

    sudo service network restart

使用resolv.conf的永久绑定(不推荐)

部分系统(如Alpine Linux)允许通过chattr锁定/etc/resolv.conf

sudo chattr +i /etc/resolv.conf

此方法会阻止系统自动覆盖文件,但可能导致DHCP分配的DNS失效,需谨慎使用。

验证DNS配置

修改完成后,可通过以下命令验证DNS解析是否生效:

# 查看当前DNS配置
cat /etc/resolv.conf
# 测试域名解析
nslookup www.baidu.com
ping www.google.com

若解析失败,检查网络服务状态(systemctl status NetworkManagerservice network status)及防火墙规则。

不同Linux发行版的DNS配置差异

下表总结了主流发行版的推荐配置方法:

发行版系列推荐工具配置文件/命令示例重启命令
Ubuntu/DebianNetplan/nmcli/etc/netplan/*.yamlnmclinetplan apply
CentOS/RHEL 7+NetworkManagernmcli connection modifynmcli connection up
CentOS 6ifcfg文件/etc/sysconfig/network-scripts/ifcfg-*service network restart
Arch Linuxsystemd-networkd/etc/systemd/network/*.networksystemctl restart systemd-networkd
Alpine Linux直接编辑resolv.conf/etc/resolv.conf无需重启(需锁定文件)

相关问答FAQs

Q1: 修改DNS后仍无法解析域名,可能的原因有哪些?
A: 可能的原因包括:

  1. DNS服务器不可达(检查网络连通性:ping 8.8.8.8);
  2. 防火墙阻止DNS端口(如ufw规则需允许53端口);
  3. 系统缓存了旧的DNS记录(尝试清除缓存:sudo systemd-resolve --flush-cachessudo /etc/init.d/nscd restart);
  4. 配置文件路径错误(如nmcli修改时未指定正确的连接名称)。

Q2: 如何为特定域名设置自定义DNS解析(如内网域名)?
A: 可通过以下方法实现:

  1. /etc/hosts文件中添加静态映射:
    sudo nano /etc/hosts
    192.168.1.50  internal.example.com
  2. 使用searchdomain字段(在resolv.conf或Netplan配置中):
    nameservers:
      addresses: [8.8.8.8]
      search: [internal.example.com]
  3. 部署内部DNS服务器(如BIND),并将客户端指向该服务器。

通过以上方法,可根据实际需求灵活选择Linux命令行下的DNS配置方式,确保网络访问的稳定性和高效性。

文章来源网络,作者:运维,如若转载,请注明出处:https://shuyeidc.com/wp/451590.html<

(0)
运维的头像运维
上一篇2025-11-07 02:12
下一篇 2025-11-07 02:17

相关推荐

  • Maven下载依赖包命令有哪些?

    在使用Maven进行项目开发时,下载依赖包是核心操作之一,Maven通过中央仓库、私服等仓库管理依赖,开发者可以通过命令行或IDE工具触发依赖下载,以下是关于Maven下载依赖包命令的详细说明,包括常用命令、参数说明及实际应用场景,Maven下载依赖包最基础的命令是mvn dependency:resolve……

    2025-11-14
    0
  • Centos如何查看DNS配置命令?

    在CentOS系统中,DNS(域名系统)配置的正确性直接影响网络服务的访问能力,因此掌握查看DNS配置的方法至关重要,以下是几种常用的查看DNS命令及其详细说明,帮助用户全面了解系统当前的DNS设置,最基础且常用的命令是cat /etc/resolv.conf,该文件是Linux系统解析DNS的核心配置文件,直……

    2025-11-12
    0
  • Linux命令行如何正确配置DNS?

    在Linux命令行环境中配置DNS是网络管理的基础技能之一,正确的DNS配置能够确保系统顺利解析域名,从而访问互联网或内部网络资源,Linux系统中的DNS配置主要通过修改配置文件、使用命令行工具或管理网络服务来实现,具体方法因发行版不同而有所差异,本文将详细介绍常见Linux发行版(如Ubuntu/Debia……

    2025-10-23
    0
  • Ubuntu命令行如何配置VPN?

    在Ubuntu命令行中配置VPN通常涉及使用NetworkManager的命令行工具nmcli,尤其适用于支持NetworkManager的VPN类型(如OpenVPN、WireGuard、PPTP等),以下是详细步骤和注意事项,涵盖安装依赖、导入配置文件、连接管理及故障排查等内容,安装必要工具首先确保系统已安……

    2025-10-11
    0
  • Linux命令行如何设置系统语言?

    在Linux系统中,命令行语言环境的设置主要涉及locale(本地化环境)的配置,它决定了系统如何显示日期、时间、货币、数字格式以及字符集等信息,正确的locale设置不仅能确保终端显示正常,还能避免因字符编码问题导致的乱码或程序异常,本文将详细介绍Linux命令行语言环境的设置方法、常见配置选项及实用技巧,L……

    2025-09-22
    0

发表回复

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