共计 2866 个字符,预计需要花费 8 分钟才能阅读完成。
realm 是什么
Rust 语言开发的流量转发工具,Realm 比 Gost 占用资源更小。
优势是资源占用低,执行速度快,命令简单
realm 的获取
到作者的 github 下面获取文件:
amd 系统:
wget -O realm.tar.gz https://github.com/zhboner/realm/releases/download/v2.4.5/realm-x86_64-unknown-linux-gnu.tar.gz && tar -xvf realm-x86_64-unknown-linux-gnu.tar.gz && chmod +x realm
arm 系统:
wget -O realm.tar.gz https://github.com/zhboner/realm/releases/download/v2.4.5/realm-aarch64-unknown-linux-gnu.tar.gz && tar -xvf realm-aarch64-unknown-linux-gnu.tar.gz && chmod +x realm
realm 的用法
转发信息:
中转 VPS 和端口:1.1.1.1:1111
落地 VPS 和端口:8.8.8.8:8888
一、普通启动
1. 极简用法:
在中转 VPS 上直接执行命令:
./realm -l 0.0.0.0:1111 -r 8.8.8.8:8888
2. 使用配置文件:
新建 TOML 文件:
nano config.toml
在 config.toml 文件中填入内容,并保存:
[log]
level = "warn"
output = "/root/realm.log"
[network]
no_tcp = false
use_udp = true
[[endpoints]]
listen = "0.0.0.0:1111"
remote = "8.8.8.8:8888"
ipv6 转发的话记得带上括号,如:[ipv6]:8888
使用配置文件启动 realm:
./realm -c config.toml
3. 创建自启动服务项:
因为手动每次运行很麻烦,我们需要创建 Linux 的服务项来实现自启动转发通道。
举例创建 service 服务项,首先使用 nano 编辑服务项内容:
nano /etc/systemd/system/realm.service
如果你的 realm 主程序和配置文件都和我一样在 /root 目录里的话直接使用下面的内容即可
[Unit]
Description=realm
After=network-online.target
Wants=network-online.target systemd-networkd-wait-online.service
[Service]
Type=simple
User=root
Restart=on-failure
RestartSec=5s
DynamicUser=true
ExecStart=/root/realm -c /root/config.toml
[Install]
WantedBy=multi-user.target
然后使用 ctrl+ o 保存文件,再使用 ctrl+ x 退出编辑器,service 文件就生成了。
4. 开启服务配置自启:
ssh 路径回到 /root 后,即可执行重载系统服务和启动 realm 服务:
systemctl daemon-reload
systemctl enable realm && systemctl start realm
如感觉没启动,可以先停止服务,然后 status 查看报错日志状态
systemctl stop realm && systemctl status realm
如需禁用 realm 自启并停止 realm 的运行进程执行下面的命令:
systemctl stop realm && systemctl disable realm
如果你的落地服务器使用的是动态 IP,或者 DDNS 服务,可以在 crontab 计划任务里来设置定时重启 realm 服务:
cronteb -e
# 填写内容为时间和重启的服务名称:
00 01 * * * systemctl restart realm
00 05 * * * systemctl restart realm
00 09 * * * systemctl restart realm
00 13 * * * systemctl restart realm
00 17 * * * systemctl restart realm
00 21 * * * systemctl restart realm
二、可选 Docker 启动
由于作者的 docker 版本设置了 private,所以没有办法 pull,需要自己 build,所以首先我们来 build 一下 realm docker 版本:
新建 Dockerfile
新建 Docker/Realm 目录,然后进入目录,新建 Dockerfile
mkdir /root/Docker/Realm
cd /root/Docker/Realm
nano Dockerfile
填入内容,并保存:
FROM alpine:3.9
ARG VERSION="v2.4.5"
WORKDIR /realm
RUN wget https://github.com/zhboner/realm/releases/download/${VERSION}/realm-x86_64-unknown-linux-musl.tar.gz \
&& tar -zxvf realm-x86_64-unknown-linux-musl.tar.gz \
&& cp realm /usr/bin/realm \
&& chmod +x /usr/bin/realm
ENTRYPOINT ["/usr/bin/realm"]
编译 Docker Image( 注意代码后最后一个符号“点”)
docker build -t realm:v2.4 .
等待 10 几秒编译完成后,查看镜像,看到 realm
% docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
realm v2.3 692ce2fa59dc 10 seconds ago 15.7MB
启动 Docker
新建 docker-compose.yml
nano docker-compose.yml
填入内容,并保存
version: '3'
services:
realm-2.3:
image: realm:v2.3
network_mode: "host"
volumes:
- ./conf:/home
command:
- "-c=/home/config.toml"
新建配置文件夹
mkdir conf
新建配置文件
nano conf/config.toml
填入配置,并保存
[log]
level = "warn"
output = "/var/log/realm.log"
[network]
no_tcp = false
use_udp = true
[[endpoints]]
listen = "0.0.0.0:1111"
remote = "8.8.8.8:8888"
启动 realm docker:
docker-compose up -d
判断是否启动成功的方法:
查看日志
docker-compose logs
查看系统开放端口
ss -luntp