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 掉。如果有兴趣可以试试我用到机场 忍者云

加载中...
此文章数据所有权由区块链加密技术和智能合约保障仅归创作者所有。