FRP 内网穿透工具部署教程

一、FRP 简介

FRP (Fast Reverse Proxy) 是一个高性能的反向代理应用,可以帮助您轻松地进行内网穿透,对外网提供服务。它支持 TCP、UDP、HTTP、HTTPS 等协议类型。

二、环境准备

服务端(公网服务器)

  • 公网 IP 地址:xxx
  • 操作系统:Linux
  • 开放端口:7000, 80, 443, 7500

客户端(内网服务器)

  • 操作系统:Linux
  • 需要 需要穿透的服务:SSH(22端口)

三、服务端部署步骤

1. 下载并安装 FRP

bash 复制代码
# 创建安装目录
mkdir -p /data/env/frp
cd /data/env/frp

# 下载 FRP(请根据实际架构下载对应版本)
wget https://github.com/fatedier/frp/releases/download/v0.52.3/frp_0.52.3_linux_amd64.tar.gz

# 解压
tar -zxvf frp_0.52.3_linux_linux_amd64.tar.gz
cd frp_0.52.3_linux_linux_amd64

# 移动文件到安装目录
mv * /data/env/frp/

2. 创建服务端配置文件

编辑 /data/env/frp/frps.toml

toml 复制代码
[common]
# 绑定端口,客户端连接的端口
bind_port = 7000

# HTTP 虚拟主机端口
vhost_http_port = 80

# HTTPS 虚拟主机端口
vhost_https_port = 443

# 认证令牌,客户端连接时需要提供相同的 token
token = "dasdsadsadsdsa.."

# 仪表板端口,用于查看 FRP 状态
dashboard_port = 7500

# 可选:设置仪表板用户名密码
# dashboard_user = "admin"
# dashboard_pwd = "admin123"

3. 创建系统服务

创建 /etc/systemd/system/frps.service

ini 复制代码
[Unit]
Description=FRP Server Service
After=network.target

[Service]
# FRP 程序所在的完整路径
ExecStart=/data/env/frp/frps -c /data/env/frp/frps.toml
# 重启重启策略,非正常退出时自动重启
Restart=always
RestartSec=10s

[Install]
WantedBy=multi-user.target

4. 启动并设置开机自启

bash 复制代码
# 重新加载 systemd
systemctl daemon-reload

# 启动 FRP 服务端
systemctl start frps

# 设置开机自启
systemctl enable frps

# 检查服务状态
systemctl status frps

5. 防火墙配置

bash 复制代码
# 开放必要端口
firewall-cmd --permanent --add-port=7000/tcp
firewall-cmd --permanent --add-port=80/tcp
firewall-cmd --permanent --add-port=443/tcp
firewall-cmd --permanent --add-port=7500/tcp
firewall-cmd --reload

四、客户端部署步骤

1. 下载并安装 FRP

与服务端相同的方式下载 FRP。

2. 创建客户端配置文件

编辑 /data/env/frp/frpc.toml

toml 复制代码
[common]
# 服务端地址
server_addr = "xxx"
# 服务端端口
server_port = 7000
# 认证令牌,必须与服务端一致
token = "dasdsadsadsdsa.."

# SSH 服务配置
[ssh]
type = "tcp"
local_ip = "127.0.0.1"
# 本地 SSH 端口
local_port = 22
# 远程映射端口,通过此端口访问内网 SSH
remote_port = 2299

# Web 服务示例(可选,已注释)
# [web_server]
# type = "http"
# local_ip = "127.0.0.1"
# local_port = 80
# remote_port = 6001
# custom_domains = "www.yourdomain.com"

3. 创建系统服务

创建 /etc/systemd/system/frpc.service

ini 复制代码
[Unit]
Description=FRP Client Service
After=network.target

[Service]
# FRP 程序所在的完整路径
ExecStart=/data/env/frp/frpc -c /data/env/frp/frpc.toml
# 重启策略,非正常退出时自动重启
Restart=always
RestartSec=10s

[Install]
WantedBy=multi-user.target

4. 启动并设置开机自启

bash 复制代码
# 重新加载 systemd
systemctl daemon-reload

# 启动 FRP 客户端
systemctl start frpc

# 设置开机自启
systemctl enable frpc

# 检查服务状态
systemctl status frpc

五、验证连接

1. 检查服务状态

服务端:

bash 复制代码
systemctl status frps
netstat -tlnp | grep frps

客户端:

bash 复制代码
systemctl status frpc
netstat -tlnp | grep frpc

2. 测试 SSH 连接

现在可以通过以下方式连接到内网服务器的 SSH:

bash 复制代码
ssh username@xx -p 2299

3. 访问 Dashboard

在浏览器中访问 http://xx:7500 查看 FRP 状态面板。

六、常用命令

服务管理

bash 复制代码
# 启动服务
systemctl start frps# 服务端
systemctl start frpc# 客户端

# 停止服务
systemctl stop frps# 服务端
systemctl stop frpc# 客户端

# 重启服务
systemctl restart frps# 服务端
systemctl restart frpc# 客户端

# 查看服务状态
systemctl status frps# 服务端
systemctl status frpc# 客户端

# 查看日志
journalctl -u frps -f# 服务端
journalctl -u frpc -f# 客户端

七、安全建议

  1. 修改默认 Token:使用更复杂的 token 替换默认值
  2. 防火墙限制:只开放必要的端口
  3. 定期更新:保持 FRP 版本最新
  4. 监控日志:定期检查服务日志
  5. 使用非特权用户:在生产环境中建议使用非 root 用户运行

八、故障排除

  1. 连接失败
  • 检查服务端和客户端的 token 是否一致
  • 确认防火墙设置是否正确
  • 验证网络连通性
  1. 服务无法启动
  • 检查配置文件语法
  • 确认文件权限
  • 查看详细错误日志
  1. 端口被占用
  • 修改为其他可用端口
  • 杀死占用端口的进程

通过以上步骤,您应该能够成功部署和使用 FRP 进行内网穿透了。

相关推荐
LCMICRO-133108477466 小时前
长芯微LD9689完全P2P替代AD9689,是一款双通道、14位、2.0 GSPS/2.6 GSPS模数转换器(ADC)
网络·单片机·嵌入式硬件·网络协议·fpga开发·硬件工程·高速adc
左左右右左右摇晃13 小时前
计算机网络笔记整理
笔记·计算机网络
腾阳13 小时前
99%的人忽视了这一点:活着本身就是人生的意义,别让抑郁和内耗成为你的枷锁!
经验分享·程序人生·职场和发展·跳槽·学习方法·媒体
不吃西红柿的8513 小时前
[职场] 内容运营求职简历范文 #笔记#职场发展
笔记·职场和发展·内容运营
似水明俊德14 小时前
02-C#.Net-反射-学习笔记
开发语言·笔记·学习·c#·.net
05大叔14 小时前
网络基础知识 域名,JSON格式,AI基础
运维·服务器·网络
智者知已应修善业14 小时前
【51单片机独立按键控制数码管移动反向,2片74CH573/74CH273段和位,按键按下保持原状态】2023-3-25
经验分享·笔记·单片机·嵌入式硬件·算法·51单片机
我想走路带风14 小时前
c++工具转向网络底层工具
网络
dashizhi201514 小时前
服务器共享禁止保存到本地磁盘、共享文件禁止另存为本地磁盘、移动硬盘等
运维·网络·stm32·安全·电脑
皙然14 小时前
深入理解TCP流量控制
网络·网络协议·tcp/ip