Shadowsocks常用的几种配置 作者: Hogwarts 发布于: 2022-10-05 更新于: 2022-12-09 分类: 好为人师 大会开幕前夕,大庆之中,众多IP被办,哀鸿遍野。先是封端口,换端口就墙IP。 同学们还在讨论哪种协议坚挺,哪种方式稳定。其实鄙人感觉毫无意义。盲猜应该是流量大就挂。裸奔的SS流量小也没有问题。有人说了,介不是屁话么,这大小怎么界定?!其实自用的节点被封的概率并不大,原以为SS裸奔不行,不加TLS不行,不是443端口不行,这都是传说。加了TLS标准443端口不也照样被办么,而且并不是少数。 10月3日是墙发威的日子,裸SS且非标准端口看YouTube约三个小时,中途有两次QOS暂停,并无它事。以前也写过shadowsocks的水文,杂乱无章,这次做一个小结吧。 shadowsocks如何安装就此略过。可参考前文或Docker安装。 #一、shadowsocks TCP模式实现方式 此种模式就是俗称的裸奔模式 ##1.1 shadowsocks-libev 服务端配置 { "server":["::0","0.0.0.0"], #可同时监听IPv4和IPv6 "server_port": your port, "password":"your password", "timeout":300, "method":"aes-256-gcm", #不能为aes-128-gcm "fast_open":false, "nameserver":"8.8.8.8", "mode":"tcp_only" } ##1.2 shadowsocks-rust 服务端配置 ###1.2.1 传统模式 { "server":"::", #可同时监听IP4和IPv6 "server_port":your port, "timeout":300, "method":"aes-128-gcm", #测试下128模式速度最好 "password":"your password", "fast_open":false, "nameserver":"8.8.8.8", "mode":"tcp_only" } ###1.2.2 最新加密模式 将1.2.1中的两项进行修改 "method":"2022-blake3-aes-128-gcm", "password":"your password", #密码生成命令:openssl rand -base64 16 修改后配置如下 { "server":"::", "server_port":your port, "timeout":300, "method":"2022-blake3-aes-128-gcm", "password":"your password", "fast_open":false, "nameserver":"dns.google", "mode":"tcp_only" } 20221209PS:此种模式有可能报错 WARN tcp handshake failed. peer: [IPv6]:59826, invalid timestamp 1670554325 - now 1670554284 = 41 两台机器同样配置,其中一台报错。换传统配置的加密方式正常运行。具体原因不明。 参考:`https://github.com/shadowsocks/shadowsocks-rust/discussions/888` ##1.3 Xray 服务端配置 可照抄[xray-examples-Shadowsocks-2022](https://github.com/XTLS/Xray-examples/tree/main/Shadowsocks-2022) config.json抄录如下 { "inbounds": [ { "port": your port, "protocol": "shadowsocks", "settings": { "method": "2022-blake3-aes-128-gcm", "password": "your password", #密码生成命令:openssl rand -base64 16 "network": "tcp,udp" } } ], "outbounds": [ { "protocol": "freedom" } ] } ##1.4 客户端 - 安卓客户端完美支持以上两种加密方式。 - Win端shadowsocks4.4.1.0不支持2022-blake3加密方式;V2rayN支持。 ##1.5 安卓端设置 ![IMG_20221005_090253.jpg](https://winamp.top/usr/uploads/2022/10/3144232804.jpg) **服务器**:填写IP地址或指向IP的域名 **远程端口**:填写上文中的`your port` **密码**:填写上文中的`your password` **加密方式**:和服务端保持一致 ##1.6 点评 - 延迟和速度都无以伦比,但易被QOS。 - 盲传2022-blake3-aes-128-gcm加密模式可抗探测。 - 此种模式推荐加入白名单。 #二、加入TLS 且直接监听端口WSS模式 此种模式要加入xray-plugin插件,仅能用libev和rust版实现。 ##2.1 shadowsocks-libev服务端的配置 { "server":["::0","0.0.0.0"], #可同时监听IPv4和IPv6 "server_port": your port, #一般为443 "password":"your password", "timeout":300, "method":"aes-256-gcm", #不能为aes-128-gcm "fast_open":false, "nameserver":"8.8.8.8", "mode":"tcp_only", "plugin":"xray-plugin", #有的机器需绝对路径,比如甲骨文。 "plugin_opts":"server;tls;host=你的域名;cert=/证书路径/fullchain.cer;key=/密钥路径/private.key" } ##2.2 shadowsocks-rust 服务端配置 { "server":"::", #可同时监听IP4和IPv6 "server_port":your port, #一般为443 "timeout":300, "method":"aes-128-gcm", #测试下128模式速度最好 "password":"your password", "fast_open":false, "nameserver":"8.8.8.8", "mode":"tcp_only", "plugin":"xray-plugin", #有的机器需绝对路径,比如甲骨文。 "plugin_opts":"server;tls;host=你的域名;cert=/证书路径/fullchain.cer;key=/密钥路径/private.key" } ###2.2.1 可能报错 **报错**:`failed to start server: app/proxyman/inbound: failed to listen TCP on 443 > transport/internet: failed to listen on address: [::]:443 > transport/internet/websocket: failed to listen TCP(for WS) on [::]:443 > listen tcp 0.0.0.0: 443: bind: permission denied` **解决** setcap 'cap_net_bind_service=+ep' /usr/local/bin/xray-plugin ##2.3 以安卓客户端为例 ![IMG_20221005_090419.jpg](https://winamp.top/usr/uploads/2022/10/684880197.jpg) **基本设置**:参照1.5 **插件**:需安装xray-plugin.apk插件,设置如下 **Transport mode**:选`websocket-tls` **Hostname**:填写`你的域名` **Path**:不要管它 ##2.4 Win端设置 Shadowsocks的Win端不支持2022-blake3协议 V2rayN不支持Xray-plugin插件 仅能选择SS的官方客户端,且只能为aes-gcm协议 安卓端支持2022-blake3协议,此种模式因套有tls,在tls里跑2022-blake3也没啥意义。 **基本设置**:填入域名、密码、选择加密协议。 **插件程序**:填入`xray-plugin.exe` **插件选项**:填入`tls;host=yourdomain.com` #三、加入TLS 由caddy或nginx监听端口模式 此种模式一般由前端的caddy或nginx监听标准443端口,通过路径传递给后端的xray-plugin。 PS:20221120 不建议用caddy v1,建议nginx。 caddy v1 在运行过程中有问题 [ERROR] failed to copy buffer: read tcp 127.0.0.1:57216->127.0.0.1:4443: use of closed network connection ##3.1 caddyfile配置 以caddy v1为例 yourdomain.com:80 { redir https://yourdomain.com{uri} } yourdomain.com:443 { gzip timeouts none tls /etc/caddy/fullchain.cer /etc/caddy/private.key #注意证书路径 proxy /sspath 127.0.0.1:ssport { #需修改sspath和ssport websocket header_upstream -Origin } } ##3.2 shadowsocks服务端配置 { "server":"127.0.0.1", "server_port":ssport, #与caddy一致 "method":"aes-256-gcm", #libev选256,rust选128。 "timeout":300, "password":"yourpassword", "fast_open":false, "nameserver":"8.8.8.8", "mode":"tcp_only", "plugin":"xray-plugin", "plugin_opts":"server;path=/sspath" #与caddy一致 } ##3.3 以安卓客户端为例 照抄2.3中的设置,其中 **Path**:填入自设的`/sspath` ##3.4 Win端设置 基本内容同2.4,仅填入sspath即可。 **基本设置**:填入域名、密码、选择加密协议。 **插件程序**:填入`xray-plugin.exe` **插件选项**:填入`tls;host=yourdomain.com;path=/sspath` #四、附[谷歌公共 DNS IP 地址](https://developers.google.com/speed/public-dns/docs/using "谷歌公共 DNS IP 地址") Google 公共 DNS IP 地址 (IPv4) 如下: nameserver 8.8.8.8 nameserver 8.8.4.4 Google 公共 DNS IPv6 地址如下: nameserver 2001:4860:4860::8888 nameserver 2001:4860:4860::8844 某些设备需要 IPv6 地址的所有八个字段的明确值,并且不能接受缩写的::IPv6 地址语法。对于此类设备,请输入: nameserver 2001:4860:4860:0:0:0:0:8888 nameserver 2001:4860:4860:0:0:0:0:8844 Ps: Cloudflare IPv6 DNS nameserver 2606:4700:4700::1111 nameserver 2606:4700:4700::1001 #五、关于IPv6优先 20221012PS: 最近发现Oracle有的地区的IPv6回程都不错,IPv4绕美。可设置ipv6优先。 "ipv6_first": true, #IPv6优先 亦或设置Only ipv6,或将cloudflare的“小黄云朵”点上,亦可。 ipv6_only: true,#Only IPv6 标签: shadowsocks, xray, caddy, shadowsocks-rust, shadowsocks-libev, DNS, ipv6, xray-plugin
2.1那个配置文件里的"nameserver":"dns.google"貌似行不通,只支持"8.8.8.8"或者"1.1.1.1"这样数字形式的
我不懂用dns.google和8.8.8.8这俩有啥区别,以为一样呢。看安卓端和你的配置里面有dns.google,还以为这样比较高级呢。哈哈。
没,我也奇怪,因为用ss-rust时候,可以直接指定 dns.google ,用ss-libev时候就不行,必须要具体到数字
ss-libev测试了一下确实是这样。
8.8.8.8:INFO: using nameserver: 8.8.8.8
dns.google:Failed to start Shadowsocks-libev Default Server Service.