frp 开源 内网穿透工具
  ETWZF7L1nsXD 2023年11月02日 41 0

项目介绍

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 环境为例,安装包的内容如下:

frp 开源 内网穿透工具_客户端

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

服务端配置

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

[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,如下:

[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

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

frp 开源 内网穿透工具_内网_02

小试牛刀

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

@RestController
public class FRPTestController {
    @GetMapping("/helloFrp")
    public String sayHello() {
        return "访问内网成功";
    }
}

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

返回结果如下:

frp 开源 内网穿透工具_服务端_03

说明我们的 frp 起作用了!

总结

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

项目地址:https://github.com/fatedier/frp
官方文档:https://gofrp.org/docs/


【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2023年11月08日 0

暂无评论

推荐阅读
  jnZtF7Co41Wg   2023年12月11日   29   0   0 nginx客户端服务端
  jnZtF7Co41Wg   2023年12月09日   27   0   0 客户端服务端数据
  jnZtF7Co41Wg   2023年12月10日   22   0   0 nginx客户端服务端NFS
  aYmIB3fiUdn9   2023年12月08日   50   0   0 客户端IPNATlvs
ETWZF7L1nsXD