【香港特色】OpenWRT路由器免APP自動分流ChatGPT流量走VPN的設定細節(非教學)

香港由治及興,跟隨祖國不能訪問ChatGPT,導致ChatGPT-4o的免費發佈竟然無份享受??!!總所周知,使用VPN幾乎是在香港使用ChatGPT的唯一方法(【ChatGPT】用VPN的解決方法)。如果你和小U一樣,經常使用ChatGPT,就會遇到頻繁開關VPN的問題。因此,小U發佈了新產品可ChatGPT分流的VPN路由器, 只有訪問 chat.openai.com 時候,路由器會自動將流量送至台灣VPN,而訪問其他站點時候,就不會經過VPN,直接從本地寬頻訪問。昨天一在臉書發佈就得到很多網友的查詢,這一方法可以惠及所有港人,在港企業,免在AI浪潮中落後太多(連震撼免費的ChatGPT-4o都無法使用真係太可憐)。因此本文無保留分享所有OpenWRT路由器免APP自動分流ChatGPT流量走VPN的設定細節,希望可以讓更多的香港人追上世界的AI腳步。

Upsangel – 【極速開發🏃‍♀️🏃‍♂️🏃】 兩日前發佈的新品Surfshark / NordVPN… | Facebook

註:因小U網販佔用我25個小時,本文僅有20分鐘時間完成,十分抱歉無法詳盡列出每一步驟,只能將精華列出,有經驗有學習精神、研究探索折騰能力的人士必定“心領神會”。

必須準備的

  1. OpenWRT 路由器一部 (如果未有,可直接購買 Surfshark / Nord VPN 免APP WIFI直連VPN路由器(可ChatGPT分流),小U網販出貨前會爲你設定好,無需再進行本文餘下步驟)
  2. 有效的VPN訂閱。例如 :

主要步驟

  1. 利用有效的VPN訂閱,在路由器上創建VPN Client,連上VPN的台灣(或其他)伺服器
  2. 利用 OpenWRT的 Policy Base Routing 插件,配置只有訪問 ChatGPT 相關網站的域名和IP指向VPN接口。

魔鬼細節

1、PBR的默認網關(Default Gateway)

這在PBR頁面的頂部有顯示默認的流量是走哪個接口,是WAN(本地寬頻直出)還是wg/ovpn(走VPN),我們的目標,是絕大部分流量都經WAN直出,如下圖所示:

但如果你跟住網上幾乎所有OpenWRT上綁定Wireguard client的教學做,包括 Surfshark自己的 How to set up WireGuard® on OpenWRT router – Surfshark Customer Support 都會教你將 「Route Allow IPs」設定爲打開,這樣子所有上網流量,都會首先流經VPN,而不是WAN的本地寬頻直出。所以第一樣,要根據README文件中,將「默認第一順位」交翻比WAN。

細節還有細節,README中提到兩點,第一是上述的關閉「Route Allow IPs」,第二是 net.ipv4.conf.wg0.rp_filter = 2 ,但是在什麼版本中需要你自己摸索,我是有你冇你將其添加先算。

在 Linux 的網絡配置中,net.ipv4.conf.wg0.rp_filter 這個設定是用來控制逆向路徑過濾(Reverse Path Filtering, rp_filter)的。逆向路徑過濾是一種網絡安全技術,用來確保從某個網絡接口收到的封包的來源地址是通過該接口路由表可以達到的,這樣做可以防止IP地址欺騙。

wg0 通常指的是 WireGuard VPN 的一個網絡接口。WireGuard 是一個現代的 VPN 協議,以其簡單和高效的設計著稱。

設定 net.ipv4.conf.wg0.rp_filter 的值為 2 意味著對於通過 wg0 這個接口的封包,將啟用寬鬆模式的逆向路徑過濾。這裡的數值可以設為:

  • 0:關閉逆向路徑過濾。這意味著所有的封包都會被接受,不管它們的來源是否合理。
  • 1:嚴格模式。只有在來源地址通過該接口的路由表可以直接到達時,封包才會被接受。
  • 2:寬鬆模式。封包只要能通過任何接口的路由表到達來源地址,就會被接受。

使用寬鬆模式可能有助於在使用多路徑路由(Multipath Routing)或某些特殊的網絡配置時避免封包被不當丟棄。這種設定尤其在 VPN 和其他通過特殊路由策略操作的網絡設備中非常有用。

2、VPN的分流設定

根據PBR作者文檔,PBR既可以做到IP分流,也可以做到域名分流。建議你先放入域名 whatismyip.net 走VPN,保持 whatismyipaddress.com 走本地,試試域名分流是否正常。這一步十分簡單,如果不成功,就是上一步有嘢未set好。

然後就到重點,本來以爲將 ChatGPT的域名 chatgpt.com 和 chat.openai.com 放入去,就可以搞掂。但發現依然被block,我的最後是要將以下域名和IP都放入分流規則才成功讓OpenWRT路由器自動上到 ChatGPT:

如果太細,請按右鍵下載圖片

除了域名,小U發現IP地址也十分值得加入: nslookup chatgpt.com 解析出來的IP。

最具討論價值應該是 cloudflare的域名,因爲小U發現,chatgpt似乎是用 cloudflare的前置防火牆/WAF/Tunnel之類的技術來判別geo IP,這導致你未真正觸及 chatgpt 時候已經被 cloudflare 識別你的真IP所在地。所以要將 cloudflare 加入。但副作用是所有 cloudflare 相關業務都會被轉去行VPN。

有心研究的朋友請分享是否有更好的解決方法。

未解決的問題

1、APP如何分流?

以上方法,可以讓網頁無縫訪問ChatGPT,但是在APP中使用,會發現可以登入但一旦發起對話就會被偵測到香港IP。似乎APP中有更多需要 reverse engineering 的地方。APP高手請出招。

2、能否與Tailscale 共存?

我暫時的體會是不可以。Tailscale要求安裝的 iptables-nft 會導致 pbr運作在 nft模式,而nft模式下的pbr不知爲何連正常連線也不能完成。有待研究如何讓兩者共存。有解法的朋友歡迎留言。

一寫又超過了20分鐘,本文有幫助到你?歡迎討論

歡迎你的留言討論:

你可以一針見血

by Upsangel
Logo