hi,你好!欢迎访问本站!登录
本站由网站地图腾讯云宝塔系统阿里云强势驱动
当前位置:首页 - 教程 - 杂谈 - 正文 君子好学,自强不息!

FRP代办及其在数据库平安上的实践

2019-11-18杂谈搜奇网27°c
A+ A-

1 代办

现如今的互联网天下里,代办效劳已异常罕见,它平常作为一个第三方或许说中转站角色替换用户获得信息或许效劳。

依据代办对象的差别,代办效劳可以分为正向代办和反向代办。

1.1 正向代办

我们平常所说的代办平常都指的是正向代办,正向代办的是客户端或许说接见者。以下图所示,在特定收集环境中,客户端直接接见目的效劳器会被限定,假如有别的一台可以直接接见到目的效劳器,且客户端也可以接见到这台效劳器,那末就可以以这台效劳器作为代办效劳器向目的效劳器提议接见,当目的效劳器收到接见请求时,并不会获知接见的真正提议者,只会认为是代办效劳器发来的请求,返回的音讯也是经由历程代办效劳器发送给客户端。

这全部历程我们可以用一个浅显的例子来类比:我们想要像土豪娘舅乞贷,然则土豪娘舅以为我们太年青,怕我们乞贷胡来就不想借。这时刻我们找上了外婆,由外婆去问土豪娘舅乞贷,然后我们从外婆手里拿到了钱。在全部乞贷历程当中,“我”就是这个提议接见的客户端,外婆就是这个正向代办,娘舅就是目的效劳器,娘舅并不晓得实际上照样我这个外甥在乞贷,他只晓得钱给了外婆,然则钱照样到了我们手上。

Fiddler、mitmproxy抓包,代办ip收集爬虫等运用就是基于正向代办。

1.2 反向代办

正向代办代办的是客户端,与之相反的反向代办代办的就是效劳器端,客户端也并不晓得真正接见的效劳器时哪一台。反向代办在负载平衡等功能完成上有很好的运用,以下图所示,客户端向代办效劳器提议请求,代办效劳器接收到请求以后推断哪台目的效劳器处置惩罚当前请求最合适,然后将请求转发该目的效劳器举行处置惩罚,末了返回的音讯也是再次经由历程代办效劳器发送给客户端。在这全部历程当中,客户端只晓得它的请求发送给了代办效劳器,并不晓得真正处置惩罚请求的是谁。

反向代办在大型web中有普遍运用,以淘宝为例,云云巨大的一个网站一台效劳器一定负担不了,但我们经由历程淘宝网购物时,只须要接见https://www.taobao.com即可,我们并不体贴处置惩罚我们接见请求的效劳器是哪一台,只需能接见淘宝购物即可。

反向代办的运用有许多,比方Ngrok、Nginx,另有本文主要要说的FRP。

2 frp代办

FRP,Fast Reverse Proxy,从英文名上可以看出主旨是竖立一种高性能的反向代办运用,采纳GO言语开辟,能在多种平台运转,支撑 TCP、UDP、HTTP、HTTPS 等多种协定范例。如今,FRP在内网穿透,对外网供应效劳有着极为普遍的运用。

2.1 内网穿透

是不是遇到过下面两种逆境:

(1)我们平台在外出差,亦或许回到家中后暂时事情须要接见公司效劳器,然则却苦于所运用的的收集环境与公司效劳器不在统一局域网内,致使无法接见。

(2)在公司办公,倏忽须要接见一下家里电脑的某个效劳(比方数据库),然则家里的电脑却没有牢固IP致使没法接见。

上面两种逆境大多数喜好折腾电脑的人都遇到过,假如你还没有处理,FRP供应的内网穿透就是一个不错的挑选。

FRP源码宣布在github上面,同时我们可依据本身体系平台在其release页面下载,直接解压即可运用。

注重,在运用前必需有一台有牢固公网IP的机械作为代办效劳器(假定公网ip为90.190.80.10),然后设置防火墙对外开放两个端口(假定为7000,6000端口)。

我们之外网机械接见内网效劳器上的mongodb数据为例,搭一个内网穿透运用,连系运用来邃晓道理。

起首设置代办效劳器,新建一个frps_mongodb.ini文件,写入一下内容:

[common]
bind_port = 7000

经由历程FRP的frps敕令启动代办效劳:

$ ./frps -c frps_mongodb.ini

接下来设置内网中须要被接见机械,新建一个frpc_mongodb.ini文件,写入一下内容:

[common]
server_addr = 90.190.80.10
server_port = 7000

[mongodb]
type = tcp
local_ip = 127.0.0.1
local_port = 27017
remote_port = 6000

启动客户端代办:

$ ./frpc -c frpc_mongodb.ini

完成上述统统操纵后,在外网的机械已可以经由历程90.190.80.10机械的6000端口来接见内网机械27017端口对应的mongodb数据库了。

上述历程当中,FRP事情流程以下图所示:

到了如今,外网已可以经由历程接见到位于局域网内部的数据库了,不过,如许平安吗?

3 stcp代办与数据库平安

3.1 stcp代办

