终端指定dns的命令是什么,如何永久生效?

在计算机网络的世界中,域名系统扮演着“互联网电话簿”的关键角色,它负责将我们易于记忆的域名(如 www.google.com)翻译成机器能够理解的IP地址(如 250.191.78),我们的计算机会自动使用互联网服务提供商(ISP)分配的DNS服务器,通过终端手动指定DNS,用户可以获得更快的解析速度、增强的隐私保护、规避内容审查以及更高的网络控制权,本文将深入探讨如何在不同的操作系统中,通过终端这一强大工具来精确指定DNS服务器。

终端指定dns的命令是什么,如何永久生效?

理解DNS及其重要性

在深入操作之前,首先需要明白为何要主动管理DNS,默认的ISP DNS虽然方便,但存在一些潜在问题,它可能响应速度较慢,记录用户的浏览历史,甚至在某些情况下会进行DNS劫持或内容过滤。

相比之下,公共DNS服务,如Google DNS(8.8.8.8)、Cloudflare DNS(1.1.1.1)或OpenDNS,通常由技术巨头维护,具备以下优势:

  • 速度与可靠性:拥有全球分布的服务器集群,能提供更快的域名解析响应时间和高可用性。
  • 隐私与安全:部分服务商(如Cloudflare)承诺不记录用户IP地址,提供更严格的隐私保护政策,并集成恶意网站过滤功能。
  • 功能丰富:支持家长控制、广告拦截等高级功能。
  • 绕过限制:可以访问因本地DNS污染而无法访问的网站。

下表对比了几款主流的公共DNS服务:

服务提供商 主DNS服务器 辅助DNS服务器 主要特点
Google Public DNS 8.8.8 8.4.4 速度快,全球覆盖广,稳定可靠
Cloudflare DNS 1.1.1 0.0.1 强调隐私保护,速度快,集成安全功能
OpenDNS FamilyShield 67.222.123 67.220.123 预设成人内容过滤,适合家庭使用
Quad9 DNS 9.9.9 112.112.112 自动阻止已知恶意网站,注重安全

在终端中指定DNS的实用方法

通过终端指定DNS,意味着直接通过命令行界面修改网络配置,这是系统管理员和高级用户常用的操作,具体方法因操作系统而异。

Linux 系统

在Linux中,DNS配置传统上存储在 /etc/resolv.conf 文件中。

临时指定DNS(重启后失效)

最直接的方法是编辑此文件,使用你喜欢的文本编辑器(如 nanovim)以root权限打开它:

sudo nano /etc/resolv.conf

然后添加你想要的DNS服务器地址,每行一个,前面加上 nameserver 关键字,使用Google和Cloudflare的DNS:

nameserver 8.8.8.8
nameserver 1.1.1.1

保存并退出后,新的DNS设置会立即生效,但请注意,在现代Linux发行版中,/etc/resolv.conf 通常由网络管理服务(如 NetworkManagersystemd-resolved)动态管理,系统重启或网络重连后,你的修改可能会被覆盖。

永久指定DNS

为了实现永久生效,需要通过网络管理工具进行配置。

  • 使用 nmcli (NetworkManager命令行工具)
    首先查看你的网络连接名称:

    nmcli connection show

    假设你的连接名为 “Wired connection 1″,可以使用以下命令设置DNS:

    终端指定dns的命令是什么,如何永久生效?

    sudo nmcli con mod "Wired connection 1" ipv4.dns "8.8.8.8 1.1.1.1"
    sudo nmcli con up "Wired connection 1"

    这会将DNS设置写入该连接的配置文件中,从而实现永久生效。

  • 使用 netplan (Ubuntu Server 18.04+)
    编辑 /etc/netplan/ 目录下的YAML配置文件(如 01-netcfg.yaml),在 nameservers 部分添加地址:

    network:
      version: 2
      ethernets:
        enp0s3:
          dhcp4: yes
          nameservers:
            addresses: [8.8.8.8, 1.1.1.1]

    保存后,运行 sudo netplan apply 使配置生效。

macOS 系统

macOS提供了一个专门的命令行工具 networksetup 来管理网络设置,这是最可靠的方法。

