Skip to content

anchel/rathole-go

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

30 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

rathole-go

参考rust版的rathole,用go实现。配置文件和rathole的一致。目前只实现了基础功能

下面的说明是搬自rathole

使用 rathole 需要一个有公网 IP 的服务器,和一个在 NAT 或防火墙后的设备,其中有些服务需要暴露在互联网上。

假设你在家里的 NAT 后面有一个 NAS,并且想把它的 ssh 服务暴露在公网上:

  1. 在有一个公网 IP 的服务器上

创建 server.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` 暴露给互联网的端口

然后运行:

./ratholego server.toml
  1. 在 NAT 后面的主机(你的 NAS)上

创建 client.toml,内容如下,并根据你的需要进行调整。

# client.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" # 需要被转发的服务的地址

然后运行:

./ratholego client.toml
  1. 现在 rathole 客户端会连接运行在 myserver.com:2333rathole 服务器,任何到 myserver.com:5202 的流量将被转发到客户端所在主机的 22 端口。

所以你可以 ssh myserver.com:5202 来 ssh 到你的 NAS。

Configuration

如果只有一个 [server][client] 块存在的话,rathole 可以根据配置文件的内容自动决定在服务器模式或客户端模式下运行,就像 Quickstart 中的例子。

[client][server] 块也可以放在一个文件中。然后在服务器端,运行 ratholego --server config.toml。在客户端,运行 ratholego --client config.toml 来明确告诉 rathole 运行模式。

About

用go语言,实现rust的rathole

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages