(尝鲜)shadowsocks新插件qtun 作者: 毕世平 时间: 2022-05-04 分类: 默认分类 前言:现在还在用`shadowsocks`的基本都是出于喜爱吧。可是有一个无情的事实摆在面前:`ss`不套插件很快就面临间歇性端口阻断甚至IP被封,`ss-libev`用`AEAD加密`一枝独秀,或许还能撑久一点,可它也基本停更了。 本文介绍`shadowsocks`一个新`simp003`插件`qtun`,现在`@madeye`还在更新维护它,github上标识它有以下几个特点: - IETF-QUIC(IETF是“互联网工程任务组”,QUIC最初是由Google研发,后向IETF推介,现在`QUIC标准`已经作为RFC 9000发布了:[点击打开](https://www.rfc-editor.org/rfc/rfc9000.html "点击打开")) - ACME compatiable(兼容 `acme.sh` 脚本,可能是 `acme.sh` 申请证书实在太方便,你现在可以使用 `--plugin-opts "acme_host=example.com"` 指定域名,`qtun-server` 会自动从 `~/.acme.sh/example.com`读取证书,目前只支持`rsa`类型,申请`ecc`类型的需要用`openssl`命令转化,参照issue:[点击打开](https://github.com/shadowsocks/qtun/issues/2 "点击打开") )。 - BBR congestion (BBR拥塞算法,Google开发,并早已开源,极大提高速度,详情点击:[一键安装最新内核并开启 BBR 脚本-秋水逸冰](https://teddysun.com/489.html "一键安装最新内核并开启 BBR 脚本-秋水逸冰")) - Low resource usage(低资源使用,个人实测,`ss-libev`套`qtun-server`第一次启动内存不到1M,后面使用后会有所上升,具体还待观察。) ## 1、配置证书 本文以`Debian10`发行版为例,假定域名是`example.com`,那么以`root`用户执行下面命令申请证书,注意使用默认的`rsa`类型: apt update && apt install -y wget socat wget -qO- get.acme.sh | bash source ~/.bashrc acme.sh --set-default-ca --server letsencrypt # 申请证书 acme.sh --issue -d example.com --standalone # 安装证书到/etc/shadowsocks-rust mkdir /etc/shadowsocks-rust && cd /etc/shadowsocks-rust acme.sh --installcert -d example.com --fullchain-file ./ss.crt --key-file ./ss.key # 赋予可读权限 chmod 644 ss.key ---------------------------- # 参照issue,如果你已有ecc类型的证书,将ecc类型的key转化下,使qtun-server能解析它: openssl pkcs8 -topk8 -nocrypt -in exist_ecc.key -out new_rsa.key > **说明**:虽然`qtun`插件支持通过在插件选项设置里设置`acme_host`,但是`acme.sh`文档里并不建议这么做,并不建议直接使用隐藏目录下的证书和key文件,因此这里还是把它安装出来了。 ## 2、配置shadowsocks-rust `shadowsocks-rust`相关教程之前也有写过,直接从releases下载解压即可: # 目前最新latest版本是v1.14.3 cd /usr/local/bin && wget https://github.com/shadowsocks/shadowsocks-rust/releases/download/v1.14.3/shadowsocks-v1.14.3.x86_64-unknown-linux-gnu.tar.xz # 解压 tar -xJf shadowsocks-v1.14.3.x86_64-unknown-linux-gnu.tar.xz # (可选)修改所有者 chown root:root ./ss* # (可选)删除无用压缩包 rm shadowsocks-v1.14.3.x86_64-unknown-linux-gnu.tar.xz > shadowsocks-rust发布地址是:[传送门](https://github.com/shadowsocks/shadowsocks-rust/releases "点击访问") ## 3、配置qtun插件 与`shadowsocks-rust`一样,`qtun`也是使用`rust`编写,下载解压即用,以`root`用户执行下面命令: # 下载 wget https://github.com/shadowsocks/qtun/releases/download/v0.2.0/qtun-v0.2.0.x86_64-unknown-linux-musl.tar.xz # 解压,同目录下会得到qtun-server和qtun-client两个文件 tar -xJf qtun-v0.2.0.x86_64-unknown-linux-musl.tar.xz # (可选)还可以用strip修剪下 strip -s ./qtun-server ./qtun-client # (可选)修改所有者 chown root:root ./qtun-server ./qtun-client # (可选)删除无用压缩包 rm -f qtun-v0.2.0.x86_64-unknown-linux-musl.tar.xz > qtun插件发布地址是:[传送门](https://github.com/shadowsocks/qtun "点击访问") ## 4、配置文件和服务 本文配置文件同样取名`config.json`,放置在`/etc/shadowsocks-rust`目录下: # 切换路径,上面放置证书时,shadowsocks-rust目录已经被创建 cd /etc/shadowsocks-rust # 配置文件示例,取名config.json { "server":"0.0.0.0", "server_port":9000, "timeout":300, "password":"password0", "method":"aes-256-gcm", "fast_open":false, "nameserver":"8.8.8.8", "mode":"tcp_only", "plugin":"qtun-server", "plugin_opts":"cert=/etc/shadowsocks-rust/ss.crt;key=/etc/shadowsocks-rust/ss.key" } **说明**:上面配置文件里,`mode`只能设置为`tcp_only`,不要开启udp,因为`qtun-server`要监听`udp 9000`端口,会造成无法启动,`plugin_opts`这里也可填`acme_host=example.com`,二选一,但建议直接填cert和key路径。 下面配置其systemd服务: # 切换路径 cd /etc/systemd/system # 创建shadowsocks-rust.service文件,示例如下 [Unit] Description=Shadowsocks-Rust Service After=network.target [Service] Type=simple User=nobody ExecStart=/usr/local/bin/ssserver -c /etc/shadowsocks-rust/config.json [Install] WantedBy=multi-user.target **说明**:如果你不想看到标准输出日志的话,可以将systemd日志重定向到`/dev/null`,具体修改方式为在上述service文件`[Service]区块`下添加一行`StandardOutput=null`即可。 配置好systemd服务后,即可方便管理其启动: systemctl daemon-reload systemctl start shadowsocks-rust //启动 systemctl stop shadowsocks-rust //停止 systemctl enable shadowsocks-rust //加入开机自启 systemctl disable shadowsocks-rust //取消开机自启 systemctl is-enabled shadowsocks-rust //判断服务是否处于开机自启状态,输出enabled即代表开机自启 ## 5、结语 新近发现此插件,速度还不错,遂推荐。本文如有错误,欢迎指正。 参考链接: - [Shadowsocks-Rust项目](https://github.com/shadowsocks/shadowsocks-rust "Shadowsocks-Rust项目") - [qtun项目](https://github.com/shadowsocks/qtun "qtun项目") - [acme.sh脚本项目地址](https://github.com/acmesh-official/acme.sh "acme.sh脚本项目地址") - [一键安装最新内核并开启 BBR 脚本-秋水逸冰](https://teddysun.com/489.html "一键安装最新内核并开启 BBR 脚本-秋水逸冰") 标签: none
1、qtun-server要监听udp 9000端口
则需将VPS的 udp/9000 端口打开。
2、qtun监听UDP建立连接,那是不是像wireguard一样是UDP传输。
1、我默认不开防火墙,所以没考虑到这个
2、对,qtun的client和server通讯走udp传输,但其内在有tls加密
simple-tls这个插件用过么
https://github.com/IrineSistiana/simple-tls
没用过
简单看了下这个项目的README,支持给ss套一层tls,支持websocket和mux多路复用,这个v2ray-plugin取websocket模式时也都支持,两个都是用go开发的,感觉内存占用和速度都大差不差?
从理论上讲tls应该比ws握手次数少。但实际上速度应该没啥差别。
shadowsocks-rust怎么搭配kcptun插件呀,能用kcptun吗?
应该可以,具体看kcptun插件项目的README,只要它符合SIP003规范,