linux 设置dns

在 Linux 中,你可以通过修改 /etc/resolv.conf 文件来设置 DNS 服务器。

Linux 设置 DNS 全攻略

在 Linux 系统中,正确配置 DNS(域名系统)服务器对于网络通信和域名解析至关重要,以下将详细介绍如何在常见的 Linux 发行版中设置 DNS。

一、查看当前 DNS 配置

在进行 DNS 设置之前,了解当前的配置是很有必要的,可以通过以下命令查看:

cat /etc/resolv.conf

该文件通常包含类似如下的内容:

字段 说明
nameserver 指定 DNS 服务器的 IP 地址,可以有多个,每行一个。
nameserver 8.8.8.8 表示使用谷歌的公共 DNS 服务器。
domain 定义默认的域名后缀,用于主机名的搜索。
domain localdomain,如果主机名为“hostname”,则完整的域名为“hostname.localdomain”。
search 指定域名搜索的顺序,当解析主机名时,按照从左到右的顺序依次尝试。
search example.com localdomain,若查询“host”主机名,会先尝试解析“host.example.com”,若不成功则尝试“host.localdomain”。

二、临时设置 DNS

在某些情况下,可能需要临时更改 DNS 设置,而不修改配置文件,可以使用以下环境变量来实现:

export LD_PRELOAD=/usr/lib/x86_64linuxgnu/libnss_dnsmasq.so
export DNSMASQ_CONFIG_DIR=/etc/resolvconf

这将使用dnsmasq 作为临时的 DNS 解析器,其配置文件位于/etc/resolvconf 目录中,要使更改立即生效,可以在终端中执行上述命令后,再次运行需要使用 DNS 解析的命令。

三、永久设置 DNS

(一)通过图形化界面设置(以 Ubuntu 为例)

1、打开“设置”应用程序,选择“网络”选项。

2、点击所连接的网络(如 WiFi 或以太网),然后点击“齿轮”图标进入网络设置详情页面。

3、在“IPv4”或“IPv6”(根据实际使用的网络协议)选项卡中,找到“DNS”部分。

linux 设置dns

4、可以选择手动设置 DNS 服务器地址,点击“应用”按钮保存更改。

(二)手动编辑配置文件(适用于多数 Linux 发行版)

1、编辑/etc/resolv.conf 文件

使用文本编辑器(如vimnano 等)打开/etc/resolv.conf 文件,例如使用vim

     sudo vim /etc/resolv.conf

根据需求修改其中的nameserverdomainsearch 字段,要将 DNS 服务器设置为 192.168.1.1,域名后缀为 mydomain.com,域名搜索顺序为 mydomain.com 和 localdomain,可进行如下修改:

     nameserver 192.168.1.1
     domain mydomain.com
     search mydomain.com localdomain

保存并关闭文件。

2、配置网络管理器(NetworkManager)

对于使用 NetworkManager 管理网络的系统,需要修改其配置文件以确保 DNS 设置生效,编辑/etc/NetworkManager/NetworkManager.conf 文件:

     sudo vim /etc/NetworkManager/NetworkManager.conf

在文件末尾添加以下内容:

     [main]
     dns=default

保存并关闭文件,然后重启 NetworkManager 服务使设置生效:

linux 设置dns

     sudo systemctl restart NetworkManager

四、验证 DNS 设置

完成 DNS 设置后,可以使用以下命令验证配置是否生效:

nslookup example.com

如果能够正确解析域名并返回相应的 IP 地址,则说明 DNS 设置成功。

Server:         8.8.8.8
Address:        8.8.8.8#53
Nonauthoritative answer:
Name:   example.com
Address: 93.184.216.34

“Server”字段显示了正在使用的 DNS 服务器地址,“Address”字段是查询的域名及其对应的 IP 地址。

相关问题与解答

问题一:修改了/etc/resolv.conf 文件后,为什么 DNS 设置没有生效?

解答:可能有以下原因导致修改未生效:

1、文件权限问题:确保对/etc/resolv.conf 文件具有写入权限的用户或进程能够正确读取和写入该文件,可以使用ls l /etc/resolv.conf 命令查看文件权限,如有需要,使用chmod 命令修改权限。

2、网络管理器干扰:某些网络管理器可能会覆盖/etc/resolv.conf 文件中的设置,可以尝试检查网络管理器的配置文件(如 NetworkManager 的/etc/NetworkManager/NetworkManager.conf),确保其配置不会干扰手动设置的 DNS,或者暂时停止网络管理器服务进行测试(不推荐在生产环境中长期这样做)。

3、缓存问题:系统可能缓存了之前的 DNS 解析结果,可以尝试清除缓存(不同系统清除方法不同)或等待缓存过期后再进行测试。

linux 设置dns

问题二:如何在不同网络环境下自动切换 DNS 设置?

解答:可以根据不同的网络接口或连接类型来设置不同的 DNS,在有线网络连接时使用公司内部的 DNS 服务器,在无线网络连接时使用公共 DNS 服务器,以下是一些实现方法:

1、基于网络接口:编辑/etc/network/interfaces(Debian/Ubuntu 系列)或/etc/sysconfig/networkscripts/ifcfg<interface>(CentOS/RHEL 系列)文件,为每个网络接口指定不同的dnsnameservers 参数,在 Debian/Ubuntu 中:

    auto eth0
    iface eth0 inet static
        address 192.168.1.100
        netmask 255.255.255.0
        gateway 192.168.1.1
        dnsnameservers 192.168.1.2  # 公司内部 DNS

对于无线接口 wlan0:

    auto wlan0
    iface wlan0 inet static
        address 192.168.0.100
        netmask 255.255.255.0
        gateway 192.168.0.1
        dnsnameservers 8.8.8.8  # 公共 DNS

2、基于连接类型:可以使用nmcli(NetworkManager 命令行工具)在不同的连接上下文中设置 DNS,创建一个有线连接配置文件:

    sudo nmcli connection modify "Wired connection 1" ipv4.dns "192.168.1.2"

和一个无线网络连接配置文件:

    sudo nmcli connection modify "WiFi connection 1" ipv4.dns "8.8.8.8"

这样,当切换网络连接时,NetworkManager 会自动应用相应的 DNS 设置。

来源互联网整合,作者:小编,如若转载,请注明出处:https://www.aiboce.com/ask/183717.html

Like (0)
小编小编
Previous 2025年4月6日 04:10
Next 2025年4月6日 04:13

相关推荐

发表回复

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