Surge && shadow-tls v3
本文最后更新于 2024-04-05,文章原本内容可能已经过时,请查看是否有更新内容。
前言
surge的订阅功能 shadow-tls v3,不用是浪费(doge
感谢老刘又有东西让我们折腾了(doge
那么现在就来分享一下如何使用,以snell为例,ss同理
不过不建议ss+stls,udp没了
点此查看iptables转发UDP流量,曲线救国⚠️前排提醒:善用右边的大纲目录跳转
docker搭建shadow-tls
docker compose搭建shadow-tls
用同一份docker-compose.yml文件搭建shadow-tls有两种情况,请自行选择跳转
一种是如果你之前已经搭建了snell,现在想要搭建shadow-tls
一种是你之前什么都没搭建,现在想要搭建snell+shadow-tls
如果已搭建snell
如果你是按照我的这篇博客搭建的snell,那你接下来可以无痛搭建shadow-tls
⚠️如果你不是按照我这个教程来的话,那么在docker compose搭建下,你需要自行修改一下docker-compose.yml所在的文件夹名称!!
把
/root/snelldocker
改成你自己的
⚠️:docker compose搭建shadow-tls不需要区分amd或者arm
查看snell配置
首先用cd命令,进入snell的docker-compose.yml
所在文件夹
cd /root/snelldocker
接下来教程都将以这个路径作为例子,请将
snelldocker
换成自己的文件夹名
此时里面已经有你搭建的snell了,你需要在docker-compose.yml
里加上shadow-tls
的配置,但在此之前,得先知道你自己snell的节点端口
输入命令查看snell配置
cat /root/snelldocker/snell-conf/snell.conf
图例:
改docker-compose.yml第一种方法
可以用带sftp的ssh工具直接将下面的这一段复制到docker-compose.yml
里去
shadow-tls:
image: ghcr.io/ihciah/shadow-tls:latest
container_name: shadow-tls
restart: always
network_mode: "host"
environment:
- MODE=server
- V3=1
- LISTEN=0.0.0.0:8443 # ipv6的话改成[::]:8443 ,8443不用改动
- SERVER=127.0.0.1:xxx # ipv6的话改成[::1]:xxx ,xxx是你刚刚记下来的snell节点的端口
- TLS=gateway.icloud.com:443 #这里可以自己选,下面放了作者推荐的链接
- PASSWORD=Gm8UXm6aridZ # 这里是密码,随便改
要改
TLS
的话,作者推荐V3 Protocol · ihciah/shadow-tls Wiki · GitHub
⚠️注意:里面的一些内容要自己改动,
而且缩进一定一定要对齐!!
如图红线所示对齐
图示例可能与你的配置不同,不需要管,根据提示该改的地方改,其他照着命令复制就行
改docker-compose.yml第二种方法
如果没有sftp的话,那也可以使用vim工具(⚠️注意,要用英文输入法)
输入以下命令
sudo apt-get install vim -y
sudo vim /root/snelldocker/docker-compose.yml
就会出现如图
按i
进入编辑模式,将光标移动到上图中灰色方块的地方,然后复制下面的代码到里面去
⚠️注意里面的参数一些需要更改
shadow-tls:
image: ghcr.io/ihciah/shadow-tls:latest
container_name: shadow-tls
restart: always
network_mode: "host"
environment:
- MODE=server
- V3=1
- LISTEN=0.0.0.0:8443 # ipv6的话改成[::]:8443 ,8443不用改动
- SERVER=127.0.0.1:xxx # ipv6的话改成[::1]:xxx ,xxx是你刚刚记下来的snell节点的端口
- TLS=gateway.icloud.com:443 #这里可以自己选
- PASSWORD=Gm8UXm6aridZ # 这里是密码,随便改
要改
TLS
的话,作者推荐V3 Protocol · ihciah/shadow-tls Wiki · GitHub
如图所示
⚠️红线提示 注意对齐!!
图示例可能与你的配置不同,不需要管,根据提示该改的地方改,其他照着命令复制就行
然后按esc
退出编辑模式,再按:
加上wq
保存退出即可
启动shadow-tls
输入以下命令即可
cd /root/snelldocker && docker compose pull && docker compose up -d
查看日志输入
docker logs -f shadow-tls
至此服务端已经完成
点击跳转在surge上应用
如果你没搭建snell
那就简单了,直接一条龙搭建snell+shadow-tls
创建文件夹
输入以下命令
mkdir -p /root/snelldocker/snell-conf
创建docker-compose.yml
然后按照下面的提示,自行选择
amd系统
cat > /root/snelldocker/docker-compose.yml << EOF
version: "3.8"
services:
snell:
image: accors/snell:latest
container_name: snell
restart: always
network_mode: host
volumes:
- ./snell-conf/snell.conf:/etc/snell-server.conf
environment:
- SNELL_URL=https://dl.nssurge.com/snell/snell-server-v4.0.1-linux-amd64.zip
shadow-tls:
image: ghcr.io/ihciah/shadow-tls:latest
container_name: shadow-tls
restart: always
network_mode: "host"
environment:
- MODE=server
- LISTEN= 0.0.0.0:8443
- SERVER= 127.0.0.1:28272
- TLS=gateway.icloud.com:443
- PASSWORD=Gm8UXm6aridZ
EOF
ipv6的话
把LISTEN= 0.0.0.0:8443改成LISTEN= [::]:8443
把SERVER= 127.0.0.1:端口(端口示例为28272) 改成SERVER= [::1]:端口(端口示例为28272),端口可以改
要改
TLS
的话,作者推荐V3 Protocol · ihciah/shadow-tls Wiki · GitHub
arm系统
cat > /root/snelldocker/docker-compose.yml << EOF
version: "3.8"
services:
snell:
image: accors/snell:latest
container_name: snell
restart: always
network_mode: host
volumes:
- ./snell-conf/snell.conf:/etc/snell-server.conf
environment:
- SNELL_URL=https://dl.nssurge.com/snell/snell-server-v4.0.1-linux-aarch64.zip
shadow-tls:
image: ghcr.io/ihciah/shadow-tls:latest
container_name: shadow-tls
restart: always
network_mode: "host"
environment:
- MODE=server
- LISTEN= 0.0.0.0:8443
- SERVER= 127.0.0.1:28272
- TLS=gateway.icloud.com:443
- PASSWORD=Gm8UXm6aridZ
EOF
ipv6的话
把LISTEN= 0.0.0.0:8443改成LISTEN= [::]:8443
把SERVER= 127.0.0.1:端口(端口示例为28272) 改成SERVER= [::1]:端口(端口示例为28272),端口可以改
要改
TLS
的话,作者推荐V3 Protocol · ihciah/shadow-tls Wiki · GitHub
创建snell配置
输入以下命令
cat > /root/snelldocker/snell-conf/snell.conf << EOF
[snell-server]
listen = 0.0.0.0:28272
psk = GLk1ff4wuQNCDSqr97WwsHwe8KBjy3S
ipv6 = false
EOF
如果要开ipv6的话,就把 listen 那一行的 0.0.0.0 改成 ::0 ,然后把下面的 ipv6=false 改成 ipv6=true 即可
启动snell+shadow-tls
cd /root/snelldocker
docker compose up -d
至此服务端已经完成
手搓搭建shadow-tls
⚠️注意:强烈建议docker compose搭完全程
如果你是按照我的这篇博客搭建的snell,那你接下来可以无痛搭建shadow-tls
查看snell配置
输入以下命令查看配置
cat /etc/snell-server.conf
图例:
我们需要的是第二行的端口
,记下来
搭建shadow-tls
下载shadow-tls服务(2024年2月24日,此时的链接为最新)
amd
sudo wget https://github.com/ihciah/shadow-tls/releases/download/v0.2.25/shadow-tls-x86_64-unknown-linux-musl -O /usr/local/bin/shadow-tls
arm
sudo wget https://github.com/ihciah/shadow-tls/releases/download/v0.2.25/shadow-tls-aarch64-unknown-linux-musl -O /usr/local/bin/shadow-tls
之后的最新版在这里找Shadow-tls
赋予执行权限
sudo chmod +x /usr/local/bin/shadow-tls
最后输入以下命令
⚠️注意需要更改一些地方
cat > /etc/systemd/system/shadow-tls.service << EOF
[Unit]
Description=Shadow-TLS Proxy Service
After=network.target
[Service]
Type=simple
ExecStart=shadow-tls server --listen 0.0.0.0:8443 --server 127.0.0.1:端口 --tls gateway.icloud.com:443 --password Gm8UXm6aridZ
StandardOutput=syslog
StandardError=syslog
SyslogIdentifier=shadow-tls
[Install]
WantedBy=multi-user.target
EOF
ipv6的话
把--listen 0.0.0.0:8443改成--listen [::]:8443
把--server 127.0.0.1:端口 改成--server [::1]:端口
要改
TLS
的话,作者推荐V3 Protocol · ihciah/shadow-tls Wiki · GitHub端口就填第一步记下的snell节点端口
启动shadow-tls
依次输入以下命令
systemctl start shadow-tls
systemctl enable shadow-tls
查看shadow-tls的状态
systemctl status shadow-tls
看到 active
就代表正常运行
在surge上应用
在确定服务端搭建完成之后,就可以将以下配置,复制到对应的snell节点上了
, shadow-tls-password=Gm8UXm6aridZ, shadow-tls-sni=gateway.icloud.com, shadow-tls-version=3
图中对应上面的配置
图示例可能与你的配置不同,不需要管,根据提示该改的地方改,其他照着命令复制就行
然后再把原本的snell节点的端口改成8443
!!!这一步很重要,一下午我都在排查问题,结果是因为这个一直ping不通
最终节点的配置应该是这样
Snell+TLS = snell, x.x.x.x(vps的ip), 8443, psk=GLk1ff4wuQNCDSqr97WwsHwe8KBjy3S(这是原来snell节点的密钥), version=4, shadow-tls-password=Gm8UXm6aridZ(这是shadow-tls的密码), shadow-tls-sni=gateway.icloud.com(TLS,服务端和这个要一样), shadow-tls-version=3
至此全部完成!!
鸣谢
感谢telegram surge pro群@lucaca和@kiya,可以关注一波大佬频道