frp(开源的内网穿透工具)使用介绍

frp 是一个可用于内网穿透的高性能的反向代理应用。

这里涉及到两个名词:反向代理、内网穿透

反向代理

反向代理和正向代理是相对的。

我们平时用的可以访问国外网站的代理是正向代理。因为防火墙的关系,我们不能直接访问国外的网站,但是我们可以通过租借国外的服务器,从而让这个服务器来帮助我们访问国外的网站,这个服务器就称为代理服务器我们只需要向代理服务器发出请求,我们要访问的网站也只能收到来自代理服务器的通信请求,并不知道这个请求是由哪个客户端发起的。简单来说,就是正向代理服务器屏蔽了客户端

frp(开源的内网穿透工具)使用介绍_第1张图片

而反向服务器是跟正向是相对的,它屏蔽了服务器。举个知乎上的例子,我们在访问baidu.com的时候,背后有成千上万台服务器会为我们服务,我们不知道具体是哪一台。但我们能访问到的那台baidu.com的服务器。这台服务器就是一台反向的服务器。也就是反向服务器屏蔽了服务端。
frp(开源的内网穿透工具)使用介绍_第2张图片
知乎参考

内网穿透

我们平时通过移动端上网,一般是下图的模式:
frp(开源的内网穿透工具)使用介绍_第3张图片
如果两台机器想直接通信,一般来说,他们可以在同一个局域网内通信,也可以通过公网的IP地址进行互相通信。

但正如上图所示2所示,一般我们家里或者学校的移动端设备上网,都是经过路由器NAT来分配局域网地址的**,因此这种设备没有公网的IP地址**,也就不能与不在同一个局域网下的设备通信。因此,设备1在公网,不能访问处于内网的设备2。

那假设我们就是想要在这种情况下,用1去访问2呢?这就是涉及到内网穿透了。

frp(开源的内网穿透工具)使用介绍_第4张图片
如上图所示,我们可以准备一台具有公网地址的服务器3,将3和2通过一些网络协议进行端口的映射(这两台设备不是直连的,也是通过设备2访问公网的方式来访问,需要走路由器NAT等)。处于公网的设备4若想访问内网设备2,则可以访问3上面的对应端口,再通过端口映射就可以访问到设备2了。这也是frp内网穿透的原理。

B站参考

frp常用配置

由上面介绍,我们用frp进行内网穿透,则需要先准备一台具有公网IP的服务器,将其作为访问内网的代理服务器。然后根据官方的配置说明对服务器和内网的客户端进行配置。具体的安装包的下载可以参考官方文档,我觉得很详细了。
安装

下面是我觉得用frp进行内网穿透比较常用的两个场景

(都是通过配置frpc客户端,服务器端不用改):

1、ssh点到点的访问

场景:我们想让外网的设备可以ssh到内网的机器

配置(这里只需要配置客户端frpc):

//frpc.ini
[common]
server_addr = x.x.x.x  //代理服务器的公网ip
server_port = 7000     //代理服务器接受客户端请求的端口,官方默认为7000,可修改

[ssh]
type = tcp
local_ip = 127.0.0.1  //本机地址
local_port = 22    //ssh端口
remote_port = 6000   //代理服务器的转发端口,其他设备访问此端口,代理服务器会将流量转发到客户端的22端口

ssh配置参考

2、打通内网的所有机器

场景:上面只能通过ssh进行点到点的访问,若想通过frp能访问到内网的所有机器

思路:通过frp访问到某一台内网机器A后,可以让机器A也成为我们访问内网其他机器的一台代理服务器,因为机器A跟其他机器在同一个局域网,也即打通了内网的所有机器。

配置:frp提供客户端插件可以做到。这里我选择的socks5类型的代理协议。

//frpc.ini
[socks]
type = tcp
remote_port = 6000 // 代理服务器开放的端口
plugin = socks5  //插件名称
plugin_http_user = xxx
plugin_http_passwd = xxx

插件参考

你可能感兴趣的:(运维,服务器,http,nginx)