Googld Cloud (GCP)搭建VPN Server (V2RAY X-UI) 翻牆教學

Aaron Chen
7 min readSep 14, 2021

這幾年來與中國有緣,
於似乎也跟VPN有緣。

從一開始的APP翻牆,
到2019年去中國拍電影,
自己搭建的GCP+Outline超順路線,
拿來下載台灣的素材隔岸交件、處理事情。

但當時這種VPN就已經瞞不過長城了,
所以雖然跑很快,但是常常隔沒兩天,又被長城BAN掉,
回台後興起用家裡的小米路由器Mini作為VPN Server的折騰念頭。

內建的韌體不行,
當時想要擴裝第三方的Misstar Tools工具箱,
有點像是Chrome的擴充工具,
對岸的情況是這樣的,築牆與翻牆的變化瞬息萬變,一日千里,
常常某個好用的工具火起來,瞬間就停止更新了、消失了、不支援了。
看了看日期可能還是幾天、幾周前關閉的。

於似乎套件東壞西壞,所以好不容易內網連進路由器,
找到網路上還有安裝包的載點直接指令安裝好之後,
連進去卻是空的。

索性不裝擴充直接換掉韌體,
圈子內鼎鼎有名的老毛子Padavan,
適用任何路由器的功能強大的固件,
也算是千辛萬苦的裝好後,套用Open VPN總算成功搭建連上,
又因為武漢肺炎,去中國的工作一延再延進而取消,也就沒有用上,
然而隔不久就接上電信公司的電話,
簡單來說就是可能我的防火牆沒搭好漏洞百出,
在網路上裸奔一直被上百國外IP攻擊,
乾脆就直接把這台路由器拔了,塵封。

今年由於再度有可能到中國工作,
所以雖然目前已經有IVACY VPN了,
不過也不確定到底有沒有用,穩不穩定,
目前聽聞最穩妥的方式是V2RAY,
所以就繼續折騰了,
不知道為什麼真的不想直接連現成的機場,
就覺得,明明有現成的設備,搭建自己的Server多好啊...
止不定還能連進內網當NAS,唉

於是乎去年買的A300_2400G就派上用場了,
這台準電腦拿電流表測過功耗也才20W左右,
於似乎雙系統安裝了Linux Mint,
卻一直搞不定root權限問題,
可能我安裝時選雙系統自動套用,
有些該自定義的地方沒設定到。

sudo passwd root #設定Root密碼(默認無)su #以當前身分臨時開通管理員權限(仍非管理員)sudo -i #切換管理員身分(但不知道為什麼我使用這個指令腳本仍會顯示請以管理員身分執行)
明明sudo -i了

於是乎回過頭,又走回了老路,GCP虛擬機的懷抱
GCP在一定的使用量內是免費的,創好專案後創建VM執行個體

大致上這樣,性能選最小的,地區因為創過台灣的,這次我選香港看看
網路標記這邊這個"port54321"tag 就是套用防火規則的tag,待會隔壁創建防火牆規則
為了避免外部IP更動,這邊要選擇固定IP

創建好虛擬機後,建立防火牆規則,可以直接在上方搜尋欄搜尋

因為後面用的腳本端口默認TCP 54321,所以這邊填54321就好,如果有遇到防火牆問題,可以試著勾全部允許看看

基本上因為接觸過,回憶起來還算熟悉,
我講得沒有清楚的地方可以參考下面兩篇,觀念是一樣ㄉㄜ。

Google Cloud Platform 搭建個人VPN. 手把手教你用 Google Cloud Platform 搭建個人VPN… | by Yu Hao yasuo | 小澄宇宙 (xiaorangetech.com)

在 GCP(Google Cloud Platform) 上面架設 Outline VPN | XiaoSean

到這邊都都好後,可以回VM開啟SSH

照著這篇X-ui走搭配影片YouTube
應該問題不大,這篇也可參考看看。

sudo -i #變身管理員身分省麻煩apt update -y #Debian/Ubuntu 命令
apt install -y curl #Debian/Ubuntu 命令
apt install -y socat #Debian/Ubuntu 命令

更新證書指令,可能預設安裝好了,不過不管,按順序尻一遍

curl https://get.acme.sh | sh #安裝ACME腳本~/.acme.sh/acme.sh --register-account -m xxxx@xxxx.com
~/.acme.sh/acme.sh --issue -d mydomain.com --standalone

這個好像是要用信箱註冊帳號,
然後輸入自己申請的域名
加粗的部分替換成自己的即可。

域名申請不難,按照這篇文章Namesilo域名注册和使用教程 — V2ray XTLS黑科技 (v2xtls.org)操作就可以,買好域名(一年1美元)DNS輸入GCP上的外網IP即可。

然後要等一下,我自己大概是30~60分鐘,買好的域名才會ping到更改好的IP,接下來才能進行上面指令,不然會失敗。

~/.acme.sh/acme.sh --installcert -d mydomain.com --key-file /root/private.key --fullchain-file /root/cert.crt

應該是把認證的證書安裝到虛擬機的資料夾裡

bash <(curl -Ls https://raw.githubusercontent.com/vaxilu/x-ui/master/install.sh)

最重要的X-UI一鍵安裝腳本代碼,這個安裝成功就萬事大吉了
安裝啟動之後,鑒於上面已經打開防火牆,
就可以用網頁連上我們的V2RAY視覺化操作介面
(有點類似AP的192.168.0.1)
網址列輸入 http://固定IP:54321

帳號密碼默認admin / admin

進入站列表新增節點

配置範例 端口要用默認的或是443,不是隨便一個都可以 我輸入555就失敗,牆沒開 你不能進

完成後添加,點操作生成QR CODE

iOS上的VPN APP我自己是用Shadowroket,付費100元,
安全穩定就用它了,打開他掃QR CODE,應該就能連上了。

備註幾個過程自己碰到的雷點

因為是虛擬機,本來想摳指令sudo ufw allow 54321/udp 打開端口,
但GCP要在平台上尻防火牆才有用。

  1. 域名本想用免費的Freenom,不過似乎會有憑證認證問題,免費不可行。
  2. 自己家用主機的話因為有很多台裝置連到路由器,似乎要進行NAT Port Forwarding,原本證書一直安裝失敗,猜測是防火牆問題,開通後就能安裝了。

4. X-ui生成的QR CODE用手機掃後如果成功沒顯示延時Time Out,但依然連不上,確認下客戶端的TLS有沒有打勾

5. 如果X-UI面板就顯示error,大概是證書沒安裝好,證書的目錄位置打錯字(自己發生過兩次⋯)

--

--