昨夜看電影時,甜甜突然問我:「新買的這個 VPS 看起來速度還挺不錯的樣子,你要不要考慮在家的時候直接用這條線路?」。我想了想,覺得說的也是,遂在 Quantumult X 上添加了一條規則,連接家中 Wi-Fi 時自動改爲「全部直連」,原先以爲到此便萬事大吉,畢竟也不是第一次幹這種事了,沒想到在看 YouTube 時,發生了點意外,總是會有一些視頻在播放了開頭的兩三秒後,便卡住了,再也加載不動。
在經過數次實驗後,我們發現每當改成「規則分流」模式或者直接關閉 Quantumult X 時,則不會出現該情況,而僅當打開軟件並運行「全部直連」模式時會頻繁發生此情況。對此我一開始的思路是:Quantumult X 內運行了許多稀奇古怪的例如去除廣告的規則,而甜甜家中的網絡亦同時運行了大量類似規則,或許會引起某些衝突導致了影片無法播放。於是我關閉了其他的規則,但問題似乎並沒有解決。甜甜在旁邊思考了一會,拿起我的手機砸了一通並說「一定是 iPhone 的問題」擺弄了一番,查看了播放 YouTube 時的代理運行記錄,並對域名的查詢結果 IP 產生了懷疑。在查詢了 IP 的擁有者後,我們發現它們分別屬於 Facebook、Twitter 和 Dropbox,但就是沒有 Google 或 YouTube 的 IP。這幾條記錄都是向騰訊的 DNS 119.29.29.29
進行查詢的。此後進行的數次實驗中,114.114.114.114
也出現了這個情況。
至此,情況便十分明瞭了:出現了 DNS 污染。
因爲運行「全部直連」模式時,發出的 DNS 請求未經過代理,所以可能會出現兩種情況:
- 向任何 DNS 查詢的結果都會被運營商搶答,從而被污染;
- 向國內 DNS 查詢時未被搶答,但該DNS本身就返回了錯誤結果造成污染;而向國外DNS查詢時則被運營商搶答,依然被污染。
而運行「規則分流」模式時未出現該問題則是因爲發出的 DNS 請求經過了代理,所以向例如 8.8.8.8 等國外 DNS 進行查詢時得到的會是正確結果。而由於並未查到 Quantumult X 的官方說明文檔,所以關於向國內 DNS 查詢時該請求是否加密、以及若得到與國外 DNS 不一致的結果時將會如何處理,這兩個疑問我們暫時沒有明確的結論,但可以根據現有結果作出一點推論:得到的結果不一致時將以國外 DNS 返回的結果爲準。
由於需要使用到某些國內服務,所以需要 DNS 分流,不能將國內 DNS 一刪了事。在此前提下的解決辦法是:將出現 DNS 污染的網址,根據需要按照關鍵字指定 DNS。
解決完這個問題後,已經快天亮了,沒想到最後竟然是如此原始且無趣的手段,浪費時間。但既然如此便決定浪費時間再寫下這篇更加浪費時間的文章。
同場加映:
由於甜甜不使用 iPhone,所以自然也沒有使用過 Quantumult X 這款軟件。在經過了幾分鐘的操作後,幾乎就要放棄,順帶進行了大量吐槽(我本人對該軟件的交互也是極度差評)。最終在我半桶水的循循善誘下,也算是稍微摸清楚了該如何使用。
這個交互真的是有毛病,一點都不直觀(intuitive),又完全不給提示,鬼知道怎麼用啊,我不想搞了
——甜甜
感覺它那個配置語法就是個縫合怪,感覺是好幾個軟件的語法拼在一起
——甜甜
我當初剛開始用的時候也是摸索了好久,感覺真的不是給人用的
——我(鹹鹹)