当前位置:   article > 正文

最强内网穿透工具frp_frp官网

frp官网

什么是frp

frp 是一个高性能的反向代理应用,可以帮助您轻松地进行内网穿透,对外网提供服务,支持 tcp, http, https 等协议类型,并且 web 服务支持根据域名进行路由转发。frp 采用 C/S 模式,将服务端部署在具有公网 IP 机器上,客户端部署在内网或防火墙内的机器上,通过访问暴露在服务器上的端口,反向代理到处于内网的服务。 在此基础上,frp 支持 TCP, UDP, HTTP, HTTPS 等多种协议,提供了加密、压缩,身份认证,代理限速,负载均衡等众多能力。

下图是frp官网:https://gofrp.org/

大家可以去看:傻瓜式-Web面板的轻量级、高性能内网穿透工具:nps使用教程

最强内网穿透工具frp

GitHub地址:
https://github.com/fatedier/frp,看下图就知道认可度有多高吧。

最强内网穿透工具frp

安装frp

由于frp是go语言开发,因此可以直接下载可执行程序,没有任何依赖。一般通过GitHub的releases下载:
https://github.com/fatedier/frp/releases,我一般用下图这两个版本。

最强内网穿透工具frp

Linux用通用解压命令:tar -xf
frp_0.37.0_linux_amd64.tar.gz

window直接用工具进行解压吧。最终得到frps、frpc这两个可执行程序,以及示例配置文件。

配置frps

按照如下配置frps.ini文件,在我的公网Linux服务器上执行frps -c frps.ini就可以成功运行。当然也可以使用systemd\frps.service将frps加入系统自启之类的,不过我还是喜欢用supervisor工具管理这些程序。

  1. [common]
  2. # 与客户端建立连接端口
  3. bind_port = 7000
  4. # 与客户端校验的token
  5. token = my_token
  6. # 提供web界面端口
  7. dashboard_port = 7500
  8. # web界面登录用户名
  9. dashboard_user = admin
  10. # web界面登录密码
  11. dashboard_pwd = password

配置frpc

按照如下配置在我的window电脑上的frpc.ini文件,值得注意的是remote_port实际是公网Linux服务器那边监听的端口,也就是说frpc通过server_port连接到frps上,通知frps启用remote_port来穿透到内网。运行客户端程序:frpc -c frpc.ini

  1. [common]
  2. # 连接frps的IP地址
  3. server_addr = 192.168.1.100
  4. # 连接frps的端口
  5. server_port = 7000
  6. # 和frps服务端校验的token
  7. token = my_token
  8. # 这里取名随意,一般有意义就行
  9. [stream]
  10. # 看官网有这些类型: TCP,UDP,HTTP,HTTPS,STCP,SUDP
  11. # 去这里开始看实例: https://gofrp.org/docs/examples/ssh/
  12. type = tcp
  13. # 本地访问的IP地址
  14. local_ip = 127.0.0.1
  15. # 本地访问的端口
  16. local_port = 8800
  17. # 在frps服务器上对应的端口
  18. remote_port = 6600

访问frps的web服务

根据frps的dashboard_port端口访问web服务(
http://192.168.1.100:7500/),可以看到如下的tcp里面有一条内网穿透的服务可以使用。可以看到左侧的tab页,可以支持好几种内网穿透的协议,不过我一般只用到tcp协议,例如访问内网ssh后台,用起来杠杠的。

最强内网穿透工具frp

内网启动tcp服务

为了方便演示,编写了内网的http服务,在/test的方法里面,打印了远程地址,以及http的get请求的一个参数。

  1. package main
  2. import (
  3. "fmt"
  4. "net/http"
  5. )
  6. func main() {
  7. http.HandleFunc("/test", func(w http.ResponseWriter, r *http.Request) {
  8. fmt.Fprintf(w, "RemoteAddr:%s\n", r.RemoteAddr)
  9. fmt.Fprintf(w, "data:%s\n", r.FormValue("data"))
  10. })
  11. http.ListenAndServe("127.0.0.1:8800", nil)
  12. }

测试结果

如下图所示当访问服务器的6600端口,实际穿透到访问内网127.0.0.1:8800的服务器。我配置的是tcp协议,因此只要内网的服务是基于tcp协议的,那么就可以对6600端口使用相应的工具去访问。官网示例是访问内网ssh服务:
https://gofrp.org/docs/examples/ssh/。

最强内网穿透工具frp

数据流向图

按照我的理解,画了一张数据流向图。按照数字进行先后顺序进行处理。

最强内网穿透工具frp

总结

内网穿透在ipv6没有普及之前都是刚需啊,例如很多人都会用内网穿透将内网window的3389端口映射,然后就可以在远端使用window自带的mstsc进行远程桌面的访问。也可以将内网Linux服务器的ssh端口穿透到公网,就可以在远程访问内网的ssh后台了。爱了爱了frp牛逼。

原文:https://www.toutiao.com/i6973175902020633118/

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/我家自动化/article/detail/187254
推荐阅读
相关标签
  

闽ICP备14008679号