frp 内网穿透

背景:公司测试环境服务器全属于192.168.130.0/24,为了方便测试人员请求域名访问内网中的测试环境,特用frp进行穿透。我们需要一台有公网IP的服务器。

FRP 采用 Go 语言开发,支持 Windows、Linux、MacOS、ARM等多平台部署。FRP
安装非常容易,只需下载对应系统平台的软件包,并解压就可用了。

目标: 访问 testxc.youpenglai.com,对应内网web的8080端口下的tomcat。

  • 192.168.133.130 内网web
  • 116.62.57.91 公网服务器IP
  • 域名 testxc.youpenglai.com

准备环境:

(1)公网服务器1台
(2)内网服务器1台(我这里演示的是linux环境,win10上面vmware安装的centos7)
(3)公网服务器绑定域名1个(实现二1中(1)功能不需要公网服务器绑定域名,二1中(2)功能必须需要公网服务器绑定域名)
(4)内网服务器部署一个web服务,可以用tomcat模拟,这里就不演示了

在这里插入图片描述

安装frp:

1、公网服务器与内网服务器都需要下载frp进行安装
2、下载地址是https://github.com/fatedier/frp/releases,下载linux版本frp_0.21.0_linux_amd64.tar.gz
在这里插入图片描述
3、上传到两台服务/usr/local该目录下,解压tar -zxvf frp_0.21.0_linux_amd64.tar.gz
4、重命名frp_0.21.0_linux_amd64为 frp,这里主要关注4个文件,分别是frpc、frpc.ini和frps、frps.ini,前者两个文件是客户端所关注文件,后者两个文件是服务端所关注两个文件
5、配置服务端(公网服务器),首先删掉frpc、frpc.ini两个文件,然后再进行配置,vi ./frps.ini,

[common]
bind_addr = 0.0.0.0
bind_port = 7100					#与客户端绑定的进行通信的端口
#bind_udp_port = 7201
#kcp_bind_port = 7200

vhost_http_port = 80				 #访问客户端web服务自定义的端口
vhost_https_port = 443			     #访问客户端web服务自定义的端口

dashboard_addr = 0.0.0.0
dashboard_port = 7500
dashboard_user = admin
dashboard_pwd = AL1EVZoQ1pbRit1

log_file = ./frps.log
log_level = info
log_max_days = 3

token = JBKKdGKhIfeNrsW						#给 FRP 服务端加上身份验证

max_pool_count = 5
max_ports_per_client = 0
authentication_timeout = 900				#配置超时时间
tcp_mux = true

FRP 服务端增加一个 Dashboard
通过 Dashboard 可以方便的查看 FRP 的状态以及代理统计信息展示,要使用这个功能首先需要在 FRP 服务端配置文件中指定 Dashboard 服务使用的端口,网页访问:http://116.62.57.91:7500/
在这里插入图片描述

默认情况下只要知道 FRP 服务端开放的端口,任意 FRP 客户端都可以随意在服务端上注册端口映射,这样对于在公网上的 FRP
服务来说显然不太安全。FRP 提供了身份验证机制来提高 FRP 服务端的安全性。要启用这一特性也很简单,只需在 FRP 服务端和 FRP
客户端的 common 配置中启用 token 参数就行。

启用这一特性后,只有 FRP 服务端和 FRP 客户端的 common 配置中的 token 参数一致身份验证才会通过,FRP
客户端才能成功在 FRP 服务端注册端口映射。

保存然后启动服务./frps -c ./frps.ini,这是前台启动,后台启动命令为nohup ./frps -c ./frps.ini &

6、配置客户端(内网服务器),首先删掉frps、frps.ini两个文件,然后再进行配置,vi ./frpc.ini

[common]
server_addr = 116.62.57.91				#公网服务器ip
server_port = 7100						#与服务端bind_port一致
token = JBKKdGKhIfeNrsW

#公网访问内部web服务器以http方式

[httptestxc] 							 #客户端通过服务器与用户之间的通道名,每个客户端必须不一样
type = http									#访问协议
local_ip = 127.0.0.1
local_port = 8080							#内网web服务的端口号
remote_port = 80 						 #是服务器端对外提供本机服务的端口
use_encryption = false
use_compression = true
custom_domains = testxc.youpenglai.com		#所绑定的公网服务器域名,一级、二级域名都可

注意:[httptestxc]是客户端通过服务器与用户之间的通道名,每个客户端必须不一样,remote_port是服务器端对外提供本机服务的端口号,即用户访问116.62.57.91:80,相当于连接127.0.0.1:8080

保存然后执行./frpc -c ./frpc.ini启动,这是前台启动,后台启动命令为nohup ./frpc -c ./frpc.ini &

成功:
在这里插入图片描述

FRP 客户端热加载配置文件

当修改了 FRP 客户端中的配置文件,从 0.15 版本开始可以通过 frpc reload 命令来动态加载配置文件,通常会在 10 秒内完成代理的更新。
启用此功能需要在 FRP 客户端配置文件中启用 admin 端口,用于提供 API 服务。配置如下:

$ vim frpc.ini

[common]
admin_addr = 127.0.0.1
admin_port = 7400

重启 FRP 客户端,以后就可通过热加载方式进行 FRP 客户端配置变更了。

补充后期遇到的问题!!!

注意:客户端的时钟不能和服务器端时钟相差太大!否则会出现认证超时的错误:authorization timeout

这个超时时间可以在配置文件中通过 authentication_timeout 这个参数来修改,单位为秒,默认值为 900,即 15 分钟。如果修改为 0,则 frps 将不对身份验证报文的时间戳进行超时校验。

使用命令:date 查看当前计算机时间

使用命令:date -s “YYYY-MM-DD HH-MM-SS” 设置时间

使用命令:hwclock -w 写入flash

参考:
https://www.hi-linux.com/posts/25686.html#frp-%E7%AE%A1%E7%90%86
http://www.senra.me/nat-traversal-series-frp-next-generation-high-performance-ngrok-alternative/
https://www.jianshu.com/p/00c79df1aaf0
http://www.cnblogs.com/sanduzxcvbnm/p/8508741.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值