我们晓得,关于主要数据库而言,是绝不会暴露给外网的,如上一节的经由历程内网穿透,将内网中的mongodb数据库供应给外网接见的体式格局,任何人只需晓得了代办效劳器ip和端口,都可以接见这个mongodb,这对数据库来讲是异常风险的。

欣喜的是,FRP中供应了一种不错的处理方案——stcp代办。

与上面引见过的一般代办体式格局差别,stcp代办请求在接见端也运转一个FRP,在经由历程代办效劳器举行通话前,代办效劳器将会对照接见端和被接见端的sk口令,只有当二者的sk口令一致时,才许可转发信息,有用防止经由历程FRP内网穿透进击到数据库。

运用stcp代办体式格局时,效劳器端设置与上面一样,不再多说,关键在于接见端设置和内网被接见端机械设置。

内网中的被接见端设置,新建frpc_mongodb.ini,内容以下:

[common]
server_addr = 90.190.80.10
server_port = 7000
[mongodb]
# 指定代办范例
type = stcp
local_ip = 127.0.0.1
local_port = 27017
sk = password123

启动被接见端frp代办效劳:

$./frpc -c frpc_mongodb.ini

假如只须要共一台机械接见,那末在该机械上新建设置文件frpc_mongo_viditor.ini,内容以下:

[common]
server_addr = 90.190.80.10
server_port = 7000

[mongodb_visitor]
type = stcp
# stcp 的接见者
role = visitor
# 要接见的 stcp 代办的名字,也就是上面frpc_mongodb.ini中设置的[mongodb]
server_name = mongodb
# 下面的sk口令必需与上面设置的sk一向才接见
sk = password123
# 绑定本机端口用于接见 mongodb效劳
bind_addr = 127.0.0.1
bind_port = 6000

启动frpc效劳:

$./frpc -c frpc_mongodb_viditor.ini

代办效劳器、接见端、内网被接见端三者的代办效劳都开启后,那末接见端局域网内统统机械就可以经由历程192.168.0.10机械的6000端口接见另一端内网中的mongodb数据库了,而在其他没有开启frp代办或许sk口令不准确的是接见不了的。

3.2 代办云效劳器数据库

邃晓了stcp代办体式格局后,我们就可以扩大一下这类代办体式格局的的用处。

在许多时刻,数据库是布置在云效劳器上的,在某些情况下,这些数据库不能不供应给外界接见,但假如直接开放端口,将数据库暴露给外网,却又给数据库带来平安隐患。

此时也可以用stcp代办来处理这一题目。

在上文引见正向代办和反向代办时说过,经由代办效劳器转发后,效劳器只会认为是代办效劳器在提议接见。回到数据库的题目,以mongodb数据库为例,数据库设置为绑定本机IP127.0.0.1和27017端口,那末统统来自其他机械的接见都会被谢绝,但却不会谢绝来自本机其他端口的接见。所以,处理上述题目的思绪就是运用FRP的stcp代办体式格局来代办本机数据库效劳端口,那末其他机械只需具有准确的sk口经由历程stcp代办体式格局就可以衔接上数据库。

由于是本机代办本机,所以我们可以修正一下上面的设置,将效劳器IP地点改成127.0.0.1,关于frps,设置文件为frps_mongodb.ini,内容以下:

[common]
server_addr = 127.0.0.1
server_port = 7000

被接见端也是本机,只不过也是在云效劳器上启动,设置文件为frpc_mongodb.ini,内容以下:

[common]
server_addr = 127.0.0.1
server_port = 7000
[mongodb]
# 指定代办范例
type = stcp
local_ip = 127.0.0.1
local_port = 27017
sk = password123

假定接见端代办效劳布置在局域网IP为192.168.0.10效劳器上,假如须要让局域网内统统机械都可以运用代办来衔接数据库,在该机械上新建设置文件frpc_mongodb_visitor.ini,内容以下:

[common]
server_addr = 90.190.80.10
server_port = 7000

[mongodb_visitor]
type = stcp
# stcp 的接见者
role = visitor
# 要接见的 stcp 代办的名字
server_name = mongodb
sk = password123
# 绑定本机局域网ip、端口,可供局域网内统统机械接见
bind_addr = 192.168.0.10
bind_port = 6000

4 总结

FRP供应了一种便利的体式格局完成内网穿透,使得等于在外网也可以运用到局域网内部的效劳,但数据诚可贵,纵然FRP中供应了stcp这类平安的代办体式格局,谁又能保证运用这类体式格局后会不会代办新的隐患,慎思之,笃行之。

  选择打赏方式
微信赞助

打赏

QQ钱包

打赏

支付宝赞助

打赏

  移步手机端
FRP代办及其在数据库平安上的实践

1、打开你手机的二维码扫描APP
2、扫描左则的二维码
3、点击扫描获得的网址
4、可以在手机端阅读此文章
未定义标签

本文来源:搜奇网

本文地址:https://www.sou7.cn/282131.html

关注我们:微信搜索“搜奇网”添加我为好友

版权声明: 本文仅代表作者个人观点,与本站无关。其原创性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容、文字的真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。请记住本站网址https://www.sou7.cn/搜奇网。

发表评论

选填

必填

必填

选填

请拖动滑块解锁
>>