/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”部分。
4、可以选择手动设置 DNS 服务器地址,点击“应用”按钮保存更改。
(二)手动编辑配置文件(适用于多数 Linux 发行版)
1、编辑/etc/resolv.conf
文件
使用文本编辑器(如vim
、nano
等)打开/etc/resolv.conf
文件,例如使用vim
:
sudo vim /etc/resolv.conf
根据需求修改其中的nameserver
、domain
和search
字段,要将 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 服务使设置生效:
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 解析结果,可以尝试清除缓存(不同系统清除方法不同)或等待缓存过期后再进行测试。
问题二:如何在不同网络环境下自动切换 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