Dus*_*jic 10 osx dns resolv.conf
我想为一个特定域使用非默认 DNS 解析器,第一个想法是简单地使用本地 dnsmasq。在寻找 MacOS 版本时,我发现我可以通过创建一个域名为 in 的文件来实现相同的效果,只需/etc/resolver/example.com
简单的一行:
nameserver 8.8.8.8
一切都很好,按预期工作,解决方案有效,并scutil --dns
确认:
resolver #8
domain : example.com
nameserver[0] : 8.8.8.8
flags : Request A records
reach : Reachable
Run Code Online (Sandbox Code Playgroud)
接下来,我想通过创建一个可以在他的终端中运行的简单的 liner 来与朋友分享这一点:
sudo mkdir -p /etc/resolver/ && echo "nameserver 8.8.8.9" | sudo tee /etc/resolver/example.net
Run Code Online (Sandbox Code Playgroud)
再次scutil --dns
确认:
resolver #10
domain : example.net
nameserver[0] : 8.8.8.9
flags : Request A records
reach : Reachable
Run Code Online (Sandbox Code Playgroud)
然后我注意到一个错字,所以我将地址更正为 8.8.8.8 并再次运行该行:
sudo mkdir -p /etc/resolver/ && echo "nameserver 8.8.8.8" | sudo tee /etc/resolver/example.net
Run Code Online (Sandbox Code Playgroud)
但这似乎没有任何效果:
resolver #10
domain : example.net
nameserver[0] : 8.8.8.9
flags : Request A records
reach : Reachable
Run Code Online (Sandbox Code Playgroud)
我检查了文件内容,一切似乎都很好:
$ cat /etc/resolver/example.net
nameserver 8.8.8.8
Run Code Online (Sandbox Code Playgroud)
然后我在 中打开文件vim
,更改为8.8.4.4
和:
resolver #10
domain : example.net
nameserver[0] : 8.8.4.4
flags : Request A records
reach : Reachable
Run Code Online (Sandbox Code Playgroud)
我已经来回检查了几次,当我将地址回显到文件时,更改没有任何影响,但是只打开它vim
甚至不更改任何内容(只需退出)就足够了,之前回显的更改将被应用。这背后的机制是什么?
[它] 只打开它
vim
甚至不更改任何内容(退出)就足够了,将应用先前响应的更改。
我必须使用sudo vim
它才能工作。与我的普通用户一起运行它没有任何效果。我的理论是,任何正在监视的内容都会监视/etc/resolver
目录的更改,而不是监视目录中的文件的更改,并且当它看到目录发生更改时会重新加载其中的所有内容。Vim 创建一个交换文件,默认在与正在编辑的文件相同的目录中。这是对目录的更改,并由观察者拾取。所以,当我这样做时:
sudo vim -n /etc/resolver/example.net
Run Code Online (Sandbox Code Playgroud)
在-n
禁用交换文件创建的情况下,不再获取对文件的更改。
归档时间: |
|
查看次数: |
9657 次 |
最近记录: |