1. 簡介#
ShadowTLS 的優點在於它使用 TLS 混淆,但並不需要提供網站端的證書,可以使用任意網站證書進行混淆。同時在我使用時 Windows 是沒有客戶端的,當下也是沒有正經具備 GUI 的客戶端,如果想用,需要一定的門檻,因此當前還算比較小眾。它的安裝非常方便,二進制文件直接運行即可,參數也不複雜。正因為它是以混淆為目的的工具,因此在伺服器上需要再單獨開啟加密程式,例如 Shadowsockes 或 snell 等軟體。
流程則是 SS 監聽端口 ->ShadowTLS 配置端口 ->ShadowTLS 監聽端口 -> 客戶端配置 ShadowTLS 監聽端口
2. 安裝加密代理程式#
推薦使用 Teddysun 的 Docker 方式安裝,具體可以參考:https://hub.docker.com/r/teddysun/shadowsocks-rust
訪問不了的話我將主要配置寫在下面
#創建配置文件
mkdir -p /etc/shadowsocks-rust
#寫入配置文件,具體內容如密碼自己修改,端口號可以不改,這樣docker啟動時可以不改很多指令
#如果需要修改端口號,則注意容器內外端口號映射,不了解可以搜索或參考我的docker筆記。
cat > /etc/shadowsocks-rust/config.json <<EOF
{
"server":"0.0.0.0",
"server_port":9000,
"password":"password0",
"timeout":300,
"method":"aes-256-gcm",
"nameserver":"8.8.8.8",
"mode":"tcp_and_udp"
}
EOF
#拉取鏡像並開啟容器
docker pull teddysun/shadowsocks-rust
docker run -d -p 9000:9000 -p 9000:9000/udp --name ss-rust --restart=always -v /etc/shadowsocks-rust:/etc/shadowsocks-rust teddysun/shadowsocks-rust
如果只使用 Surge 的話可以考慮使用 Snell,以下是 Surge 作者對兩者的對比:
- 完全無特徵:如 shadowsocks、VMess 和其他衍生協議,目前已發現此類加密後完全不具備任何特徵的流量,反而容易被當成一個特徵進行封鎖。
- 隨機特徵:Snell 的設計方式,Snell 客戶端會隨機生成一些特徵,且隨機生成時依賴於當前 session(Surge 重載一次配置算一次新的 session)、PSK 哈希等輸入,使得每個用戶的流量特徵都不盡相同。(請放心,特徵很弱且算法不可逆,而且每次重啟 Surge 後特徵都會更新,絕不可能用於用戶追蹤)目前該方案表現良好。
同時 Snell 也足夠小眾,如果有需要可以去Surge 手冊使用,也是二進制直接運行即可。但其實已經使用 ShadowTLS,底層使用什麼加密已經不再重要。
3. 配置 ShadowTLS#
參考官方 github:https://github.com/ihciah/shadow-tls/releases
有兩種方式,一種是修改官方提供的 docker-compose.yml 文件使用 Docker 運行,另一種是下載二進制文件運行。
我使用的是二進制方式:
#下載二進制文件到/usr/bin中,我下載的為當下最新版,如果之後有更新,需要自行去releases中尋找。
cd /usr/bin
wget https://github.com/ihciah/shadow-tls/releases/download/v0.2.23/shadow-tls-x86_64-unknown-linux-musl
#增加運行權限
chmod +x shadow-tls-x86_64-unknown-linux-musl
#修改開機自啟動文件:
cat > /etc/systemd/system/shadow-tls.service <<EOF
[Unit]
Description=Shadow-TLS Custom Server Service
Documentation=man:sstls-server(1)
After=network-online.target
Wants=network-online.target
[Service]
Type=simple
ExecStart=/usr/bin/shadow-tls-x86_64-unknown-linux-musl --v3 server --listen 0.0.0.0:45632 --password I6knDArfHW2TPhRdB7 --server 127.0.0.1:9000 --tls www.bing.com:443
[Install]
WantedBy=multi-user.target
EOF
#以上I6knDArfHW2TPhRdB7是密碼文件,--v3是運行版本,--listen是監聽再45632端口,即客戶端配置的端口應是45632,--server對應的是加密代理的端口上面配置的是9000,--tls是混淆的網站證書,不要填寫google這類網站。
#然後刷新並啟動服務
systemctl daemon-reload
systemctl enable shadow-tls.service
systemctl start shadow-tls.service
4. 配置客戶端#
在配置客戶端時注意,代理類型或方式應選擇加密代理方式,如 ss 或 snell,端口填寫 ShadowTLS 的監聽端口,密碼輸入加密代理中的密碼,在單獨填寫 Shadow-TLS 配置位置填寫對應版本:v3 ,Shadow-TLS Password 對應 Shadow-TLS 啟動時填寫的密碼,SNI 填寫啟動時 --tls 的對應網址。
在 Windows 中如果使用的話需要用到 sing-box,具體可以參考:https://sing-box.sagernet.org/zh/examples/shadowtls/
需要自行編寫配置文件,我更推薦使用 NekoBox,它自帶能夠設置鏈式代理,在設置中選擇核心為 sing-box,然後根據官方配置分別創建 ShadowTLS 和 ss 的配置,其中 ShadowTLS 需要使用自定義出站配置。詳細可以參考官方手冊:https://matsuridayo.github.io/n-configuration/#_13
這裡我截取部分
示例: 在 NekoBox 中使用 ShadowTLS 伺服器。
- 新建一個自定義出站(配置 1)
{ "type": "shadowtls", "tag": "shadowtls-out", "server": "伺服器ip地址", "server_port": 45632, "tls": { "enabled": true, "server_name": "www.bing.com" } }
- 新建一個 Shadowsocks 出站(配置 2)可以通過可視化界面創建
- 按 配置 1 配置 2 順序組成鏈式代理
同時使用 NekoBox 的鏈式代理,即使不使用 ShadowTLS,也可以通過機場將流量轉發到自己伺服器上,以免伺服器被 ban 掉。如果有興趣可以試試我用到機場 忍者云