最近看 Trojan 加密代理蠻流行的,與以前 Shadowsocks(SS) 之類加密代理都大不相同
SS 使用了自定義的隨機加密 Protocol 來隱藏自己上網的流量,無明顯特徵
但是其實 G.F.W 真要弄你還是會被偵測出來
而 Trojan 則逆向思考,完全使用 TLS/SSL Protocol 不進行偽裝
所以連線使用的過程,完完全全就像在瀏覽一個 https 網站一樣
目前 https 是全球網際網路使用最多的流量,要在大海裡面撈針無疑相當困難
更妙的是如果你沒有正確的 Trojan 密鑰,Trojan 可以直接偽裝返回一個正常的 Web 網站
外人看的話完完全全就是一個正常到不行的網站 😆
Trojan 原版設定起來比較復雜,不過因為得益開放原始碼的關係,有大神直接改寫成 Golang 版本「Trojan-Go」
還加入許多增強功能,大大降低部屬的難度與後續維護、使用的困難
這篇來快速記錄一下部屬過程
開始以前,列一下我使用的環境
- 一台 Linux 伺服器,跑 Ubuntu、Debian 都可(amd64)
- 一個域名(付費 or 免費都可)
- 伺服器 80 跟 443 連接埠需開放且不能被其他服務佔用
用 nginx 搭一個「誰在講幹話」網頁
如上所說,因為 Trojan-Go 可以讓外人連線時直接丟一個正常網頁給對方
如果你不知道要丟什麼網頁,這裡推薦可以用「誰在講幹話」
下面直接來安裝,首先 SSH 登入到準備要安裝 Trojan-Go 的伺服器
# 更新一下系統、安裝所需軟體
sudo apt update && sudo apt full-upgrade -y
sudo apt install nano wget git nginx -y
# 把誰在講幹話拷貝下來
git clone https://github.com/tasi788/Whosis-Sayings.git
上面執行完,會把誰在講幹話的原始碼都拷貝到伺服器上,只要記住路徑即可
就可以不用管他了
接下來寫一下 nginx 設定檔
sudo nano /etc/nginx/sites-available/default
可以刪掉預設設定檔裡面的內容,尤其是佔用 80 連接埠的部分都要刪光光
接著拷貝以下內容,貼到設定檔裡面
|
|
記得修改第 7 行誰在講幹話的路徑,之後保存退出
最後重新啟動一下 nginx 服務即可
sudo systemctl restart ngnix
下載安裝 Trojan-Go 最新版
# 建立新資料夾,準備要放 trojan-go 進去
mkdir ~/trojan-go && cd ~/trojan-go
# 下載最新版 https://github.com/p4gefau1t/trojan-go/releases
wget https://github.com/p4gefau1t/trojan-go/releases/download/v0.5.1/trojan-go-linux-amd64.zip
unzip trojan-go-linux-amd64.zip
透過以上指令下載解壓縮 Trojan-Go 以後,我們準備要先請求 Let’s Encrypt 的憑證,這部分 Trojan-Go 都已經內建
確認你伺服器防火牆的 80、443 連接埠都已經打開並且沒有其他服務佔用
因為需要綁 80、443,所以需要 sudo 或者 root 權限執行
sudo ./trojan-go -autocert request
上面這條指令輸入後,會詢問你要綁的域名以及你的 email
依照提示輸入完畢後,就等 LE 簽發憑證下來,Trojan-Go 會把這些資料都保存起來
這些檔案也不要隨便分享給其他人
要注意的是 LE 憑證有效期通常只有三個月,續期時可以使用以下指令
sudo ./trojan-go -autocert renew
繼續寫一個 Trojan-Go 伺服器的設定檔
nano server.json
拷貝以外內容然後貼上
|
|
以上第 8 行記得修改成你喜歡的密碼,第 13 行請修改掉為你的域名
第 5、6 行就是遇到沒有密碼的人就丟給他我們搭的 nginx 誰在講幹話 nginx 伺服器
同樣記得保存之後退出
接下來製作一個開機自動執行的 Service
sudo nano /etc/systemd/system/trojan-go.service
拷貝以下內容貼上
|
|
以上第 10 行請修改為你的路徑即可,保存退出
最後輸入以下指令就可以啓動 Trojan-Go 服務
sudo systemctl enable trojan-go
sudo systemctl start trojan-go
# 檢查啓動狀態是否成功
sudo systemctl status trojan-go
如無問題,可以打開自己電腦上瀏覽器,輸入網址看看 https://whosaying.example.com
看到誰在講幹話的網頁就表示 Trojan-Go 已經正常運作啦!
另外如果你想要更加了解詳細設定,可以參考下面網址的官方說明書
https://p4gefau1t.github.io/trojan-go/basic/full-config/
Trojan-Go Client 連線
搭好服務以後,我們就可以用這個代理來上網
同樣得益於 Golang 的優勢,多平台編譯不是很難,Trojan-Go 同樣可以作為 Client 使用
請根據你自己的平台下載
https://github.com/p4gefau1t/trojan-go/releases
下載回來後,同樣解壓縮出來,在本地建一個 client.json 設定檔
|
|
第 3、4 行會在本機電腦上開一個 HTTP / SOCKS5 代理出來
第 5、6、8、11 行請根據你自己在伺服器設定時的資料填進去即可
第 5 行也可以直接填伺服器 IP
接著直接在你 macOS 電腦上啓動 Client 連線
trojan-go -config client.json
成功啓動以後,Trojan-Go 就會連上伺服器,並在本機指定連接埠打開代理
在電腦瀏覽器上,我們可以安裝 SwitchyOmega 來智慧指定代理
而在 iOS 上面支援 Trojan 的 App 也蠻多的,其中就包含之前介紹過的 Surge 網路神器
很簡單直接在 Surge 裡面新增一個 Trojan 代理,然後把伺服器資料都填進去即可
搞定,收工~ 🖖