内网穿透神器frp

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了内网穿透神器frp相关的知识,希望对你有一定的参考价值。

参考技术A FRP 服务可以分配给你一个域名让你本地的web项目提供给外网访问, 特别适合向别人展示你本机的web demo 以及调试一些远程的API (比如微信公众号,企业号的开发)。
frp 是一个高性能的反向代理应用,可以帮助您轻松地进行内网穿透,对外网提供服务,支持 tcp, http, https 等协议类型,并且 web 服务支持根据域名进行路由转发。

在许多情况下,我们希望把内部的服务暴露到外网来使用,比如说:

可以在里面看到frps 和 frpc。frps相关的是服务端的程序和配置文件,frpc开头的是客户端的程序和配置文件。

运行结果如下

运行结果如下:

用FRP做内网穿透使用远程桌面连接家里的windows电脑

大部分家用宽带没有独立的IPV4,没法直接连接。FRP是一个内网穿透的神器,可以通过一个有公网IP的服务器搭建FRP服务端,去转发流量实现内网穿透
用FRP做内网穿透使用远程桌面连接家里的windows电脑用FRP做内网穿透使用远程桌面连接家里的windows电脑

下载
FRP在Github开源:https://github.com/fatedier/frp
在releases页面下载对应的版本。压缩包只是对应平台不通,每个包解压都包含服务器端和客户端。
用FRP做内网穿透使用远程桌面连接家里的windows电脑用FRP做内网穿透使用远程桌面连接家里的windows电脑

服务器端配置
下载
服务器端我用的是centos,所以在releases页面下载"frp_0.33.0_linux_amd64.tar.gz",如果服务器端是其他系统,下载对应的解压就行。
用FRP做内网穿透使用远程桌面连接家里的windows电脑用FRP做内网穿透使用远程桌面连接家里的windows电脑
解压文件夹内:

"frps"、"frps_full.ini"、"frps.ini"是放在服务器端运行的可执行文件和配置文件。
"frpc"、"frpc_full.ini"、"frpc.ini"是放在客户端端运行的可执行文件和配置文件。
修改配置文件
使用命令vi frps.ini修改frps.ini文件,然后保存退出:

[common]
bind_addr=0.0.0.0
bind_port = 7000
token=12310086

dashboard_port = 7500
dashboard_user = admin
dashboard_pwd = admin123
说明:

"bind_addr"是服务器本地IP,不改。
"bind_port"是frp监听端口。
"token"是验证token建议设置上。
"dashboard_port"是frp面板端口。
"dashboard_user""dashboard_pwd"是面板的账户密码。
除了"bind_addr"参数之外的其他参数,都可以根据需求自行修改,务必记住改过的参数。

然后给服务器端frps赋予执行权限:

sudo chmod 755 ./frps
运行frps

./frps -c ./frps.ini
用FRP做内网穿透使用远程桌面连接家里的windows电脑用FRP做内网穿透使用远程桌面连接家里的windows电脑
可以配合nohup或者screen在让frps后台运行。注意防火墙或者宝塔之类放行响应的端口。登录网页查看一下是否确实成功运行

访问面板
面板仅供参考,可用可不用。访问 http://服务器ip:7500
上面配置的7500端口,使用上面配置的用户名和密码 admin/admin123
登陆可以看到如下界面:

用FRP做内网穿透使用远程桌面连接家里的windows电脑用FRP做内网穿透使用远程桌面连接家里的windows电脑

客户端配置
下载frp
演示的客户端为windows,下载frp windows版"frp_0.33.0_windows_amd64.zip",解压进入文件夹:
用FRP做内网穿透使用远程桌面连接家里的windows电脑用FRP做内网穿透使用远程桌面连接家里的windows电脑

修改配置文件
本地演示用到程序是windows远程桌面,使用3389端口。需要用frp将windows客户端的3389转发到服务器端上。比如将客户端的3389转发到服务器端的33389端口。用文本编辑器打开"frpc.ini"文件:

[common]
server_addr = FRP服务端VPSip
server_port = 7000
token=12310086

[RDP]
type = tcp
local_ip = 127.0.0.1
local_port = 3389
remote_port = 33389
保存退出,在cmd里执行

frpc.exe -c frpc.ini
出现success就是连接成功
用FRP做内网穿透使用远程桌面连接家里的windows电脑用FRP做内网穿透使用远程桌面连接家里的windows电脑
此时服务器段也有连接提醒
用FRP做内网穿透使用远程桌面连接家里的windows电脑用FRP做内网穿透使用远程桌面连接家里的windows电脑
控制面板里也有提示
用FRP做内网穿透使用远程桌面连接家里的windows电脑用FRP做内网穿透使用远程桌面连接家里的windows电脑
如果没有提示,请注意在服务器防火墙或者宝塔之类的管理面板里放行响应的端口!

现在我们在外网任意一台电脑,打开windows远程桌面程序,输入服务器ip:33389,就可以连接到本地windows了
用FRP做内网穿透使用远程桌面连接家里的windows电脑用FRP做内网穿透使用远程桌面连接家里的windows电脑
注意一定要开启windows电脑的“允许远程连接”,否则有可能失败。
用FRP做内网穿透使用远程桌面连接家里的windows电脑用FRP做内网穿透使用远程桌面连接家里的windows电脑

原理
服务器端启动根据配置文件监听7000端口。客户端根据配置文件启动和服务器的frp 7000端口进行连接。
两者连接成功之后,客户端读取本地配置文件告诉服务器端,需要哪些转发操作用到什么端口。
上述操作中,客户端读取本地配置文件告诉服务器端,客户端转发本地的3389端口到了服务器端的33389。
然后服务器端再新开33389的监听端口,把来自外网访问33389端口的流量转发到客户端3389

以上是关于内网穿透神器frp的主要内容,如果未能解决你的问题,请参考以下文章

用FRP做内网穿透使用远程桌面连接家里的windows电脑

基于FRP反向代理工具实现内网穿透攻击

用FRP做内网穿透使用远程桌面连接家里的windows电脑

frp内网穿透

路由器frp内网穿透

FRP内网穿透部署