frp 内网穿透
frp 是一个专注于内网穿透的高性能的反向代理应用
Beijing, China: ☀️ 🌡️+28°C 🌬️↙11km/h
写在前面
🚀应用场景: 最近使用校园网搭建应用服务,但是其他人无法通过公网访问,因此需要将局域网的服务通过 frp 转发到公网端口 🌐,构建公共服务应用,这里我用的是阿里云的轻量应用服务器。
💡简介: frp1 是一个专注于内网穿透的高性能的反向代理应用,支持 TCP、UDP、HTTP、HTTPS 等多种协议,且支持 P2P 通信。🎃 可以将内网服务以安全、便捷的方式通过具有公网 IP 节点的中转暴露到公网。通过在具有公网 IP 的节点上部署 frp 服务端,可以轻松地将内网服务穿透到公网,同时提供诸多专业的功能特性。
🔍 基本原理: frp 主要由两个组件组成:客户端(frpc) 和 服务端(frps)。通常情况下,服务端部署在具有公网 IP 地址的机器上,而客户端部署在需要穿透的内网服务所在的机器上。🔄 由于内网服务缺乏公网 IP 地址,因此无法直接被非局域网内的用户访问。用户通过访问服务端的 frps,frp 负责根据请求的端口或其他信息将请求路由到相应的内网机器,从而实现通信。
服务端配置
服务端安装
# 从GitHub下载frp源文件
wget https://github.com/fatedier/frp/releases/download/v0.60.0/frp_0.60.0_linux_amd64.tar.gz
# 解压
tar -zxvf frp_0.60.0_linux_amd64.tar.gz
# 进入解压文件夹
cd frp_0.60.0_linux_amd64
编辑frps.toml
文件vim frps.toml
:
[common]
# frp 监听端口,默认7000,可改为其它
bind_port = 7000
# 授权令牌,请改为更复杂的代码,客户端稍后将使用此令牌
token = "123456"
# frp 管理仪表板端口,根据需要更改
dashboard_port = 7500
# frp 管理仪表板用户名,密码
dashboard_user = "admin"
dashboard_pwd = "password"
# Prometheus服务能自动发现并监控节点或者更新节点,动态的进行数据采集和处理
enable_prometheus = true
# frp 日志配置
log_file = "/var/log/frps.log"
log_level = "info"
log_max_days = 6
服务端启用
在 Linux 系统下,使用 systemd
可以方便地控制 frps 服务端的启动、停止、配置后台运行以及开机自启动。建议安装:
- 安装 systemd
# 使用 yum 安装 systemd(CentOS/RHEL)
yum install systemd
# 使用 apt 安装 systemd(Debian/Ubuntu)
apt install systemd
- 创建 frps.service 文件(用于配置 frps 服务)
sudo 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.toml
[Install]
WantedBy = multi-user.target
- 使用 systemd 命令管理 frps 服务
# 启动frp
sudo systemctl start frps
# 停止frp
sudo systemctl stop frps
# 重启frp
sudo systemctl restart frps
# 查看frp状态
sudo systemctl status frps
# 设置开机自启动
sudo systemctl enable frps
验证服务端是否启动
- 运行
systemctl status frps
,服务端开启后状态如下: 注意:这里需在阿里云控制台防火墙开启端口 7000 和 7500,及客户端端口 - 访问:http://服务器 IP:后台管理端口”,输入用户名和密码可以查看连接状态
如:http://68.240.124.4:7500/
,用户名和密码分别对应 frps.toml 文件中的admin
和password
,登录之后界面如下:
客户端配置 (Windows)
客户端安转
Windows 平台直接下载Release v0.60.0
即可,解压后编辑frpc.toml
文件:
[common]
server_addr = "68.240.124.4"
server_port = 7000 # 服务器映射端口
authentication_method = "token"
token = "123456"
[llama-chat]
type = "tcp"
local_ip = "127.0.0.1"
local_port = 5000 # 本地服务端口
remote_port = 20002 # 公网映射转发端口
客户端开启
- 进入控制面板,需要出站、入站规则中设置开启对应的
5000
端口: - 运行
frpc -c frpc.toml
开启 frp 服务,访问http://68.240.124.4:20002
即可进入应用页面:
补充说明
- 关于 SSH 服务: 有时候需要运行
sudo net start sshd
开启 SSH 服务,但我本地测试发现即使不运行该命令,frp 服务也能正常启用; - 本地关联服务: 对于像数据库这样的本地服务(例如 MySQL,本地直接运行
sudo net start mysql
即可),一旦主服务已经通过 frp 关联,就不需要再单独开启 frp 了。
参考文献
💬 评论