Introduction
最近在玩一个端口转发工具, 叫做 realm
. realm
据说效率比较高, 支持bbr. (虽然我对速度的要求也不那么高
之前使用的各种转发方式, 例如 iptables
, gost
, 大多使用的都是一键脚本. 自从某某根据地垮台之后, 也没有更多的人自发编写一键脚本了
选择 realm
正是因为他容易使用, 不依赖一键脚本, 自己手动操作也不那么麻烦.
Deployment
配置文件
realm
支持命令行运行, 也支持通过配置文件运行:
./realm -c /path/to/file
配置文件支持 json
和 toml
, 我更加喜欢 toml
, 因为他更加清晰, 并且注释格式也非常简单.
[[endpoints]]
listen = "0.0.0.0:123"
remote = "test.com:456"
[[endpoints]]
listen = "0.0.0.0:111"
remote = "8.8.8.8:222"
守护进程
执行命令运行 realm
转发程序都属于在前台运行, 即使通过 tmux
, screen
在后台运行, 如果机器被重启, 则转发程序结束.
为了解决这个问题, 我们采用系统服务的形式来守护程序.
将下面的配置信息写入文件 /etc/systemd/system/realm.service
[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
ExecStart=/root/realm -c /root/ss.toml
[Install]
WantedBy=multi-user.target
使修改生效, 开机自启, 重启服务.
systemctl daemon-reload
systemctl enable realm
systemctl restart realm
# 然后可以通过systemctl status realm查看服务运行状态