TL;DR
macOS 中的 DNS 順序並沒有意義(儘管系統還讓你移動順序),決定 DNS Server 使用隨機方式來選擇。如果想要指定特定網域使用特定的 DNS Server,請使用 scutil
指令設定。
/etc/resolv.conf
的 nameserver 順序也相同沒有意義,系統採隨機方式選擇 nameserver。
環境
連上實驗室的 VPN 後,發現 VPN 中的 domain 都解析失敗,但是 dig 卻是正常的。看了一下 DNS 設定也都正常,於是開始找原因……
DNS 解析問題
假設今天我要解析 website.mydomain.org(內網),我的 /etc/resolve.conf
如下
1 | search mydomain.org |
此時有機率輪到後面兩組,造成解析失敗,所以我們需要額外設定
解決
列出本機上 dns 設定
scutil --dns
我們需要針對特定的網域使用特定的 DNS Server 來解析
首先建立目錄,位置必須是 /etc/resolver
sudo mkdir /etc/resolver
裡面的檔名依照 domain 去設定,假設我要指定 mydomain.org 下的 nameserver,我的檔名就是 mydomain.org
接者把該 domain 用到的 nameserver 寫上,格式與 /etc/resolv.conf
一樣
echo 'nameserver 10.0.0.1' > /etc/resolver/mydomain.org
echo 'nameserver 10.0.0.2' > /etc/resolver/mydomain.org
設定之後再度訪問 website.mydomain.org
就可以正常解析了