在使用Xshell这款强大的终端仿真软件进行远程服务器管理时,我们经常会遇到需要调整域名解析(DNS)的场景,一个关键点需要明确:DNS设置是在您通过Xshell连接的远程服务器上进行配置的,而非在Xshell客户端本身,Xshell只是一个提供连接的窗口,本文将详细介绍如何在远程Linux服务器上,通过命令行来临时或永久地设置DNS。

为什么需要修改服务器DNS?
更改服务器的DNS服务器地址可以带来多方面的好处:
- 提升解析速度:使用响应速度更快的公共DNS(如Cloudflare的1.1.1.1或Google的8.8.8.8)可以加快域名到IP地址的转换。
- 访问内部资源:在企业内网环境中,需要配置内部DNS服务器以解析私有域名。
- 绕过网络限制:在某些网络环境下,更换DNS可以访问被默认DNS屏蔽的网站。
临时修改DNS设置
这种方法适用于快速测试或临时使用,重启服务器或网络服务后设置会失效,配置文件为 /etc/resolv.conf。
- 通过Xshell登录到您的远程服务器。
- 使用文本编辑器(如
vi或nano)打开/etc/resolv.conf文件:sudo vi /etc/resolv.conf
- 在文件中,您会看到类似
nameserver xxx.xxx.xxx.xxx的行,您可以注释掉(在行首加 )现有行,并添加新的DNS服务器地址,设置为Google和Cloudflare的公共DNS:#nameserver 192.168.1.1 nameserver 8.8.8.8 nameserver 1.1.1.1 - 保存并退出文件,新的DNS设置将立即生效。
注意:在现代的Linux发行版(如Ubuntu 18.04+, CentOS 7+)中,/etc/resolv.conf 文件通常由 systemd-resolved 服务自动管理,手动修改后可能会在系统重启后被覆盖,对于长期有效的设置,推荐使用永久方法。
永久修改DNS设置(推荐)
为了确保DNS设置在重启后依然有效,我们需要修改网络管理器的配置,对于大多数现代Linux系统,这通常涉及 systemd-resolved。
-
编辑 resolved.conf 文件 该文件是
systemd-resolved的核心配置,使用编辑器打开:sudo vi /etc/systemd/resolved.conf
-
在
[Resolve]部分,找到或添加DNS和FallbackDNS行,去掉行首的 注释符并填入您想要的DNS地址。
[Resolve] DNS=8.8.8.8 1.1.1.1 #FallbackDNS=...
-
更新 /etc/resolv.conf 的软链接 为了让系统使用
systemd-resolved管理的DNS,需要确保/etc/resolv.conf是一个指向正确路径的符号链接,首先备份原文件,然后创建链接:sudo mv /etc/resolv.conf /etc/resolv.conf.bak sudo ln -s /run/systemd/resolve/resolv.conf /etc/resolv.conf
-
重启服务并生效 重启
systemd-resolved服务以应用更改:sudo systemctl restart systemd-resolved
至此,您的DNS设置已经永久生效,不会因为重启而丢失。
如何验证DNS设置
修改完成后,可以使用以下命令来验证DNS是否按预期工作。
-
使用
nslookup:nslookup google.com
该命令会显示用于解析
google.com的DNS服务器地址和解析出的IP地址。
-
使用
dig(功能更强大):dig google.com
查看输出中的
SERVER:字段,可以确认查询是由哪个DNS服务器处理的。
DNS设置方法对比
下表小编总结了两种设置方法的核心区别:
| 特性 | 临时修改 (/etc/resolv.conf) |
永久修改 (systemd-resolved) |
|---|---|---|
| 配置文件 | /etc/resolv.conf |
/etc/systemd/resolved.conf |
| 持久性 | 临时,重启或网络服务重启后失效 | 永久,重启后依然有效 |
| 推荐场景 | 快速测试、临时解决网络问题 | 服务器生产环境、长期稳定的配置 |
| 操作复杂度 | 简单 | 稍复杂,需了解服务管理 |
相关问答FAQs
Q1: 为什么我修改了 /etc/resolv.conf 文件,服务器重启后设置又变回去了?
A: 这是因为您使用的Linux发行版(如新版的Ubuntu、CentOS等)采用了 systemd-resolved 服务来管理DNS,该服务会动态生成 /etc/resolv.conf 文件,当系统重启或网络事件发生时,它会用默认配置覆盖您的手动修改,正确的做法是按照本文“永久修改”部分所述,去编辑 /etc/systemd/resolved.conf 文件,并确保 /etc/resolv.conf 指向了 systemd-resolved 生成的文件。
Q2: 除了使用公共DNS(如8.8.8.8),我还可以设置什么类型的DNS? A: 当然可以,除了公共DNS,您还可以根据需求设置多种类型的DNS服务器。
- 企业内部DNS:如果您在公司内网,可以设置为IT部门提供的内部DNS服务器地址,用于解析公司内部服务器的私有域名。
- 特定服务商DNS:例如设置为阿里DNS(223.5.5.5)或腾讯DNSpod(119.29.29.29),这些服务器在特定区域可能有更好的访问速度。
- 带有安全功能的DNS:如Cloudflare Family DNS(1.1.1.3)可以拦截恶意网站和成人内容。
- 本地DNS缓存:在局域网内部署如
dnsmasq或Unbound等软件,作为本地DNS缓存服务器,以提升整个网络的解析效率。