指定DNS

列出所有网络服务以获取准确的名称(如 “Wi-Fi” 或 “Ethernet”):

networksetup -listallnetworkservices

使用 setdnsservers 命令为指定服务设置DNS,为Wi-Fi设置Google和Cloudflare DNS:

sudo networksetup -setdnsservers Wi-Fi 8.8.8.8 1.1.1.1

验证与清除

你可以使用 getdnsservers 来验证设置:

networksetup -getdnsservers Wi-Fi

若要恢复为自动获取DNS,只需将DNS地址设置为 “Empty”:

sudo networksetup -setdnsservers Wi-Fi "Empty"

Windows 系统

在Windows中,可以使用内置的 netsh (Network Shell) 工具来通过命令行修改DNS。

指定DNS

以管理员身份打开命令提示符(CMD)或PowerShell,查看网络接口名称:

终端指定dns的命令是什么,如何永久生效?

netsh interface show interface

假设你的以太网接口名为 “以太网”,你可以使用以下命令设置主DNS和备用DNS:

netsh interface ip set dns "以太网" static 8.8.8.8 primary
netsh interface ip add dns "以太网" 1.1.1.1 index=2

验证与恢复

使用 ipconfig /all 可以查看当前所有网络接口的详细配置,确认DNS设置是否已更改。

若要恢复为通过DHCP自动获取DNS,可以运行:

netsh interface ip set dns "以太网" dhcp

验证与故障排除

完成设置后,无论使用何种操作系统,都可以使用 dignslookuphost 等工具来验证DNS是否正在按预期工作,使用 dig 直接查询Google DNS以解析一个域名:

dig @8.8.8.8 www.example.com

如果返回了正确的IP地址,说明你的网络正在通过指定的DNS服务器进行查询,如果设置未生效,请检查命令语法、网络接口名称是否正确,并确认你拥有足够的系统权限。


相关问答FAQs

问题1:为什么我修改了 /etc/resolv.conf 文件,重启后设置又变回去了?

答: 这是一个在现代Linux发行版中非常常见的现象,原因在于,这些系统通常使用 systemd-resolvedNetworkManager 这样的服务来动态管理网络配置,包括DNS设置,当你手动编辑 /etc/resolv.conf 后,这些服务在网络状态发生变化时(如重启、重新连接网络)会根据其自身的配置规则重新生成该文件,从而覆盖你的修改。/etc/resolv.conf 被视为一个临时或动态文件,要实现永久性的DNS设置,你需要修改这些网络管理服务的配置,例如使用 nmcli 命令(针对NetworkManager)或编辑 netplan 的配置文件(针对Ubuntu Server),而不是直接编辑 resolv.conf

问题2:使用公共DNS(如 8.8.8.8)和运营商提供的DNS有什么区别?我应该选择哪个?

答: 主要区别在于性能、隐私和策略三个方面。

  • 性能:运营商DNS服务器在物理上可能更靠近你,理论上延迟更低,但公共DNS服务商通常拥有更优化的基础设施和缓存机制,实际解析速度可能更快。
  • 隐私:运营商DNS可能会记录你的查询历史,并可能用于数据分析或广告投放,而像Cloudflare(1.1.1.1)这样的公共DNS服务商则明确承诺保护用户隐私,不永久存储个人身份信息。
  • 策略:运营商DNS可能会根据当地法规或政策对某些网站进行屏蔽或劫持(DNS污染),公共DNS则通常不受此限制,可以帮助你访问更自由的互联网。

选择建议:如果你最看重网络访问的自由度和隐私保护,推荐使用Cloudflare(1.1.1.1)或Quad9(9.9.9.9),如果你追求极致的稳定性和全球兼容性,Google DNS(8.8.8.8)是一个不错的选择,如果你有家庭网络过滤需求,OpenDNS FamilyShield是专门为此设计的,你可以通过实际测试,看看哪个DNS在你的网络环境下响应最快,然后做出最适合自己需求的选择。

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

Like (0)
小编小编
Previous 2025年10月28日 15:25
Next 2025年10月28日 15:50

相关推荐

发表回复

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