黎顛雲 這是黎顛雲的部落格!
在 macOS 上拼出 Per-App VPN 2018/1/19 沒有人留言

最近因為心血來潮,想把一直習慣使用的網易雲音樂換成 QQ 音樂,就買了有中國節點的 VPN 來用。

一開始在 Android 和 Windows 上用都很好,有限定某 App 使用 VPN 其餘 Direct 的功能,不料在下載 macOS 的客戶端後發現並沒有這個功能。

詢問了客服,說是有技術問題,做不出來。

因為想逃避學測個性使然,所以我就想盡辦法把他拼出來了。

一開始嘗試的是 PAC 和 dante。dante 在 macOS 上有多難弄就不說了,弄出來之後系統還三不五時崩潰,氣死。

後來是用 PAC 和 Squid 的組合,不過依然不夠穩定。最後發現了一個好東西 Proxifier,解決了一切問題。讚讚讚!

原理

其實原理很簡單,就是用一個 Proxy 把流量導向 VPN 而已。

 

準備

  1. 一個可用的 VPN (本篇以 macOS 內建的 VPN Client 為例,其他 VPN 亦如)
  2. Squid (本篇使用 Squid 的非官方簡易 GUI SquidMan
  3. Proxifier for Mac OS X

 

找到 VPN 的 device name 和 IP

首先,打開終端機,分別在連上 VPN 前後各執行一次 ifconfig,比對差異。

通常會差在最後一項,像我的是
ppp0: flags=8051<UP,POINTOPOINT,RUNNING,MULTICAST> mtu 1280
inet 10.88.16.121 --> 1.0.0.1 netmask 0xff000000

其中的 ppp0就是我們要找的 device name 了。

在連接上 VPN 後,把 VPN 連線的 IP 位址記錄下來。(後稱這個值為 VPN IP

 

設定 Proxy

其實應該是要設定 HTTPS Proxy 的啦,不過因為太麻煩了,加上我只是要聽 QQ 音樂而已沒有存取 HTTPS 網址的需求,所以就只弄 HTTP Proxy 了 。

有興趣的話可以自己弄成 HTTPS Proxy 或 SOCKS Proxy,原理一樣。

打開 SquidMan,左上角 SquidMan > Preferences

將 HTTP Port 改成你自己喜歡的數(建議四位數,太小容易撞到系統給的,上限 65535)後稱 Proxy Port


照圖設定,允許本機自我存取 Proxy。如果你的區網也想存取這個翻回去的 Proxy 的話你也可以把網段加進去。

接著在 Template 加入一行 (建議加在最上面)
tcp_outgoing_address YOUR_VPN_IP
其中 YOUR_VPN_IP 請自行代換成前稱的 VPN IP

接著按下 Save,連接你的 VPN 並啟動 SquidMan,Proxy 的部分就結束了。

*小叮嚀:透過 VPN 連線傳送所有流量千萬不要勾選哦!

 

Proxifier

新增 HTTP Proxy

打開後,依序按下 Advanced > HTTP Proxy,將 Enable HTTP proxy servers support 啟用。

接著由後面的視窗開始依序按下左上角的 Proxies > Add,進入新增 Proxy 的頁面。

Address 填入 127.0.0.1,Port 填入你的 Proxy Port,Protocol 選 HTTP,按下 OK 新增你的 Proxy Server。

指定特定應用程式通過 Proxy

由後面的視窗依序按下 Rules > Add,進入新增規則頁面。

Name 是規則名稱,隨意。

Applications 是指定的應用程式,可以試著輸入應用程式的名稱,或是去活動監視器看一下應用程式的名稱。都不行的話也可以進應用程式資料夾看一下應用程式的檔案名

像是 QQ 音樂,實際上的應用程式名叫做 QQMusic。

以我為例,將 QQMusic 填入 Applications 中。

小撇步:應用程式名稱的指定支援萬用字元,如果應用程式名中有空格的話要記得把整個應用程式名用""括起來。

Target Hosts 是指定要轉送流量的目標網址或 IP,以我的情況是轉送整個應用程式的流量就好,空白。

*小撇步:支援萬用字元

Target Ports 是目標的 Port,以我為例一樣空白。

Action 選擇我們剛剛新增的 Proxy,OK 新增。

回到 Profile,將 Default 的 Action 設為 Direct 來讓其他未指定的應用程式不要使用 VPN。

大成功

連接 VPN > 打開 Squid > Proxifier 設定好 (Proxifier 沒有開關),應該就能見到應用程式翻牆成功啦!

全●解●鎖! Ta-dah~ 就這樣土炮了一個 Per-App VPN~~

 

分享
分享給你所有的朋友

留下留言
來插頭香吧!成為第一個留言的🌚👏👏

請不要填寫真實姓名
這不會公開
選填
留下留言