没疯,真没疯。
Hysteria 是一个功能丰富的,专为恶劣网络环境进行优化的网络工具(双边加速),比如卫星网络、拥挤的公共 Wi-Fi、在中国连接国外服务器等。
?在我等人看来,这看起来是很适合做梯子的。
测了一下,速度确实非常棒
使用 shadowsocks/trojan 的速度
使用 hysteria
速度足足提升了 10 倍,跑满了本地带宽
配置起来很简单?就以自签名证书为例了
目录
配置服务端
自签名证书
- openssl req –newkey rsa:2048 –nodes –keyout key.pem –x509 –days 3650 –out certificate.pem
下载
去 GitHub Release 可以找到,我的是 OpenVZ 的?,下载了 non-tun 版本的。
https://github.com/HyNetwork/hysteria/releases
创建配置文件
config.json
- {
- “listen”: “:443”,
- “cert”: “/etc/hysteria/certificate.pem”,
- “key”: “/etc/hysteria/key.pem”,
- “up_mbps”: 300,
- “down_mbps”: 300,
- “obfs”: “dankdhsawj”
- }
可选的 obfs 选项使用提供的密码对协议进行混淆,这样协议就不容易被检测出是 Hysteria/QUIC,可以用来绕过针对性的 DPI 屏蔽或者 QoS。 如果服务端和客户端的密码不匹配就不能建立连接,因此这也可以作为一个简单的密码验证。
up_mbps
和 down_mbps
用来限制每个客户端最大下载速度和上传速度,可选
运行
- hysteria server
即可。使用-config
参数指定配置文件路径
- hysteria –config /etc/hysteria/config.json server
客户端
iOS
iOS 可以使用 shadowrocket,混淆字段写 obfs 的值,密码留空,允许不安全勾选
shadowrocket 测速会显示超市,延迟测试方法改成 CONNECT 就好了,可能是个 bug
Linux
- {
- “server”: “1.1.1.1:443”,
- “obfs”: “1231”,
- “up_mbps”: 300,
- “down_mbps”: 300,
- “socks5”: {
- “listen”: “127.0.0.1:1080”
- },
- “insecure”: true
- }
然后直接运行hysteria
就可以,之后可以用 proxychains 之类的工具了。如有需要也可以添加 http 字段
- “http”: {
- “listen”: “127.0.0.1:8080”
- }
systemd 自动启动
/lib/systemd/system/hysteria.service
如果是 systemd 的话,写个单元文件
- [Unit]
- Description=Hysteria
- After=network.target network–online.target nss–lookup.target
- [Service]
- Restart=on–failure
- Type=simple
- ExecStart=/usr/sbin/hysteria –config /etc/hysteria/config.json server
- [Install]
- WantedBy=multi–user.target
- systemctl daemon–reload # 重新加载
- systemctl enable hysteria # 开机自启
- systemctl start hysteria # 启动
?专属配置
这个小鸡,是从 sentris 那里弄来的,这么多年没想到竟然没倒闭没跑路。
由于小鸡配置堪忧,我想办法给搞成了 Alpine,毕竟 Alpine 是出了名的小,省内存也是必然的。
因为是 Alpine 所以自然也就是 OpenRC 了。
hysteria 额外配置
由于小鸡内存少,必须额外配置下,要不然总是被 OOM Kill
- “recv_window_conn”: 2097152,
- “recv_window_client”: 8388608,
这样会减少 OOM 的可能性
OpenRC 启动项
如果是 OpenRC……/etc/init.d/hysteria
- #!/sbin/openrc-run
- name=“hysteria”
- command=“/usr/sbin/hysteria”
- command_args=“-config /etc/hysteria/config.json server”
- command_background=“yes”
- pidfile=“/run/hysteria.pid”
- depend() {
- after sshd
- }
然后
- chmod +x /etc/init.d/hysteria
- rc–update add hysteria # 开机自启动
- rc–service hysteria start # 启动
非常不幸的是,如果进程挂掉了,OpenRC 是没什么办法给拉起来的。可以办法是用 supervisor,可以使用 Go 版本的 https://github.com/ochinchina/supervisord
然而这个内存占用有点可怕,毕竟我整个只有 64M 的内存啊,这一个用了 22.5%,14M 了。
那就只能魔改 crontab,10 秒一次,最多 20 秒拉起(
- # 创建一个shell脚本 /usr/bin/restart
- #!/bin/sh
- echo Restarting…
- for svc in $(rc–status —crashed); do
- rc–service $svc — —nodeps restart
- done
- # 加x权限
- chmod+x /usr/bin/restart
- # crontab中
- * * * * * for i in {1..6}; do /usr/bin/restart & sleep 10; done
?感觉还行(((