资源共享,记录个人心得等

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

5.安装后cpu占用100%

在某次更新内核后发现cpu占用100%,在监控查询后发现是io等待占用了很高的使用量,并且测试磁盘io速度没问题,机器正常运行服务也不卡,很奇怪,甚至找了厂商怀疑是宿主机io有问题,但反馈说看不出什么问题。就搁置了,偶然在github的issues发现有人询问这个问题,按照回复的方法把cpu占用问题解决了。

需要修改我们上方的/etc/systemd/system/shadow-tls.service文件,在Service模块下增加一行,然后 systemctl daemon-reload 刷新服务后重启即可解决。

[Service]
Environment=MONOIO_FORCE_LEGACY_DRIVER=1
赞(0)
转载需标明出处Lee's Blog » 如何使用ShadowTLS

评论 抢沙发

登录

找回密码

注册