前言
FRP(Fast Reverse Proxy) 是一个开源的反向代理工具,主要用于内网穿透和远程访问。它可以通过映射网络服务(如 HTTP、TCP、UDP 等)到公网,实现内网服务的外网访问,特别适合在无公网 IP 或有防火墙限制的场景下使用。
下载地址:https://github.com/fatedier/frp/releases
详细使用文档:https://gofrp.org/zh-cn/docs/overview/
核心功能
- 内网穿透
- 反向代理
- 自定义域名
- 跨网络访问
- 安全性
- 多种高级功能
将内网中的服务暴露到外网,支持 HTTP、HTTPS、TCP、UDP 等协议。
可以通过 FRP 的服务端和客户端实现复杂的反向代理需求。
支持通过自定义子域名暴露 HTTP 和 HTTPS 服务,结合 DNS 配置可轻松实现访问。
支持从公网访问位于不同网络中的设备或服务。
提供 Token 验证、TLS 加密等多种安全措施,确保数据传输的安全性。
包括流量统计、负载均衡、在线热更新等。
一、环境准备
说明一下frp 分为: 1、frps 服务端(外网使用);2、frpc 客户端(内网使用)
模拟环境:家用服务器没有公网 ip
云服务器有公网 ip
两服务器系统环境均为:Ubuntu 24.04
frp服务包: (两个环境版本一致)
二、安装包准备
蓝奏云,密码:2t25
天翼云盘,(访问码:kn18)
123云盘提取码:R14f
三、外网服务器部署 frps
1、上传压缩包到任意目录然后解压,示例 /usr/local/ 目录
# 解压到当前目录 unzip frps.zip # 移动并改名 mv frps /usr/local/frps # 创建 frp 用户 useradd -r -s /usr/sbin/nologin -M frp # 授权文件夹 chown -R frp:frp /usr/local/frp
2、备份并修改 frps 配置文件 frps.toml (直接执行命令,不用手动编辑)
# 备份配置文件 cp /usr/local/frp/frps.toml /usr/local/frp/frps.tomlbak
# 直接执行覆盖原来的配置 /usr/local/frp/frps.toml > [common] # 服务端绑定的端口,用于客户端与服务端通信的核心端口。需要确保该端口对外网开放。 bind_port = 7000 # HTTP 代理的虚拟主机端口。用于通过域名访问客户端的 HTTP 服务,需配置 DNS。 vhost_http_port = 80 # HTTPS 代理的虚拟主机端口。用于通过域名访问客户端的 HTTPS 服务,需配置 DNS。 vhost_https_port = 443 # 密钥,是自定义的,想怎么填写就怎么填写,但客户端和服务端必须保持一致,确保安全通信。 token = "Frp20241129" # 仪表板端口,用于查看 frps 服务端的运行状态和管理客户端连接。访问地址:服务器IP:7500 dashboard_port = 7500
3、加入系统服务并开机自启动
# 加入系统服务 /etc/systemd/system/frps.service [Unit] Description = frp server After = network.target syslog.target Wants = network.target [Service] Type = simple ExecStart = /etc/frpc/frps -c /etc/frpc/frps.toml [Install] WantedBy = multi-user.target # 重载配置使其生效 systemctl daemon-reload # 启动 frps 服务 systemctl start frps.service # 设置开机自启 systemctl enable frps.service
四、内网服务器部署 frpc
1、上传压缩包到任意目录然后解压,示例 /usr/local/ 目录
# 解压到当前目录 unzip frpc.gz # 移动并改名 mv frpc /usr/local/frpc # 创建 frp 用户 useradd -r -s /usr/sbin/nologin -M frp # 授权文件夹 chown -R frp:frp /usr/local/frp
2、备份并修改 frpc 配置文件 frpc.toml (直接执行命令,不用手动编辑)
cp /usr/local/frp/frpc.toml /usr/local/frp/frpc.tomlbak
# 直接执行覆盖原来的配置 /usr/local/frp/frpc.toml > [common] server_addr = "此处引号内填写外网服务器的公网IP" # 服务端口 server_port = 7000 # 密钥,需要和 frps 配置一致 token = "Frp20241129" # 配置每个内网服务 # 服务名称,随便写,自己能看懂就行 [ssh_test] type = "tcp" local_ip = "127.0.0.1" # 家用服务器上暴露的端口 local_port = 22 # 外网服务器上暴露的端口,ssh时候,使用外网 IP 和这个端口可以远程访问家里的服务器 remote_port = 2299 # 服务名称,随便写,自己能看懂就行 [web_server] type = "http" local_ip = "127.0.0.1" # 家用服务器上暴露的端口 local_port = 80 # 外网服务器上暴露的端口,使用外网 IP 和这个端口可以远程访问家里web服务,这个配置和域名 #remote_port = 6001 # 用于 HTTP 和 HTTPS 域名的代理。填写自己的域名,没有就注释这个配置,启用 remote_port 配置 custom_domains = "www.adbc.cn" #remote_port 和 custom_domains 配置冲突,只能使用一个
3、加入系统服务并开机自启动
# 加入系统服务 /etc/systemd/system/frpc.service [Unit] Description = frp server After = network.target syslog.target Wants = network.target [Service] Type = simple ExecStart = /etc/frpc/frps -c /etc/frpc/frps.toml [Install] WantedBy = multi-user.target # 重载配置使其生效 systemctl daemon-reload # 启动 frps 服务 systemctl start frpc.service # 设置开机自启 systemctl enable frpc.service