内网穿透神器-frp的概念,搭建和使用,方便访问内网服务

FRP概念

FRP是什么(借助官网的描述)?

frp 是一个专注于内网穿透的高性能的反向代理应用,支持 TCP、UDP、HTTP、HTTPS 等多种协议,且支持 P2P 通信。可以将内网服务以安全、便捷的方式通过具有公网 IP 节点的中转暴露到公网。

为什么是用FRP(借助官网的描述)?

通过在具有公网 IP 的节点上部署 frp 服务端,可以轻松地将内网服务穿透到公网,同时提供诸多专业的功能特性,这包括:

  • 客户端服务端通信支持 TCP、QUIC、KCP 以及 Websocket 等多种协议。
  • 采用 TCP连接流式复用,在单个连接间承载更多请求,节省连接建立时间,降低请求延迟。
  • 代理组间的负载均衡。
  • 端口复用,多个服务通过同一个服务端端口暴露。
  • 支持 P2P 通信,流量不经过服务器中转,充分利用带宽资源。
  • 多个原生支持的客户端插件(静态文件查看,HTTPS/HTTP 协议转换,HTTP、SOCK5 代理等),便于独立使用 frp客户端完成某些工作。
  • 高度扩展性的服务端插件系统,易于结合自身需求进行功能扩展。
  • 服务端和客户端 UI 页面。

原理

frp 主要由 客户端(frpc) 和 服务端(frps) 组成,服务端通常部署在具有公网 IP 的机器上,客户端通常部署在需要穿透的内网服务所在的机器上。
内网服务由于没有公网 IP,不能被非局域网内的其他用户访问。
用户通过访问服务端的 frps,由 frp 负责根据请求的端口或其他信息将请求路由到对应的内网机器,从而实现通信。
代理 内网穿透神器-frp的概念,搭建和使用,方便访问内网服务_第1张图片

FRP的安装

下载

访问:https://github.com/fatedier/frp/releases
内网穿透神器-frp的概念,搭建和使用,方便访问内网服务_第2张图片也可以通过如下命令来看:

[root@VM-0-15-centos ~]# arch
x86_64

下载之后上传至公网服务器:
内网穿透神器-frp的概念,搭建和使用,方便访问内网服务_第3张图片
解压:

tar -zxf frp_0.51.3_linux_amd64.tar.gz

内网穿透神器-frp的概念,搭建和使用,方便访问内网服务_第4张图片

frpc:客户端可执行程序
frpc_full.ini:客户端所有配置项(可以在此文件查看frp的所有的配置项)
frpc.ini:客户端配置项
frps:服务端可执行程序
frps_full.ini:服务端所有配置项(可以在此文件查看frp的所有的配置项)
frps.ini:服务端配置项

配置并启动服务端

编辑配置文件:frps.ini

[common]
# frp监听的端口,默认是7000,可以改成其他的
bind_port = 7000
# 授权码,请改成更复杂的,这个token之后在客户端会用到
token = e10adc3949ba59abbe56e057f20f883e
# 开启HTTP
#vhost_http_port = 8088
# 去除TCP速度限制
tcp_mux = false

# frp管理后台端口,请按自己需求更改
dashboard_port = 7500
# frp管理后台用户名和密码,请改成自己的
dashboard_user = admin
dashboard_pwd = admin123456
enable_prometheus = true

# frp日志配置
log_file = /home/frp/frp/frps.log
log_level = info
log_max_days = 3

然后启动服务端:

./frps -c frps.ini  # 启动服务端
 nohup ./frps -c frps.ini & # 后台启动

切记一定将云服务器防火墙对应的端口打开。

然后访问FRP后台:http://云服务器IP:管理后台端口
内网穿透神器-frp的概念,搭建和使用,方便访问内网服务_第5张图片

配置客户端

一样的方式,下载对应系统版本的客户端。这个地方以ubuntu的ssh服务为例演示。
然后解压:
内网穿透神器-frp的概念,搭建和使用,方便访问内网服务_第6张图片
编辑frpc.ini

[common]
server_addr = 47.xxx.xxx.xxx  # 服务端所在的公网ip地址
server_port = 7000  # 服务端默认端口号,与服务端配置文件保持一致
token = e10adc3949ba59abbe56e057f20f883e
# 去掉速度限制
tcp_mux = false

[ssh]
type = tcp # 注意:这个地方一律填写tcp
local_ip = 192.168.1.211  # 所在内网服务器的ip地址
local_port = 22 # 本地访问端口号
remote_port = 8088 # 映射到云服务器的端口号
use_compression = true
use_encryption = true

[rdp]
type = tcp # 注意:这个地方一律填写tcp
local_ip = 192.168.1.211  # rdp所在内网服务器的ip地址
local_port = 3389 # 本地访问端口号
remote_port = 8081 # 映射到云服务器的端口号

然后启动客户端:

./frpc -c frpc.ini # 启动客户端
nohup ./frpc -c frpc.ini & # 后台启动客户端

然后观察frp后台:
内网穿透神器-frp的概念,搭建和使用,方便访问内网服务_第7张图片
直接:ssh 用户名@云服务器ip -p 映射的端口
即可访问内网的SSH服务。

注意配置/etc/ssh/sshd_config
将PermitRootLogin 改为yes
去掉PasswordAuthentication yes前的#

你可能感兴趣的:(网络安全,linux,web安全,安全,服务器,运维)