前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >70k star 的最强内网穿透工具,你一定要试试

70k star 的最强内网穿透工具,你一定要试试

作者头像
永恒君
发布2023-09-02 15:23:21
3860
发布2023-09-02 15:23:21
举报
文章被收录于专栏:开源小分队
最近因为各种原因,了不起需要远程办公一段时间。之前也是写了几篇推荐远程控制工具的文章,方便在家远程到公司的电脑上去做调试程序、部署服务、获取文件等操作。不过如果其他同事也有类似的需求,比如想访问一下我部署的 web 服务,总不能让每个人都连接到我的工作电脑操作吧。

所以今天了不起就要把事情做的彻底些,通过内网穿透工具,实现在家也能访问公司内网环境的问题。说到内网穿透工具,那就少不了大名鼎鼎的 frp 了!

项目介绍

frp 是一个开源的、专注于内网穿透的高性能反向代理应用,使用 go 语言开发,在 github 上的 star 数接近了 70k。

它支持 TCP、UDP、HTTP、HTTPS 等多种协议,而且支持 P2P 通信。frp 可以将内网服务以安全、便捷的方式通过具有公网 IP 节点的中转暴露到公网。

frp 主要由客户端(frpc) 和服务端(frps) 两部分组成,服务端一般都需要部署到具有公网 IP 的服务器上,客户端部署在需要穿透的内网主机上。用户通过外网访问服务端的 frps 服务后,frp 会根据请求的端口等信息将请求路由转发到对应的内网主机上,进而实现内网穿透通信。

项目部署

下面我通过一个示例来给大家介绍一下 frp 的部署,很简单。

比如我需要在 Linux 上部署服务端,内网主机是一个 Windows 主机,我需要在内网的 Windows 主机上本地部署一个 web 服务,让其他人通过外网来访问。

下载安装包

首先,从 frp 的项目主页下载这两个平台的安装包,并进行各自进行部署。

以 Windows 环境为例,安装包的内容如下:

其中 frpc.exe 就是客户端程序,frps.exe 是服务端程序。这两个程序对应各自的配置文件,frpc.ini 是客户端配置,frps.ini 是服务端配置。

服务端配置

我们修改服务端的配置文件 frps.ini,如下:

代码语言:javascript
复制
[common]
bind_port = 7000
# frp可视化面板访问端口
dashboard_port = 7500
dashboard_user = 登录用户名
dashboard_pwd = 登录用户密码
vhost_http_port = 8088

其中 bind_port 是和客户端绑定的端口,dashboard_port 是 frp 管理面板端口,是可选项。下面的用户名和密码是管理面板的登录信息。vhost_http_port 则是我们需要提供 web 服务的内网穿透时,需要用到的端口号。

客户端配置

我们修改内网主机客户端的配置文件 frpc.ini,如下:

代码语言:javascript
复制
[common]
server_addr = 101.x.x.x
server_port = 7000

[web]
type = http
local_port = 8088
custom_domains = 101.x.x.x

其中,server_addr 是服务端的 ip 地址,server_port 是绑定端口,与服务端的配置保持一致。

下方的 type 指定当前需要提供 http 的穿透服务,local_port 是本地 web 服务开放的端口号,custom_domains 是服务端的 ip 地址,当然这里也可以填写域名。

启动

我们首先在 Linux 服务器上启动服务端,使用命令:./frps -c ./frps.ini

之后在 Windows 主机上启动客户端,使用命令:frpc -c frpc.ini

当你看到这个输出,就说明客户端已经启动成功了。

小试牛刀

我们用 SpringBoot 来写一个简单的 web 服务,服务端口为 8088,请求直接返回字符串。代码如下:

代码语言:javascript
复制
@RestController
public class FRPTestController {
    @GetMapping("/helloFrp")
    public String sayHello() {
        return "访问内网成功";
    }
}

启动服务后,我们在外网访问地址,请求链接:服务端ip:8088/helloFrp

返回结果如下:

说明我们的 frp 起作用了!

总结

frp 的功能超级强大,远不止文中介绍的这个小功能这么简单。了不起也尝试了通过内网穿透 3389 端口实现远程桌面服务(不要吐槽我为啥这么喜欢研究远程桌面哈),也是很好实现的。项目地址和官方文档放到下面啦,大家快去好好研究研究吧。

代码语言:javascript
复制
项目地址:https://github.com/fatedier/frp
官方文档:https://gofrp.org/docs/
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2023-07-27,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 开源小分队 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 项目介绍
  • 项目部署
    • 下载安装包
      • 服务端配置
        • 客户端配置
          • 启动
            • 小试牛刀
            • 总结
            领券
            问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档