内网穿透工具frp的简单使用

最近有个项目,使用到的装有linux系统的3399pro开发板不在工位,和PC不在同一个局域网下。但是又需要经常远程访问,所以这时候就需要使用内网穿透工具—frp来帮助PC能够连接到开发板。

不过前提是,你得有一个公网IP。

一、frp 是什么?

frp 是一个专注于内网穿透的高性能的反向代理应用,支持 TCP、UDP、HTTP、HTTPS 等多种协议。可以将内网服务以安全、便捷的方式通过具有公网 IP 节点的中转暴露到公网。

刚开始的时候,代理多数是帮助内网client访问外网server用的。后来出现了反向代理,"反向"这个词在这儿的意思其实是指方向相反,即代理将来自外网客户端的请求转发到内网服务器,从外到内。

项目链接https://github.com/fatedier/frp

二、为什么使用 frp?

通过在具有公网 IP 的节点上部署 frp 服务端,可以轻松地将内网服务穿透到公网,同时提供诸多专业的功能特性,这包括:

  • 客户端服务端通信支持 TCP、KCP 以及 Websocket 等多种协议。
  • 采用 TCP 连接流式复用,在单个连接间承载更多请求,节省连接建立时间。
  • 代理组间的负载均衡。
  • 端口复用,多个服务通过同一个服务端端口暴露。
  • 多个原生支持的客户端插件(静态文件查看,HTTP、SOCK5 代理等),便于独立使用 frp 客户端完成某些工作。
  • 高度扩展性的服务端插件系统,方便结合自身需求进行功能扩展。
  • 服务端和客户端 UI 页面。

三、安装

1、下载

可以在 Github 的 Release 页面中下载到最新版本的客户端和服务端二进制文件,所有文件被打包在一个压缩包中。注意选择和自己的平台匹配的压缩包,如果公网机器和内网机器平台不一样,那就选择各自平台对应的压缩包!!!

2、部署

解压缩下载的压缩包,将其中的 frpc拷贝到内网服务所在的机器上,将 frps 拷贝到具有公网 IP 的机器上,放置在任意目录。

3、开始使用!

编写好配置文件,然后:

  • 先通过 ./frps -c ./frps.ini启动服务端,
  • 再通过 ./frpc -c ./frpc.ini启动客户端。

四、使用示例

1、通过 SSH 访问内网机器

  • 在具有公网 IP 的机器上部署frps,修改 frps.ini 文件,这里使用了最简化的配置,设置了 frp 服务器用户接收客户端连接的端口:

[common]
bind_port = 7000

  • 在需要被访问的内网机器上(SSH 服务通常监听在 22 端口)部署frpc,修改 frpc.ini文件,假设 frps所在服务器的公网 IP 为x.x.x.x

[common]
server_addr = x.x.x.x
server_port = 7000
[ssh]
type = tcp
local_ip = 127.0.0.1
local_port = 22
remote_port = 6000

local_iplocal_port 配置为本地需要暴露到公网的服务地址和端口。

remote_port表示在frp服务端监听的端口,访问此端口的流量将会被转发到内网服务对应的端口,也即用户访问此端口的请求会被转发到 local_ip:local_port

  • 分别启动 frpsfrpc

  • 通过 SSH 访问内网机器,假设frp服务端用户名为 test

ssh -oPort=6000 test@x.x.x.x
frp 会将请求 x.x.x.x:6000 的流量转发到内网机器的 22 端口。

可以发现在配置文件中,还有一个7000端口,这个端口是frp服务端和frp客户端连接用的。也就是想要访问内网服务(frp客户端)的机器与frp服务端(公网服务器)通过6000端口进行连接,然后frp服务端(公网服务器)再通过7000端口和内网服务(frp客户端)的22端口进行连接,这样就将想要访问内网服务的机器和内网服务连接到了一起!!!

所以,我们才会使用ssh -oPort=6000 test@x.x.x.x,因为我们直接连接的其实是公网服务器,是它提供了反向代理的功能!!!

2、使用VNC访问内网机器

  • 首先你需要在内网机器上安装vncserver,例如可以执行以下安装命令:
sudo apt install tightvncserver
  • 安装好之后,直接输入以下命令启动vncserver
vncserver#第一次启动需要设置密码。

具体操作请参考此文章:https://www.cnblogs.com/a5idc/p/13539969.html,这里是以Ubuntu为例的,实际情况以自己的系统版本为准!!!

  • 然后和上述1 通过 SSH 访问内网机器中描述的差不多,只不过在 frpc.ini多设置了一段内容:

[common]
server_addr = x.x.x.x
server_port = 7000
[ssh]
type = tcp
local_ip = 127.0.0.1
local_port = 22
remote_port = 6000
[vnc]
type = tcp
local_ip = 127.0.0.1
local_port = 5901#这个端口可以在vncserver配置文件中设置
remote_port = 7001

  • 最后在要访问内网机器的本地机器上安装vnc客户端,如vncviewer,配置好服务端 的ip、端口号以及密码之后就可以访问vnc服务端了,也就是内网机器。

3、安全地暴露内网服务

这个示例将会创建一个只有自己能访问到的 SSH 服务代理。

对于某些服务来说如果直接暴露于公网上将会存在安全隐患。

使用 stcp(secret tcp) 类型的代理可以避免让任何人都能访问到要穿透的服务,但是访问者也需要运行另外一个 frpc客户端。

  • frps.ini内容如下:

[common]
bind_port = 7000

  • 在需要暴露到内网的机器上部署 frpc,且配置如下:

[common]
server_addr = x.x.x.x
server_port = 7000
[secret_ssh]
type = stcp
#只有 sk 一致的用户才能访问到此服务
sk = abcdefg
local_ip = 127.0.0.1
local_port = 22

  • 在想要访问内网服务的机器上也部署 frpc,且配置如下:

[common]
server_addr = x.x.x.x
server_port = 7000
[secret_ssh_visitor]
type = stcp
#stcp 的访问者
role = visitor
#要访问的 stcp 代理的名字
server_name = secret_ssh
sk = abcdefg
#绑定本地端口用于访问 SSH 服务
bind_addr = 127.0.0.1
bind_port = 6000

  • 通过 SSH 访问内网机器,假设用户名为 test:
    ssh -oPort=6000 test@127.0.0.1,这里个人理解端口6000用户名test指的还是frp服务端的,但是此时使用的IP地址却是内网机器的。

参考链接https://gofrp.org/docs/

  • 2
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

耐心的小黑

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值