BPI-RV2 RISC-V开源路由器之部署内网穿透
BPI-RV2 RISC-V开源路由器之部署内网穿透
背景
最近刚弄到一块 BPI-RV2 RISC-V 开源路由器,刚好自己有个云服务器和公网IP,打算在openwrt上面部署frp
来做内网穿透,这样就可以通过SSH远程链接家里的网关设备了。
frp 是什么?
frp 是一款高性能的反向代理应用,专注于内网穿透。它支持多种协议,包括 TCP、UDP、HTTP、HTTPS 等,并且具备 P2P 通信功能。使用 frp,您可以安全、便捷地将内网服务暴露到公网,通过拥有公网 IP 的节点进行中转。
安装部署frp
frp 采用 Go 语言编写,支持跨平台,只需下载适用于您平台的二进制文件即可执行,无需额外依赖。
下载
从 GitHub 的 Release 页面( https://github.com/fatedier/frp/releases )中下载最新版本的客户端和服务器二进制文件,所有文件都打包在一个压缩包中。
需要注意的是,要根据机器下载对应架构的二进制程序,比如:
- 我的云服务器是X86_64架构的,所以要下载amd的版本。
- BPI-RV2开源路由是RISC-V架构的,所以要下载riscv64的版本。
部署
解压下载的压缩包,分别部署 frpc 客户端和 frps 服务器。
$ ls -l
total 31004
-rw-r--r-- 1 xxx xxx 11358 Jun 25 12:15 LICENSE
-rwxr-xr-x 1 xxx xxx 13762712 Jun 25 12:14 frpc # frpc 客户端
-rw-r--r-- 1 xxx xxx 142 Jun 25 12:15 frpc.toml # frpc 配置文件
-rwxr-xr-x 1 xxx xxx 17957016 Jun 25 12:14 frps # frps 服务器
-rw-r--r-- 1 xxx xxx 16 Jun 25 12:15 frps.toml # frps 配置文件
将 frpc
复制到内网服务所在的机器上。这里就是BPI-RV2, 可以通过scp
或其他工具都行。
将 frps
复制到拥有公网 IP 地址的机器上,并将它们放在任意目录。
开始使用frp!
编写配置文件,目前支持的文件格式包括 TOML/YAML/JSON,旧的 INI 格式仍然支持,但已经不再推荐。
1. 在具有公网 IP 的机器上部署 frps
部署 frps 并编辑 frps.toml 文件。以下是简化的配置,其中设置了 frp 服务器用于接收客户端连接的端口和简单的认证token:
bindPort = 7000
auth.token = "xxxxxxxxxxxxx"
- bindPort 按需修改。
记得防火墙要添加相应端口的出入规则!
否则可能会报错类似i/o timeout
的错误
2. 在需要被访问的内网机器上部署 frpc
部署 frpc 并编辑 frpc.toml 文件,假设 frps 所在服务器的公网 IP 地址为 x.x.x.x。以下是示例配置:
serverAddr = "x.x.x.x"
serverPort = 7000
auth.token = "xxxxxxxxxxxxx"
[[proxies]]
name = "ssh"
type = "tcp"
localIP = "127.0.0.1"
localPort = 22
remotePort = 6000
- serverPort 为frp 服务端绑定的监听端口,即前面 frps 配置文件中的
bind_port
。 - auth.token 为前面 frps 配置文件中的
auth.token
。 - localIP 和 localPort 配置为需要从公网访问的内网服务的地址和端口,按需修改。
- remotePort 表示在 frp 服务端监听的端口,按需修改,访问此端口的流量将被转发到本地服务的相应端口。
3. 启动 frps 和 frpc
使用以下命令启动服务器:nohup ./frps -c ./frps.toml &
。
使用以下命令启动客户端:./frpc -c ./frpc.toml
。
如果需要在后台长期运行,建议结合其他工具,如 systemd
和 supervisor
。
4. 通过 SSH 访问内网机器
使用以下命令通过 SSH 访问内网机器,假设用户名为 test:
# x.x.x.x 为 frps 所在服务器的公网 IP 地址, 6000为 frpc 配置文件中的
ssh -o Port=6000 test@x.x.x.x remotePort
frp 将请求发送到 x.x.x.x:6000 的流量转发到内网机器的 22 端口(frpc配置的localPort)。