使用frp实现内网穿透,让外网可以访问内网服务
1.简介——什么是 frp?
frp 是一个专注于内网穿透的高性能的反向代理应用,支持 TCP、UDP、HTTP、HTTPS 等多种协议,且支持 P2P 通信。可以将内网服务以安全、便捷的方式通过具有公网 IP 节点的中转暴露到公网。它是由中国开发者开发的开源项目,旨在为用户提供一个简单易用的内网穿透解决方案。
通常情况下,位于内网中的服务器或设备由于路由器或防火墙的限制(或是没有公网 ip),无法直接被外部网络访问。FRP 通过设置在外网的一个中间服务器(一般称为 FRPS,即 FRP Server),可以将来自公网的请求转发到内网中的目标机器(一般称为 FRPC,即 FRP Client)上运行的服务,从而实现从外网访问内网服务的效果。
2.原理:
下面的架构图展示了 frp 的运行原理,用户通过 frps 来访问暴露到公网的不同的内网服务。
简单地说,frp 就是将一个网络中(通常是内网)的端口代理到了另一个网络(通常是公网)中,打通了两个网络,实现了两个网络间的通信。
而这一通信建立在一台能同时访问两个网络服务的主机上,这台主机上的 frps 服务就是通信的桥梁。
3.使用 FRP 进行内网穿透的一般步骤如下:
- 在具有公网 IP 的服务器上部署 FRPS。
- 在需要暴露服务的内网主机上部署 FRPC,并配置要穿透的服务信息(如本地服务地址和端口)。
- 配置 FRPS 和 FRPC 之间的通信参数,比如 token 用于身份验证。
- 启动 FRPS 和 FRPC,使它们建立连接。
- 通过 FRPS 提供的公网地址和端口访问内网服务。
4.FRP 和 Nginx 的异同:
相同点
- 代理服务:两者都可以作为代理服务器来使用。Nginx 可以用于反向代理和负载均衡,而 FRP 也可以将内部网络的服务暴露给外部网络,起到代理的作用。
不同点
- Nginx:可以代理本机或者同一内网下的其他机器的服务。它是一个高性能的 HTTP/HTTPS 反向代理和负载均衡器,同时也支持 TCP/UDP 代理。
- FRP:采用客户端-服务器(C/S)架构,FRPS(服务端)通常部署在外网,而 FRPC(客户端)则通常部署在内网。FRP 能够穿透 NAT 或防火墙,使得没有公网 IP 的服务器也能够被外界访问。
5.常见应用场景:
1.临时使用 frp 将本机服务穿透到公网,供互联网上的用户访问;
2.临时使用 frp 将一个内网的服务,暴露到另一个内网,供另一个内网的用户访问;
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 青花鱼の小栈!
评论