v2ray, gfw,

斷網急救手冊v2 - 域名污染急救

DolorHunter DolorHunter Follow Oct 06, 2024 · 10 mins read

斷網急救手冊v2 - 域名污染急救
Share this

憶昔攀牆之時,惟以TCP為用。再攀則需TLS,三攀則賴WSS,四攀則借力於CDN。然百般巧計,終不敵域名之毒,敗於其中,徒嘆奈何。

這周網線再次慘遭 GFW 掐斷,手段則是域名污染+端口阻斷。

19 年作的 斷網急救手冊 其實已經有對常見的情況作出說明,包括中國網絡波動導致的異常;端口封鎖和IP封鎖。網絡波動也有可能是域名解析出了問題或者遇到ISP域名劫持,端口封鎖通常會封鎖代理使用的端口,ICMP阻斷俗稱封IP。

端口阻斷示例

註:端口阻斷例子,輸入 IP 和 Port,國內TCP被阻斷。換一個端口即可。圖片是本站這次被端口阻斷的截圖。

IP 封鎖雖然通常是暫時的,等待數天通常就會被解開,但是IP 可能會上 GFW 的黑名單, 一到敏感時期直接封鎖。解決方法則是更換 IP 或者配置 CDN。22 年底的時候本站也遭遇過 IP 封鎖,於是啓用了 Cloudflare 的 CDN (WSS+CDN)。當時其實已經有各種各樣的協議 Trojon,Vless, HTTP2 TCP+TLS 等等,不過當時在找實習比較忙,就直接套上了 CDN 求簡單省事,但也爲這次的升級版斷網手段埋下伏筆。

我自認爲已經是身經百戰,甚至還寫了經驗總結性的 斷網急救手冊。不過這次遭遇到域名污染還是讓我始料未及。

域名污染則是直接在域名缓存投毒 (DNS cache poisoning),当你的电脑向域名服务器发送了“域名查询”的请求,然后域名服务器把回应发送给你的电脑,这里存在一个【时间差】。如果某个攻击者能够在域名服务器的“DNS 应答”还没有到达你的电脑之前,先伪造一个错误的“DNS 应答”发给你电脑。那么你的电脑收到的就是错误的信息,并得到一个错误的 IP 地址。

- 编程随想的博客 - 扫盲 DNS 原理,兼谈“域名劫持”和“域名欺骗/域名污染”

這次被阻斷後第一反應是遭遇了端口阻斷,因爲 tcping 域名 / IP 和端口都無法連通,因此作出了這個診斷。這次比較有時間,所以決定一勞永逸的解決 22 年因爲 WSS 缺陷導致的問題。

目前 Vmess + WebSocket + TLS (以下简称 wss)方式,因其特征如同 HTTPS 流量,可以隐藏 V2Ray 路径,主动侦测会得到正常 HTTP 网站响应,具有良好的伪装能力,目前被广泛用于反审查。

但是如此强大的伪装能力,需要付出严重的性能代价:TLS 1.3 握手需要消耗 1-rtt,WS 握手也需要消耗 1-rtt,增大了握手延迟。V2Ray 增加了 mux 以减少握手的发生,然而实际使用中 mux 体验并不好,很多用户选择关闭。

- 新 V2Ray 白话文指南 - TCP + TLS + Web

綜上所述,這次決定從 WS + TLS + Web 配置換成 TCP + TLS + Web 的配置。參考的是 新 V2Ray 白话文指南 - TCP + TLS + Web。自己搭建後畫圖做了一個總結,需要多配置 HaProxy 並且改變流量的路徑,其他並無太大變化,這套配置需要用到 HaProxy,Nginx,acme.sh (cert),還是比較複雜的。

WSS和TCP+TLS+Web區別

註:WSS和TCP+TLS+Web區別

雖然端口阻斷可以靠換端口解決,但是這次既然已經決定開始大修了,就直接徹底修完,於是把 IP 也順便換了。吭哧吭哧的配了一天,配置好後發現網頁數據一切正常,Vmess 數據全無,HaProxy 的日誌也完全看不到數據,又擺弄了兩三天,最後發現是被 CDN 阻攔了,於是把 CDN 關閉。

自己測試了一下非常滿意,於是喚來忠國親友一起測試。此時狀況就有點撲朔迷離了,親友 tcping 都無法連通,連通性測試直接宣告失敗。我雖然對域名污染有所耳聞,但是這並不尋常,在我印象中通常是具有影響力的站點才會遭此待遇。但是也想不出還有什麼其他原因,於是找了好幾個平臺做域名污染測試。每個平臺給出的測試結果都不盡相同,因此也花了一些時間才確定是被域名污染了。

域名污染示例

註:域名污染示例。圖片是本站這次被端口阻斷的截圖。

確認是域名污染後,反倒是我犯了難,因爲到這一步並沒有明確的解法。翻牆最忌諱的就是被盯上,而域名污染則相當於上了重點觀察名單。

我有兩個想法,一個就是爲 dolorhunter.com 創建一個備用域名,不過都被盯上了換了也不知道能存活多久;其二就是直接使用 IP 連接,同時關閉 TLS 簽名驗證 (allow insecurity)。後者不太清楚是不是與 TCP 裸奔無異,但是缺少簽名驗證就會有被替換簽名的風險,會導致包被看光光的風險。因此雖然嘗試成功了,但是還是朝着第一個想法進行嘗試。

既要又要的掛逼思維突然靈光一閃,我能不能用三級域名突圍呢?於是又給自己簽了幾個三級域名,其一就是 www.dolorhunter.com,然後測試了一下,發現並沒有被污染,看來改革的春風並不會吹到這裏,主席無形的大手也觸及不到這兒,心中狂喜,之後便是喊上鄉親們繼續做網上鄰居。

三級域名沒有被污染

註:三級域名沒有被污染連通性檢測。圖片是本站連通性測試截圖。

撰文當下測試了一下主域名,發現也被解開了。忠國的國慶過完了,一切重回風平浪靜,不過我應該不會再使用二級域名翻牆了。

參考資料:

Join Newsletter
Get the latest news right in your inbox. We never spam!
DolorHunter
Written by DolorHunter
Developer & Independenet Blogger