流量转发工具realm 作者: 毕世平 时间: 2022-09-28 分类: 默认分类 前言:偶然间看到这篇文章:[点击打开](https://machbbs.com/hostloc/324604 "点击打开")。有这么一款用`rust`编写出的流量转发工具`realm`,占用低,支持`bbr`增益效果,配置简单,长时间不掉速,故来试试。 本文主要记录下详细配置`realm`的步骤: ## 1.下载 假定vps机器架构是`x86_64`的,那么从releases下载对应的版本: # 创建文件夹 mkdir /etc/realm # 切换路径 cd /etc/realm # 下载压缩包(目前最新稳定版是2.4.3) wget https://github.com/zhboner/realm/releases/download/v2.4.3/realm-x86_64-unknown-linux-gnu.tar.gz # 解压缩 tar -zxf realm-x86_64-unknown-linux-gnu.tar.gz # (可选)删除无用压缩包 rm -f realm-x86_64-unknown-linux-gnu.tar.gz > 项目发布地址:[点击打开](https://github.com/zhboner/realm/releases "点击打开")。 ## 2.配置文件 看项目README介绍,同时支持`yaml`和`json`格式,个人感觉`json`更直观些,故这里以`json`示范,假定使用中转机的`10000`端口用于中转服务,落地机器IP是`2.2.2.2`,端口是`20000`,同时转发`tcp和udp`,那么对应配置文件可以这么写: { "log":{ "level":"warn", "output":"/etc/realm/realm.log" }, "network":{ "no_tcp":false, "use_udp":true }, "endpoints":[ { "listen":"0.0.0.0:10000", "remote":"2.2.2.2:20000" } ] } 上面配置文件里有指定日志文件路径为`/etc/realm/realm.log`,但后面进程想让它以`nobody`的身份运行,因此需要先创建这个文件,并指定它的所有者是`nobody`: # 先查看下你机器上的nobody用户所属组是啥名,有些是nobody,有些是nogroup id nobody # 创建日志空文件 touch /etc/realm/realm.log # 修改所有者和所属组,我这里以nobody:nogroup为例 chown nobody:nogroup /etc/realm/realm.log ## 3.配置systemd 为了方便管理软件的启动、暂停和开机自启动,有必要配置好`systemd`服务: # 切换路径 cd /etc/systemd/system && vim realm.service # 下面是范例 [Unit] Description=A simple high performance relay server written in rust After=network.target [Service] Type=simple User=nobody ExecStart=/etc/realm/realm -c /etc/realm/config.json [Install] WantedBy=multi-user.target # 上面是范例 保存service文件后,分别执行如下命令: systemctl daemon-reload systemctl enable realm //自启动 systemctl start realm //启动 systemctl status realm //查看状态 ## 4.小结 因为是配置了流量的端口转发,所以中转机上的相应端口就要被占用,对应的tcp和udp端口可能需要配置防火墙放行。之前使用过`iptables`来配置,优点是不用额外下工具,但缺点也有,配置相对复杂,不能走bbr,这个效果还有待观察。 ## 参考链接: - [realm项目地址](https://github.com/zhboner/realm "realm项目地址") - [关于Realm流量转发,及iptables,gost,Socat,Haproxy讨论](https://machbbs.com/hostloc/324604 "关于Realm流量转发,及iptables,gost,Socat,Haproxy讨论") 标签: none