使用frp,实现内网穿透

前言

Frp是基于Go语言开发的,支持Windows、Linux、MacOS、ARM等多平台部署的一种针对内网穿透的高性能快速反向代理,可将防火墙或NAT后面的本地服务以安全便捷的方式通过具有公网IP节点的中转暴露到Internet。Frp支持TCP、UDP、HTTP以及HTTPS协议,在这些协议中,请求可以通过域名转发到内部服务。

frp的工作原理

Frpc运行后向Frps注册;注册完成后用户可向Frps请求数据;Frps通知Frpc有新的数据请求,需要建立连接;Frpc收到Frps的连接请求,建立起新的连接;连接建立后Frps将Frpc与用户的数据进行双向转发。Frp工作原理下图所示。

SDDZ202108064_043

环境要求

  • 外网服务器一台(有公网ip的服务器,如云服务器)
  • 内网服务器一台(自己的电脑或其他服务器)

安装与配置

下载frp安装包

下载地址:GitHub地址

❗❗❗Frp安装过程中应注意Frpc与Frps版本保持一致,并根据操作系统选择对应的版本的Frp安装包。

image-20210916223808130

外网服务器部署

将frps和frps.ini两个文件上传至外网服务器,修改配置文件frps.ini,如下:

[common]
bind_port = 7000               #服务器监听端口
token = 2425                   #密码  不需要这项可删除这行

输入以下命令启动frps

./frps -c frps.ini            #测试启动frps 关闭终端时任务也会中断
nohup ./frps -c frps.ini &    #测试成功后,用该命令后台执行任务

运行结果如图:

image-20210917231127285

本地服务器部署

本地服务器可以只保留frpc.exe和frpc.ini,修改配置文件frpc.ini,如下

[common]
server_addr = xx.xx.xx.xx     #外网服务器ip
server_port = 7000            #外网服务器监听端口  保持和外网服务器一致
token = 2425                  #密码  保持和外网服务器一致 不需要可删除这行  

[name]                        #代理服务名字 可随意
type = tcp                    #代理的端口类型
local_port = 3389             #本地服务端口
local_ip = 127.0.0.1          #本地或局域网ip  默认127.0.0.1不用改
remote_port = 3389            #远程连接的端口

这里我将文件放在C盘的frpc文件夹中,在cmd执行如下命令

cd c:\frpc                 #切换到文件目录 根据自己的文件路径改写
frpc -c frpc.ini           #启动frpc

或者在桌面新建一个txt文本文档,输入以下命令保存,修改文件后缀为ps1,右击选择使用PowerShell运行,如图

image-20210917230710849

运行结果如图:

image-20210917231611990

内网穿透应用

  • 远程访问本地局域网内搭建的网页

  • 远程访问局域网内的nas服务器等设备

  • windows远程桌面

  • MC,饥荒等游戏联机

    例,转发windows远程桌面的端口,可以远程在别的设备上登录image-20210917233946606

Q.E.D.