frp内网穿透工具实现内网穿透

前言

工作中遇到项目中需要开发公众号的情况,公众号平台需要指定域名,且要求端口需要是80或443端口才行。而公司的公网域名和端口已经被使用,为了方便开发调试,使用了frp来实现内网穿透。这里使用的frp版本为0.35.1

frp简介

frp是什么

frp 是一个高性能的反向代理应用,可以帮助您轻松地进行内网穿透,对外网提供服务,支持 tcp, http, https 等协议类型,并且 web 服务支持根据域名进行路由转发。

frp 的作用

  • 利用处于内网或防火墙后的机器,对外网环境提供 http 或 https 服务。
  • 对于 http 服务支持基于域名的虚拟主机,支持自定义域名绑定,使多个域名可以共用一个80端口。
  • 利用处于内网或防火墙后的机器,对外网环境提供 tcp 服务,例如在家里通过 ssh 访问处于公司内网环境内的主机。
  • 可查看通过代理的所有 http 请求和响应的详细信息。(待开发)

frp的架构

frp的架构

准备工作

  1. 有公网ip的设备(云服务器,VPS都可以)

  2. 保证公网设备响应的端口要对外开启,如果是云服务器则到响应的云服务器产商的控制台中开启,以供后续使用

  3. 如果有使用域名的需求的话,记得将域名映射到公网ip

frp下载地址

github页面地址:https://github.com/fatedier/frp/releases
frp下载
跟据自己的机器下载对应的版本就好~不然不兼容版本无法运行!!
我下载的是:
linux服务器:frp_0.35.1_linux_amd64.tar.gz
windows内网机器:frp_0.35.1_windows_amd64.zip

如果是32位系统就选386结尾的!

frp的文件结构

以windows版本为例
frp文件结构
可以看出,frp中包含了frpc和frps,c即client客户端,s即server服务端。

frpc.ini、frps.ini 分别是客户端的配置文件和服务端的配置文件,修改配置也是在这里修改

一般情况下公网机器上只用运行frps,内网机器只用运行frpc

frp配置与使用

linux公网服务器的配置(windows配置同理,这里不做说明)

1、下载frp文件

$ wget https://github.com/fatedier/frp/releases/download/v0.35.1/frp_0.35.1_linux_amd64.tar.gz

2、下载完后解压压缩包

 $ tar -zxvf frp_0.35.1_linux_amd64.tar.gz

3、根据需求修改配置(见下文)

4、启动frps

$ cd frp_0.35.1_linux_amd64/ 
$ ./frps -c ./frps.ini

通过 ssh 访问公司内网机器

1、 服务器端:修改 frps.ini 文件,配置一个名为 ssh 的反向代理:

# frps.ini
[common]
bind_port = 7000 #该端口用于与内网通信

[ssh]
listen_port = 6000 #该端口用于监听ssh请求
auth_token = 123

2、 服务器端:启动 frps:

$ ./frps -c ./frps.ini

3、 客户端:修改 frpc.ini 文件:

# frpc.ini
[common]
server_addr = x.x.x.x #frps 所在服务器的 IP
server_port = 7000 #frps 配置中bind_port的端口,两者要一直,不然怎么通信
auth_token = 123

[ssh]
local_port = 22 #本地ssh监听的端口

4、客户端:启动 frpc:

1)linux系统的启动方式:

$ ./frpc -c ./frpc.ini

2)windows系统需要cmd启动frpc.exe:
windows启动frpc.exe

5、 通过 ssh 访问内网机器,假设用户名为 test:

ssh -oPort=6000 test@x.x.x.x

通过IP或指定域名访问部署于内网的 web 服务

有时想要让其他人通过域名访问或者测试我们在本地搭建的 web 服务,但是由于本地机器没有公网 IP,无法将域名解析到本地的机器,通过 frp 就可以实现这一功能,以下示例为 http 服务,https 服务配置方法相同, vhost_http_port 替换为 vhost_https_port, type 设置为 https 即可。

1、 修改 frps.ini 文件,配置一个名为 web 的 http 反向代理,设置 http 访问端口为 80,绑定IP或域名:

# frps.ini
[common] 
bind_port = 7000 #该端口用于与内网通信
vhost_http_port = 80 #公网访问的端口,如果是https,这里替换为vhost_https_port

[web]
type = http #如果是https,这里替换为https
custom_domains = www.yourdomain.com #这里是你的公网服务器IP或域名
auth_token = 123

上述的 [web] 下的配置可以不要

2、 服务器端:启动 frps:

$ ./frps -c ./frps.ini

3、 客户端:修改 frpc.ini 文件:

# frpc.ini
[common]
server_addr = x.x.x.x #frps 所在服务器的 IP
server_port = 7000 #frps 配置中bind_port的端口,两者要一直,不然怎么通信
auth_token = 123

[web]
type = http #如果是https,这里替换为https
local_port = 8080 #内网环境web服务的端口
custom_domains = www.yourdomain.com #这里是你的公网服务器IP或域名,如果需要IP或域名同时可以访问,将IP和域名使用逗号分隔写到这里!!!!!!!!!!!

4、客户端:启动 frpc:

1)linux系统的启动方式:

$ ./frpc -c ./frpc.ini

2)windows系统需要cmd启动frpc.exe:
windows启动frpc.exe

5、通过浏览器访问 http://www.yourdomain.com(没有配域名这边就写ip地址):端口(frps中vhost_http_port的值) 即可访问到处于内网机器上的 web 服务。

更多配置

DNS、提供文件服务等更多功能,可以参考https://gitee.com/wefeng/frp

小结

frp是一款方便、快捷、高效的内网穿透工具,但是需要有公网IP的机器,而且访问速度同时受限于内网所处网络和公网机器网络的速度,不过平常使用已经是很不错的选择了。frp还有其他妙用,这里就不再赘述。

如果有帮到你,那就点赞支持下吧,或者有什么问题,还请留言或者私信~

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值