如何从 Mac OS X 上的终端更改我的 DNS 服务器?[我需要这个,因为我的 DNS 无法与我的 VPN 正常工作。有时它使用 DNS 作为我的主连接,有时它使用为 VPN 指定的 DNS(它应该使用)。]
Che*_*ion 58
您可以使用networksetup:
sudo networksetup -setdnsservers <networkservice> DNS1, DNS2, DNS3
Run Code Online (Sandbox Code Playgroud)
例如(机场连接使用谷歌的 DNS 服务器)
sudo networksetup -setdnsservers AirPort 8.8.8.8 8.8.4.4
Run Code Online (Sandbox Code Playgroud)
您可以通过运行找到网络服务的名称networksetup -listallnetworkservices。可能是“Wi-Fi”。
这与您要在系统偏好设置中的网络偏好窗格中编辑整体相同,因此它在重新启动后保持不变。
您可能会在 Snow Leopard 上遇到 DNS 问题,该问题在查询 DNS 服务器的顺序更改时发生(请参阅问题84144))
Dav*_*ell 23
我没有足够的积分来回复 Chealion 的帖子,但要补充一点,我将从列出接口开始
networksetup -listallnetworkservices
Run Code Online (Sandbox Code Playgroud)
有了想要更改的界面后,您可以执行以下操作(我使用的是 Wi-Fi,但您可以执行任何其他界面)
sudo networksetup -setdnsservers Wi-Fi empty
sudo networksetup -setdnsservers Wi-Fi 8.8.8.8 8.8.4.4
sudo killall -HUP mDNSResponder
Run Code Online (Sandbox Code Playgroud)
上面的第一行将清空 DNS 设置,然后使用我们想要使用的 DNS 服务器并仔细清除 DNS 缓存
要验证 DNS 更改,您可以在前后或之后执行此操作
scutil --dns | grep 'nameserver\[[0-9]*\]'
Run Code Online (Sandbox Code Playgroud)
Joh*_*n T 17
您可以scutil从终端交互使用。运行sudo scutil并运行这些命令,在适当的地方交换您的 DNS 服务器:
> 打开 > d.init > d.添加服务器地址 * 8.8.8.8 9.9.9.9 > 设置状态:/Network/Service/PRIMARY_SERVICE_ID/DNS > 退出
而不是使用8.8.8.8和9.9.9.9使用您的 DNS 服务器。
唯一的问题是这在重新启动后不是持久的。如果您想要永久更改,则需要ncutil。/etc/resolv.conf在较新版本的 OS X 中编辑不够的原因是因为 configd 现在使用数据库来存储其他应用程序读取的当前设置信息。某些应用程序仍将读取 /etc/resolv.conf(例如主机),但并非所有应用程序都如此。
resolv.conf 不再在 OSX 上运行。该文件的顶部有一条通知,如下所示:
#
# macOS Notice
#
# This file is not consulted for DNS hostname resolution, address
# resolution, or the DNS query routing mechanism used by most
# processes on this system.
#
# To view the DNS configuration used by this system, use:
# scutil --dns
#
# SEE ALSO
# dns-sd(1), scutil(8)
#
# This file is automatically generated.
#
Run Code Online (Sandbox Code Playgroud)
此外,networksetup -listallnetworkservices未列出所有 VPN 接口。
以下是使用 scutil 定位正确接口的一种方法: 1. 使用commands.txt交互式 scutil 工具的命令创建一个文件。例如,在我的例子中,Pulse 安全接口的内容:
get State:/Network/Service/net.pulsesecure.pulse.nc.main/DNS
d.add ServerAddresses * 8.8.8.8 9.9.9.9
set State:/Network/Service/net.pulsesecure.pulse.nc.main/DNS
Run Code Online (Sandbox Code Playgroud)
set)sudo scutil < commands.txt
Run Code Online (Sandbox Code Playgroud)