Realm进行流量转发

使用Realm进行流量转发

流量转发,顾名思义是能够转发TCP或UDP流量到指定远程主机的工具。它主要用于内网的代理,及一切需要转发流量的场景。
目前,已经有很多类似的工具出现了,常见的有socat,brook等。但是,这些工具都局限于固定的ip,即只能在启动时就指定好要转发的ip地址。brook可以解析域名,但却不能动态解析。
网络上虽然流行有一键脚本,能够完成动态解析,但复杂的脚本本身也是一个安全隐患。

感谢Realm 作者的开源,项目地址是 https://github.com/zhboner/realm

新的改变

  1. 多端口支持
  2. 支持配置文件

使用

# 给realm加上执行权限chmod +x realm
#启动,以下命令让 realm 监听本机上的 30000 端口,然后转发流量到 example.com:12345
./realm -l 127.0.0.1:30000 -r example.com:12345

参数说明

启动 realm 需要两个参数:-l 和 -r。

  • -l 指定监听的本机地址和端口,地址可以省略,但必须指定端口。不指定地址的话会使用默认的 127.0.0.1 地址
  • -r 指定转发的目的地址和端口,均不能省略

配置文件格式

配置文件需要用-c参数指定,如 -c config.json。
配置文件支持端口段,当转发端口的数量大于本地地址时,都会默认使用第一个传入的地址。
这样实现了一个地址上的多端口转发多ip或单ip上的多端口。示例如下:
{
    "listening_addresses": ["0.0.0.0"],
    "listening_ports": ["20843-20844"],
    "remote_addresses": ["92.38.188.*", "194.87.95.*"],
    "remote_ports": ["443", "10001"]
}

需要注意的是,配置文件和命令行指定地址冲突,所以不能同时使用 -c 和-l -r。

守护进程

  • 新建 realm.service,并放到 /etc/systemd/system/ 文件夹内,然后用root权限执行以下命令:
  1. 命令方式
    这一点可以通过systemd解决,,具体内容如下
[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=/usr/bin/realm -l x.x.x.x:port -r x.x.x.x:port

[Install]
WantedBy=multi-user.target
  1. 配置文件方式
[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=/usr/bin/realm -c /root/realm/config.json

[Install]
WantedBy=multi-user.target

开机启动

systemctl enable --now realm

启动/重新启动/停止

systemctl start/restart/stop realm
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值