使用 Docker 快速將 OpenVPN 轉換成本地 SOCKS 代理

最近一、兩年各類 VPN 廣告鋪天蓋地,而且還有終身訂閱的 VPN,價格不貴

不過有些低價到讓人懷疑他們會不會隨時就跑路了?! 🤔

我覺得只要該公司能撐到三~五年,就已經算是賺到了,至今能經營超過百年的公司都算厲害了~

根本不期待他們能運作超過十年。。 😂

VPN 偶而拿來跨區看其他國家影片或者拿來臨時加速上網還是挺不錯的

不過使用他們官方提供的 App 來連線使用的話,通常都是全域網路都會被帶入到 VPN 隧道裡面

雖然簡單無腦,但是不適合需要進階一點的使用方式

所幸他們這些 VPN 服務商有些都有提供 OpenVPN、IKEv2 or WireGuard 等其他連線方法

這篇主要是讓你透過 Docker 快速將 OpenVPN 轉換成本地內網可用的 SOCKS 代理

轉換成 SOCKS 代理後,你就可以使用 Proxy.pac、瀏覽器的外掛 SwitchyOmega 或者 Surge。。等等

來達到進階自由的代理模式,例如你可以設定遇到 Netflix 域名時,就透過日本代理去連線

遇到 Disney+ 時候,就透過美國代理去連線,遇到沒有設定的域名,就還是維持你原本的網路去上網

全自動無需每次都要手動開關 VPN,非常的方便

下載 OpenVPN.ovpn 設定檔

以下使用 KeepSolid VPN Unlimited 來搭配使用(各家公司 OpenVPN 提供的連線方式有可能不同)

首先先到 VPN Unlimited 官網的管理後台登入

https://my.keepsolid.com/products/vpn/

這邊可以手動下載到他們家有提供的各種協議 VPN,你選好需要的國家跟協議以後

就可以直接下載設定檔使用

/media/2020/12/i2YArvpq45YonAphFk10.png

可以多選幾個常用國家一起下載回來,每個國家都會是獨立的 ovpn 檔案

下載的檔案請妥善保存,稍等要把這檔案掛入 Docker 裡面

利用 Docker 快速部屬

在 Docker Hub 上面找到有人實作的現成 image

測試一下,只要照著說明書填入對應的路徑與名稱即可開箱即用

需要詳細使用說明可以去看原始碼: https://github.com/binhex/arch-privoxyvpn

適合 VPN Unlimited 的 Docker 指令如下(只啓動 SOCKS、關閉 Privoxy)

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
docker run -d \
--cap-add=NET_ADMIN \
-p 9118:9118 --restart=always \
--name=ovpn2socks-name \
-v /path/to/your/openvpn.ovpn:/config/openvpn/openvpn.ovpn \
-v /etc/localtime:/etc/localtime:ro \
-e VPN_ENABLED=yes \
-e VPN_PROV=custom \
-e VPN_CLIENT=openvpn \
-e LAN_NETWORK=192.168.1.0/24 \
-e NAME_SERVERS=1.1.1.1,8.8.8.8 \
-e SOCKS_USER=username \
-e SOCKS_PASS=password \
-e ENABLE_SOCKS=yes \
-e ENABLE_PRIVOXY=no \
-e DEBUG=false \
-e UMASK=000 \
-e PUID=0 \
-e PGID=0 \
binhex/arch-privoxyvpn

如上,有以上幾行設定請按需修改

第 3 行:映射的 port 也就是 SOCKS 連線會用到的,如果你打算開多個的話,記得把數字跳開

第 4 行:容器的名稱,請自己隨意取自己能一眼辨識出的名字即可

第 5 行:對應到剛剛下載回來的 OpenVPN.ovpn 檔案路徑

第 10 行:請改為你自己內部網路的 IP 段

第 11 行:使用的 DNS Server

第 12、13 行:SOCKS 連線使用時需要驗證的帳號跟密碼

以上修改為自己環境設定後,全部拷貝起來,一次貼到已經安裝好 Docker 的主機上

按下 Enter 馬上跑起來,稍等十幾秒等待容器建立 OpenVPN 連線後,即可開始使用

如果你想要同時建立多條線路的話,只要修改不同 ovpn 檔案路徑並把容器名稱跟 port 跳開

即可輕鬆同時建立多條線路,但你要注意一下你購買的 VPN 有沒有超過同時在線數量的限制

每一個 OpenVPN 連線都會建立一個獨立 Docker 容器

2020/12/03 update
如果你使用 Ivacy VPN 可以參考這篇: https://www.jkg.tw/p3402/

SwitchyOmega 設定

Docker 幫你自動連好 OpenVPN 與搭好 SOCKS 代理後

接下來我們使用其他代理軟體就能輕鬆透過我們搭好的隧道上網了

首先打開 SwitchyOmega 的設定視窗,準備新增一個新的 Profile

接著隨便取個名字與選好 Proxy Profile

如下圖填好各欄位的資料,請根據自己前面設定的環境去修改

/media/2020/12/cngAj4n32079OpdA2N00.png

我們上面 SOCKS 代理有加驗證所以上圖第 4 步驟要填帳號跟密碼

/media/2020/12/tvuqa2yu09WWfgXxgs01.png

記得 Apply 保存一下設定即可

想要自動根據域名來切換各國家代理的話,可以依照下圖範例

上圖只是範例,照抄不一定有效,請根據自己需求與實際域名修改

至此就完成所有設定囉!如此輕鬆就能將 OpenVPN 轉成本地內網 SOCKS 代理

想要更進階的玩法可以自己嘗試摸索唷! 🖖