![QQ截图20220107173955.png](https://b3logfile.com/file/2022/01/QQ截图20220107173955-c213f0ad.png?imageView2/2/w/1280/format/jpg/interlace/1/q/100)
1.rathole是什么
安全、稳定、高性能的内网穿透工具,用 Rust 语言编写
rathole,类似于 frp 和 ngrok,可以让 NAT 后的设备上的服务通过具有公网 IP 的服务器暴露在公网上。
github 项目地址:https://github.com/rapiz1/rathole
官方中文文档:https://github.com/rapiz1/rathole/blob/main/README-zh.md
配置示例:https://github.com/rapiz1/rathole/tree/main/examples
systemd:https://github.com/rapiz1/rathole/tree/main/examples/systemd
特点:相比FRP,具有高性能 具有更高的吞吐量,高并发下更稳定低资源消耗 内存占用远低于同类工具
2.服务端配置
新建 systemd
vim /usr/lib/systemd/system/ratholes.service # centos
vim /etc/systemd/system/ratholes.service # debian 系
[Unit]
Description=Rathole Server Service
After=network.target
[Service]
Type=simple
User=nobody
Restart=on-failure
RestartSec=5s
ExecStart=/usr/bin/rathole -s /etc/rathole/rathole.toml
LimitNOFILE=1048576
[Install]
WantedBy=multi-user.target
下载二进制文件:https://github.com/rapiz1/rathole/releases
我是用的X86选择 rathole-x86_64-unknown-linux-musl.zip
下载解压添加执行权限移动到/usr/bin/
unzip rathole-x86_64-unknown-linux-musl.zip
chmod +x rathole
mv rathole /usr/bin/rathole
创建目录和配置文件
mkdir /etc/rathole
touch /etc/rathole/rathole.toml
服务端简单配置
vim /etc/rathole/rathole.toml
# server.toml
[server]
bind_addr = "0.0.0.0:2333" # `2333` 配置了服务端监听客户端连接的端口
[server.services.my_nas_ssh]
token = "use_a_secret_that_only_you_know" # 用于验证的 token
bind_addr = "0.0.0.0:5202" # `5202` 配置了将 `my_nas_ssh` 暴露给互联网的端口
之后重新加载单元
systemctl daemon-reload
systemctl start ratholes #启动
systemctl status ratholes #查看状态
systemctl enable ratholes #开机自启动
3.客户端配置
新建 systemd
vim /usr/lib/systemd/system/ratholec.service # centos
vim /etc/systemd/system/ratholec.service # debian 系
[Unit]
Description=Rathole Client Service
After=network.target
[Service]
Type=simple
User=nobody
Restart=on-failure
RestartSec=5s
ExecStart=/usr/bin/rathole -c /etc/rathole/rathole.toml
LimitNOFILE=1048576
[Install]
WantedBy=multi-user.target
客户端简单配置
vim /etc/rathole/rathole.toml
[client]
remote_addr = "myserver.com:2333" # 服务器的地址。端口必须与 `server.bind_addr` 中的端口相同。
[client.services.my_nas_ssh]
token = "use_a_secret_that_only_you_know" # 必须与服务器相同以通过验证
local_addr = "127.0.0.1:22" # 需要被转发的服务的地址
之后重新加载单元
systemctl daemon-reload
systemctl start ratholec #启动
systemctl status ratholec #查看状态
systemctl enable ratholec #开机自启动