FRP端口映射
1.frp概述
1.1 What
frp 是一个专注于内网穿透的高性能的反向代理应用,支持 TCP、UDP、HTTP、HTTPS 等多种协议。可以将内网服务以安全、便捷的方式通过具有公网 IP 节点的中转暴露到公网
1.2 Why
通过在具有公网 IP 的节点上部署 frp 服务端,可以轻松地将内网服务穿透到公网,同时提供诸多专业的功能特性,这包括:
- 客户端服务端通信支持 TCP、KCP 以及 Websocket 等多种协议。
- 采用 TCP 连接流式复用,在单个连接间承载更多请求,节省连接建立时间。
- 代理组间的负载均衡。
- 端口复用,多个服务通过同一个服务端端口暴露。
- 多个原生支持的客户端插件(静态文件查看,HTTP、SOCK5 代理等),便于独立使用 frp 客户端完成某些工作。
- 高度扩展性的服务端插件系统,方便结合自身需求进行功能扩展。
- 服务端和客户端 UI 页面。
FRP的带宽取决于公网IP服务器的带宽,如果开启xftp可以实现p2p点对点穿透,但是成功开通概率低需要稳定的宽度
1.3 How
frp 主要由 客户端(frpc) 和 服务端(frps) 组成,服务端server通常部署在具有公网 IP 的机器上,客户端Client通常部署在需要穿透的内网服务所在的机器上,先下载对应的版本,然后放到两端进行解压 tar -zxvf
2.使用实例
2.1 通过自定义域名访问内网的 Web 服务
- 修改服务端 frps.ini 文件
[common]
#服务器端的监听端口
bind_port = 7000
#映射端口
vhost_http_port = 8081
- 检查端口是否开放
firewall-cmd --query-port=8081/tcp #检查端口权限是否开启 宝塔面板 阿里云都要方型 监听端口和映射端口
netstat -anp #查询所有开启的端口
#如果没有放行,需要在服务器安全组和宝塔面板安全中放行使用的两个端口
- 修改客户端 frpc.ini 文件
[common]
#服务器公网ip
server_addr = 123.56.*.*
#公网服务器监听端口
server_port = 7000
[web]
#请求类型
type = http
#内网客户端映射端口
local_port = 80
#服务器解析域名,需要提前把域名解析到该公网ip
custom_domains = rjy.zlovej.top
#可以配置多组映射
[web2]
type = http
local_port = 8080
custom_domains = www.zlovej.com
- 启动服务端 ./frps -c ./frps.ini
- 启动客服端 ./frpc -c ./frpc.ini
- 先测试本地服务使用内网ip是否能正常访问,然后测试域名+端口 (rjy.zlovej.top:8081)能否正常访问
3.配置开机自启服务
使用 systemd 控制 frps frpc 及配置开机自启
- 先下载systemd
# yum
yum install systemd
# apt
apt install systemd
- 使用文本编辑器,如
vim
创建并编辑frps.service
文件。
$ vim /etc/systemd/system/frps.service
- 编辑内容
[Unit]
# 服务名称,可自定义
Description = frp server
After = network.target syslog.target
Wants = network.target
[Service]
Type = simple
# 启动frps的命令,需修改为您的frps的安装路径
ExecStart = /path/to/frps -c /path/to/frps.ini
[Install]
WantedBy = multi-user.target
- 使用
systemd
命令,管理 frps
注意容器或nginx需要映射服务是也否配置开机自启,普通权限无法运行systemctl
# 启动frp
systemctl start frps
# 停止frp
systemctl stop frps
# 重启frp
systemctl restart frps
# 查看frp状态
systemctl status frps
#配置 frps 开机自启
systemctl enable frps
评论 (0)