Tom

Tom

如何使用ShadowTLS

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. 新建一個自定義出站(配置 1)
{
  "type": "shadowtls",
  "tag": "shadowtls-out",
  "server": "伺服器ip地址",
  "server_port": 45632,
  "tls": {
    "enabled": true,
    "server_name": "www.bing.com"
  }
}
  1. 新建一個 Shadowsocks 出站(配置 2)可以通過可視化界面創建
  2. 按 配置 1 配置 2 順序組成鏈式代理

同時使用 NekoBox 的鏈式代理,即使不使用 ShadowTLS,也可以通過機場將流量轉發到自己伺服器上,以免伺服器被 ban 掉。如果有興趣可以試試我用到機場 忍者云

載入中......
此文章數據所有權由區塊鏈加密技術和智能合約保障僅歸創作者所有。