写在开始
近期买了个香港云服务器,加之平时科研工作离不开访问谷歌学术、GitHub、GitLab等网站,思考着能否使用香港服务器进行中转访问,省下一笔费用的同时还能够方便自己的学习工作。经过了解,SSR与V2Ray是两种比较不错的方法,有兴趣的小伙伴自行了解,这里不多赘述这两种方式的异同。
基于ShadowsocksR的代理服务部署
Shadowsocks是clowwindy开发的自用的软件,开发的初衷只是为了让自己能够简单高效地科学上网,自己使用了很长一段时间后觉得不错才共享出来的。但clowwindy被请去喝茶后就被迫停止了更新,ShadowsocksR是后来人员维护的增强版本。
准备工作
- 一台香港/国外的云服务器
- 服务器安装了docker & docker-compose
部署ShadowsocksR
部署本项目所使用的docker镜像为:winterssy/shadowsocksr。
首先新建一个文件夹,在文件夹中创建shadowsocksr的配置文件config.json,注意,混淆和加密是很重要的,SSR协议通过混淆和加密技术,在用户和服务器之间建立一条安全的通道,使网络流量得以加密,不易被监测和干扰。
{
"server": "0.0.0.0",
"local_address": "127.0.0.1",
"local_port": 1080,
"port_password": {
"1127": "设置你的密码" # 对外的代理端口
},
"timeout": 300,
"method": "rc4-md5", # 设置加密算法
"protocol": "auth_aes128_md5", # 设置协议
"protocol_param": "",
"obfs": "tls1.2_ticket_auth", # 设置混淆方式
"obfs_param": "f2258258.www.gov.hk",
"redirect": "",
"dns_ipv6": false,
"fast_open": false,
"workers": 1
}
在config.json文件的同一级目录下,创建docker-compose.yml配置文件:
version: "3.6"
services:
ssr:
image: winterssy/shadowsocksr:latest
container_name: ssr
ports:
- 1127:1127
- 1127:1127/udp
- 1128:1128
- 1128:1128/udp
- 1129:1129
- 1129:1129/udp
networks:
- ssr
volumes:
- "./config.json:/app/config.json:ro"
restart: unless-stopped
logging:
driver: "json-file"
options:
max-size: "100m"
max-file: "10"
networks:
ssr:
name: ssr
driver: bridge
在上述两个文件的同一目录下,输入以下指令,启动shadowsocksr服务:
docker-compose up -d
启动成功后,使用以下命令查看启动日志,确保启动成功:
docker-compose logs -f --tail=50
若看到以下信息,代表启动成功:
ssr | 2024-08-09 02:31:00 INFO util.py:85 loading libcrypto from libcrypto.so.1.1
ssr | 2024-08-09 02:31:00 INFO shell.py:72 ShadowsocksR 2.6.12
ssr | 2024-08-09 02:31:00 INFO server.py:46 current process RLIMIT_NOFILE resource: soft 1048576 hard 1048576
ssr | 2024-08-09 02:31:00 INFO asyncdns.py:324 dns server: [('127.0.0.11', 53)]
ssr | 2024-08-09 02:31:00 INFO server.py:105 server start with protocol[auth_aes128_md5] password [b'你设置的密码'] method [rc4-md5] obfs [tls1.2_ticket_auth] obfs_param [f2258258.www.gov.hk]
ssr | 2024-08-09 02:31:00 INFO server.py:141 starting server at 0.0.0.0:1127
启动成功后,需要开放对应的防火墙端口,否则无法访问服务,以CentOS为例:
firewall-cmd --zone=public --add-port=1127/tcp --permanent
使用clash对shadowsocksr服务进行订阅
大部分朋友更习惯使用clash订阅节点,这就需要将shadowsocksr节点的订阅URL转换成clash订阅URL,涉及到下面几个步骤。
生成SSR订阅URL
首先是shadowsocksr节点URL的生成,由docker部署的shadowsocksr似乎不会自动生成订阅URL(也许是我没有找到)。已知的只有我们的配置信息(服务器IP、服务端口、加密方式、混淆方式等),需要借助一个工具来生成订阅URL,工具可以通过我提供的方式进行下载:
打开工具,将服务器的IP、端口、所设置的密码、加密方式、协议、混淆方式等进行填写,填写之后点击Add,就会自动生成SSR URL(如图红框),一定不要填写错了,填写错了任何一项都无效。(如果你想直接使用该工具,也是可以的,下面的内容就可以不需要再看)
将SSR订阅URL转换为clash
Github种有现成的项目对不同的订阅方式进行转换,我推荐的是tindy2013/subconverter的项目,该项目支持绝大数种类型的订阅的转换,如下:
类型 | 作为源类型 | 作为目标类型 | 参数 |
---|---|---|---|
Clash | ✓ | ✓ | clash |
ClashR | ✓ | ✓ | clashr |
Quantumult (完整配置) | ✓ | ✓ | quan |
Quantumult X (完整配置) | ✓ | ✓ | quanx |
Loon | ✓ | ✓ | loon |
Mellow | ✓ | ✓ | mellow |
SS (SIP002) | ✓ | ✓ | ss |
SS (软件订阅/SIP008) | ✓ | ✓ | sssub |
SSD | ✓ | ✓ | ssd |
SSR | ✓ | ✓ | ssr |
Surfboard | ✓ | ✓ | surfboard |
Surge 2 | ✓ | ✓ | surge&ver=2 |
Surge 3 | ✓ | ✓ | surge&ver=3 |
Surge 4 | ✓ | ✓ | surge&ver=4 |
Trojan | ✓ | ✓ | trojan |
V2Ray | ✓ | ✓ | v2ray |
类 TG 代理的 HTTP/Socks 链接 | ✓ | × | 仅支持 &url= 调用 |
Mixed | × | ✓ | mixed |
Auto | × | ✓ | auto |
基于这个项目也有一些在线的转换工具,但是我觉得这些工具不安全,保不齐会把你的订阅链接保存到他们的服务器里,然后趁你不注意白嫖你的订阅服务,拉低你的体验。该项目也可以使用docker自部署。
首先新建一个文件夹,在文件夹中创建docker-compose.yml配置文件:
version: '3.6'
services:
subconverter:
image: tindy2013/subconverter
container_name: subconverter
ports:
- "25500:25500"
在上述文件的同一目录下,输入以下指令,启动subconverter服务:
docker-compose up -d
启动成功后,使用以下命令查看启动日志,确保启动成功:
docker-compose logs -f --tail=50
若看到以下信息,代表启动成功:
subconverter | 2024/08/09 Fri 03:00:15.456352 [1 Thread-1][INFO] SubConverter v0.9.0-6974910 starting up..
subconverter | \033]0;SubConverter v0.9.0-6974910\007\c
subconverter | 2024/08/09 Fri 03:00:15.457211 [1 Thread-1][INFO] Loading preference settings...
subconverter | 2024/08/09 Fri 03:00:15.464388 [1 Thread-1][VERB] Imported 0 item(s).
subconverter | 2024/08/09 Fri 03:00:15.464455 [1 Thread-1][VERB] Trying to import items from snippets/emoji.toml
subconverter | 2024/08/09 Fri 03:00:15.475904 [1 Thread-1][VERB] Imported 94 item(s).
subconverter | 2024/08/09 Fri 03:00:15.476086 [1 Thread-1][VERB] Trying to import items from snippets/groups.toml
subconverter | 2024/08/09 Fri 03:00:15.478458 [1 Thread-1][VERB] Imported 13 item(s).
subconverter | 2024/08/09 Fri 03:00:15.478547 [1 Thread-1][VERB] Trying to import items from snippets/rulesets.toml
subconverter | 2024/08/09 Fri 03:00:15.481222 [1 Thread-1][VERB] Imported 20 item(s).
subconverter | 2024/08/09 Fri 03:00:15.481357 [1 Thread-1][VERB] Imported 0 item(s).
subconverter | 2024/08/09 Fri 03:00:15.481416 [1 Thread-1][INFO] Load preference settings in TOML format completed.
subconverter | 2024/08/09 Fri 03:00:15.481740 [1 Thread-1][INFO] Updating ruleset url 'rules/LocalAreaNetwork.list' with group '🎯 全球直连'.
subconverter | 2024/08/09 Fri 03:00:15.482047 [1 Thread-1][INFO] Updating ruleset url 'rules/MSServices.list' with group 'Ⓜ️ 微软服务'.
subconverter | 2024/08/09 Fri 03:00:15.482294 [1 Thread-1][INFO] Updating ruleset url 'rules/DivineEngine/Surge/Ruleset/Unbreak.list' with group '🎯 全球直连'.
subconverter | 2024/08/09 Fri 03:00:15.482674 [1 Thread-1][INFO] Updating ruleset url 'rules/NobyDa/Surge/AdRule.list' with group '🛑 全球拦截'.
subconverter | 2024/08/09 Fri 03:00:15.483193 [1 Thread-1][INFO] Updating ruleset url 'rules/DivineEngine/Surge/Ruleset/Guard/Hijacking.list' with group '🛑 全球拦截'.
subconverter | 2024/08/09 Fri 03:00:15.483511 [1 Thread-1][INFO] Updating ruleset url 'rules/DivineEngine/Surge/Ruleset/StreamingMedia/Video/Netflix.list' with group '🎥 NETFLIX'.
subconverter | 2024/08/09 Fri 03:00:15.483725 [1 Thread-1][INFO] Updating ruleset url 'rules/DivineEngine/Surge/Ruleset/StreamingMedia/Streaming.list' with group '🌍 国外媒体'.
subconverter | 2024/08/09 Fri 03:00:15.483874 [1 Thread-1][INFO] Updating ruleset url 'rules/lhie1/Surge/Surge 3/Provider/Media/Bilibili.list' with group '🌏 国内媒体'.
subconverter | 2024/08/09 Fri 03:00:15.484063 [1 Thread-1][INFO] Updating ruleset url 'rules/lhie1/Surge/Surge 3/Provider/Media/iQiyi.list' with group '🌏 国内媒体'.
subconverter | 2024/08/09 Fri 03:00:15.484284 [1 Thread-1][INFO] Updating ruleset url 'rules/lhie1/Surge/Surge 3/Provider/Media/Letv.list' with group '🌏 国内媒体'.
subconverter | 2024/08/09 Fri 03:00:15.484469 [1 Thread-1][INFO] Updating ruleset url 'rules/lhie1/Surge/Surge 3/Provider/Media/MOO.list' with group '🌏 国内媒体'.
subconverter | 2024/08/09 Fri 03:00:15.484657 [1 Thread-1][INFO] Updating ruleset url 'rules/lhie1/Surge/Surge 3/Provider/Media/Tencent Video.list' with group '🌏 国内媒体'.
subconverter | 2024/08/09 Fri 03:00:15.484846 [1 Thread-1][INFO] Updating ruleset url 'rules/lhie1/Surge/Surge 3/Provider/Media/Youku.list' with group '🌏 国内媒体'.
subconverter | 2024/08/09 Fri 03:00:15.485017 [1 Thread-1][INFO] Updating ruleset url 'rules/DivineEngine/Surge/Ruleset/Extra/Telegram/Telegram.list' with group '📲 电报信息'.
subconverter | 2024/08/09 Fri 03:00:15.485201 [1 Thread-1][INFO] Updating ruleset url 'rules/DivineEngine/Surge/Ruleset/Global.list' with group '🔰 节点选择'.
subconverter | 2024/08/09 Fri 03:00:15.485407 [1 Thread-1][INFO] Updating ruleset url 'rules/DivineEngine/Surge/Ruleset/Extra/Apple/Apple.list' with group '🍎 苹果服务'.
subconverter | 2024/08/09 Fri 03:00:15.485646 [1 Thread-1][INFO] Updating ruleset url 'rules/DivineEngine/Surge/Ruleset/China.list' with group '🎯 全球直连'.
subconverter | 2024/08/09 Fri 03:00:15.485835 [1 Thread-1][INFO] Updating ruleset url 'rules/NobyDa/Surge/Download.list' with group '🎯 全球直连'.
subconverter | 2024/08/09 Fri 03:00:15.486037 [1 Thread-1][INFO] Adding rule 'GEOIP,CN,🎯 全球直连'.
subconverter | 2024/08/09 Fri 03:00:15.486114 [1 Thread-1][INFO] Adding rule 'FINAL,🐟 漏网之鱼'.
subconverter | 2024/08/09 Fri 03:00:15.486205 [1 Thread-1][INFO] Startup completed. Serving HTTP @ http://0.0.0.0:25500
若看到以下信息,启动成功后,需要开放防火墙端口,否则无法访问服务,以CentOS为例:
firewall-cmd --zone=public --add-port=25500/tcp --permanent
然后打开浏览器,在浏览器中输入:
http://<服务器的IP>:25500//sub?target=clash&url=<SSR的订阅URL>
即可转换成clash订阅,以下是成功转换后的订阅信息结果节选:
port: 7890
socks-port: 7891
allow-lan: true
mode: Rule
log-level: info
external-controller: :9090
proxies:
- {name: 你的服务器IP:1127, server: 你的服务器IP, port: 1127, type: ssr, cipher: rc4-md5, password: 你设置的密码, protocol: auth_aes128_md5, obfs: tls1.2_ticket_auth, protocol-param: "", obfs-param: f2258258.www.gov.hk}
clash订阅URL
将该链接复制至clash的Profiles中,点击Download,即可成功订阅。
订阅成功后,可以检查订阅节点的有效性,有效则会显示与节点的延迟,如果显示红色的Timeout,则需要检查配置过程是否存在问题。
点击Proxies,选择Rule模式,避免国内的路由也走代理,减少服务器压力。
打开浏览器,输入一个平时无法直连的网页,如果这些网页能正常打开,并且显示走代理了,说明部署成功了。
基于V2Ray的代理服务部署
V2Ray是一个网络代理工具,通过使用特定的中转服务器完成数据传输,支持HTTP(只支持传入)、Socks、Shadowsocks、Trojan、VMess、VLESS等内容传输协议,每个内容传输协议可单独设置传输载体,如TCP、mKCP、QUIC、gPRC、WebSocket等。V2Ray有更完善的协议,其使用了新的自行研发的 VMess 协议,改正了Shadowsocks一些已有的缺点,更难被检测到,网络性能也更好。
写在最后
近些年来,GFW越来越强大,已经能够通过各种高级手段识别出Shadowsocks代理的流量特征,也有大量的研究分析如何识别Shadowsocks的流量特征,这里放几篇文章供大家阅读:Shadowsocks是如何被检测和封锁的、使用主动探测方法识别Shadowsocks服务、Shadowsocks对检测和封锁的探究。V2Ray流量特征也变得越来越透明,不断有失效的消息发出:猜测V2Ray流量被GFW所精准识别,最近威力加强了,纯自用搭建的也被墙了... 如果被GFW探测到,轻则封端口、封IP,如果进行了非法的业务,是要承担法律责任的。
2 条评论
弟弟牛哇!
真的假的OωO