藏在我自己路由表裡的核心層 Bug

只讓一台遊戲主機的串流 App 流量走日本出口節點,其餘(登入、配對)流量完全不受影響——以及讓這件事一度看似不可能的兩個獨立核心層 Bug。

This article is also available in English: English version——內容相同,僅語言不同。

家裡網路上有一台遊戲主機,需要讓它的串流 App 流量(幾個只限日本地區的影音服務)改走一個日本出口節點, 但同一台裝置上其他種類的流量——登入、配對、下載、遠端遊玩——必須完全照原本的路徑走,不能受到任何影響,也不能多出延遲。 不是「整台主機都走 VPN」,也不是「另外接一個 SSID」。要求是同一台實體裝置上,依照連線的目的網域個別判斷走哪條路, 而且「把第二種流量弄壞」是絕對不能接受的失敗結果。

網域比對的邏輯其實不難。真正卡住的是一個我以前從沒遇過的核心層行為,而且它一開始表現出來的症狀, 看起來完全就像是代理程式本身的 bug。

為什麼路由器規則或 VLAN 都解決不了這個問題

看起來直覺的解法其實都行不通。防火牆規則可以照目的 IP 導向,但串流平台大多藏在共用的 CDN IP 範圍後面, 很難跟同一個 CDN 上的其他服務乾淨地分開。另外接一個 VLAN 或 SSID 能解決「裝置隔離」, 但解決不了「依網域分流」——你還是需要某個東西真的看得懂代理協定, 並且針對每一條連線判斷要走哪一條路。而且家用的 mesh AP 通常根本不支援每個 SSID 各自打 VLAN tag, 這條路一開始就走不通。

Unlock this article to keep reading, or subscribe for unlimited access to everything. See Pricing for details.