/

macOS-中-VPN-解析域名錯誤

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
2
3
4
5
search mydomain.org
nameserver 10.0.0.1 # 內網 DNS 1
nameserver 10.0.0.2 # 內網 DNS 2
nameserver 1.1.1.1
nameserver 8.8.8.8

此時有機率輪到後面兩組,造成解析失敗,所以我們需要額外設定

解決

列出本機上 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 就可以正常解析了

參考