/etc/resolv.conf
文件中设置。Linux 系统 DNS 地址配置全解析
一、DNS 基础概念
在计算机网络中,DNS(Domain Name System)域名系统扮演着至关重要的角色,它如同网络世界的“电话簿”,负责将人类易读的域名(如 www.example.com)转换为机器能够识别的 IP 地址(如 192.168.1.1),从而使得用户能够通过域名轻松访问互联网上的各类资源,而无需记忆复杂的数字串。
二、Linux 系统中 DNS 配置文件
(一)/etc/resolv.conf 文件
参数 | 说明 |
nameserver | 指定 DNS 服务器的 IP 地址,可同时设置多个,按顺序依次查询,直至得到解析结果。nameserver 8.8.8.8 表示使用 Google 提供的公共 DNS 服务器,nameserver 114.114.114.114 则是国内常见的 DNS 服务 IP。 |
domain | 定义默认的域名后缀,当主机名未完整指定域名时,会自动在其后添加该后缀进行域名解析,比如设置domain example.com ,若输入主机名为host1 ,则系统会尝试解析host1.example.com 。 |
search | 指定域名搜索列表,当输入不完全限定域名时,系统会按照此列表中的域名顺序依次进行解析查找,直到成功或列表结束,格式为:search domain1 domain2 ... |
这个文件通常由网络管理工具(如 NetworkManager、BIND 等)自动生成和管理,手动修改后可能会被覆盖,具体取决于系统的网络配置方式。
(二)NetworkManager 配置(适用于桌面环境)
在现代 Linux 桌面发行版中,NetworkManager 是常用的网络管理工具,它提供了图形化界面来配置网络连接,包括 DNS 设置。
打开 NetworkManager 设置:一般可以通过系统托盘的网络图标进入设置界面,选择相应的网络连接(有线、无线或 VPN 等)。
编辑连接:找到要配置 DNS 的网络连接,点击“编辑”按钮。
IPv4 或 IPv6 设置:在弹出的窗口中,切换到“IPv4”或“IPv6”(根据实际使用的网络协议)选项卡。
DNS 配置:在这里可以手动添加或修改 DNS 服务器地址,还可以选择“自动获取 DNS 服务器地址”(通常从 DHCP 服务器获取),以及设置是否忽略连接的全局 DNS 配置等选项。
三、临时与永久修改 DNS
(一)临时修改
如果只是临时需要更改 DNS 服务器地址进行测试或应急处理,可以使用以下命令:
sudo cp /etc/resolv.conf /etc/resolv.conf.bak echo "nameserver 临时 DNS IP" | sudo tee /etc/resolv.conf > /dev/null
这样会在当前会话中立即生效,但重启系统后会恢复原样,这种方法适用于快速验证新的 DNS 服务器效果的场景。
(二)永久修改
对于永久性的 DNS 更改,需要根据系统的网络配置方式进行操作:
静态网络配置:如果是手动配置的静态 IP 地址网络连接,直接修改/etc/resolv.conf 文件即可长期生效,不过要注意,某些情况下可能需要在文件开头添加注释掉的头信息(如# Generated by NetworkManager
),以符合 NetworkManager 的管理规范,避免被意外覆盖。
动态网络配置(DHCP):若是通过 DHCP 获取 IP 地址的网络环境,可在 NetworkManager 的图形化界面或其配置文件(如/etc/NetworkManager/NetworkManager.conf)中进行设置,以确保每次通过 DHCP 获取新 IP 时都能应用自定义的 DNS 配置。
四、常见问题与解答
(一)问题:修改了/etc/resolv.conf 文件后,DNS 没有生效怎么办?
解答:首先检查修改是否正确保存,并且语法无误,然后查看 NetworkManager 或其他网络管理工具是否正在运行并管理网络连接,如果是 NetworkManager 管理的连接,它可能会覆盖/etc/resolv.conf 文件中的设置,可以尝试在 NetworkManager 的图形化界面或配置文件中进行 DNS 设置,或者暂时停用 NetworkManager(不推荐,可能影响其他网络功能),再次检查 DNS 是否能正常解析,也有可能是本地缓存导致解析结果未更新,可以尝试清除本地 DNS 缓存(不同系统命令可能不同,如sudo systemdresolve flushcaches
在基于 systemd 的系统中)。
(二)问题:如何确定当前系统使用的 DNS 服务器地址?
解答:可以使用以下命令查看:
cat /etc/resolv.conf
:直接显示当前的 DNS 配置文件内容,从中可以看到配置的 nameserver 地址。
systemdresolve status
(基于 systemd 的系统):会输出系统解析服务的详细信息,包括当前使用的 DNS 服务器地址、搜索域等。
dig +trace www.example.com
:执行这个命令后,在输出的结果中可以看到域名解析的过程,其中包含使用的 DNS 服务器 IP 地址,这种方法不仅可以查看当前使用的 DNS,还能了解域名解析的具体路径和过程。
来源互联网整合,作者:小编,如若转载,请注明出处:https://www.aiboce.com/ask/182459.html