logo
0
0
WeChat Login

FRP 内网穿透工具

这是一个基于 FRP 的内网穿透解决方案,包含服务端和客户端程序,支持自动启动和服务化管理。

项目结构

.
├── frps                          # 服务端可执行文件
├── frps.toml                     # 服务端配置文件
├── frps.service                  # 服务端systemd服务文件
├── install-server.sh             # 服务端安装脚本
├── .env.example                  # 环境变量配置示例
├── linux-x86-client/             # Linux客户端目录
│   ├── frpc                      # Linux客户端可执行文件
│   ├── frpc.toml                 # Linux客户端配置文件
│   ├── frpc.service              # Linux客户端systemd服务文件
│   └── install-client.sh         # Linux客户端安装脚本
└── windows-x86-client/           # Windows客户端目录
    ├── frpc.exe                  # Windows客户端可执行文件
    ├── frpc.toml                 # Windows客户端配置文件
    ├── install-service.bat       # Windows客户端服务安装脚本
    └── uninstall-service.bat     # Windows客户端服务卸载脚本

服务端部署

1. 在 CloudStudio 部署服务端

  1. 将项目文件上传到 CloudStudio
  2. 运行安装脚本:
sudo ./install-server.sh
  1. 服务状态管理:
# 查看服务状态
systemctl status frps

# 重启服务
systemctl restart frps

# 停止服务
systemctl stop frps

# 查看服务日志
journalctl -u frps -f

2. 服务端配置

服务端配置文件 frps.toml

  • 端口 7000: 客户端连接端口
  • 端口 7500: Web管理界面端口
  • 默认账号: admin/admin

访问 Web 管理界面:http://127.0.0.1:7500 (默认配置)

服务启动状态:安装后服务将自动启动并设置为开机自启动

客户端部署

Linux 客户端

  1. 设置环境变量(可选,不设置将使用默认配置):
export FRP_SERVER_ADDR=your-server-ip
export FRP_SERVER_PORT=7000
export FRP_CLIENT_NAME=my-device
  1. 运行安装脚本:
sudo ./install-client.sh
  1. 服务管理:
# 查看服务状态
systemctl status frpc

# 重启服务
systemctl restart frpc

# 停止服务
systemctl stop frpc

# 查看服务日志
journalctl -u frpc -f

默认配置说明:如果不设置环境变量,客户端将使用默认配置连接到 127.0.0.1:7000

Windows 客户端

  1. 修改 install-service.bat 中的环境变量:
set FRP_SERVER_ADDR=your-server-ip
set FRP_SERVER_PORT=7000
set FRP_CLIENT_NAME=my-device
  1. 以管理员身份运行安装脚本:
install-service.bat
  1. 服务管理:
# 查看服务状态
sc query FRPClient

# 重启服务
sc stop FRPClient
sc start FRPClient

# 查看服务日志
# 日志保存在 Windows 事件查看器中
  1. 卸载服务:
uninstall-service.bat

默认配置说明:如果不修改环境变量,客户端将使用默认配置连接到 127.0.0.1:7000

技术说明:使用Windows原生sc命令创建服务,无需第三方工具

配置说明

客户端代理配置

客户端默认配置了多个常用服务的TCP代理,包括SSH、Web服务、数据库等。具体配置如下:

Linux 客户端默认代理服务

服务名称本地端口远程端口用途说明
SSH226000SSH远程连接
Web开发80806080本地Web开发服务器
MySQL33066306MySQL数据库访问
Redis63796379Redis缓存访问
PostgreSQL54325432PostgreSQL数据库访问
备用160016001自定义服务备用
备用260026002自定义服务备用
备用360036003自定义服务备用

Windows 客户端默认代理服务

服务名称本地端口远程端口用途说明
远程桌面33893389Windows远程桌面连接
SSH226000SSH服务(如Git Bash/WSL)
Web开发80806080本地Web开发服务器
IIS网站806080IIS默认网站
SQL Server143361433SQL Server数据库
MySQL33066306MySQL数据库访问
备用160016001自定义服务备用
备用260026002自定义服务备用
备用360036003自定义服务备用

注意:只有本地对应端口有服务在运行时,相应的代理才会生效。

添加更多代理

frpc.toml 中添加新的代理配置:

# HTTP代理
[[proxies]]
name = "web"
type = "http"
localIP = "127.0.0.1"
localPort = 80
customDomains = ["your-domain.com"]

# HTTPS代理
[[proxies]]
name = "web-secure"
type = "https"
localIP = "127.0.0.1"
localPort = 443
customDomains = ["your-domain.com"]

# TCP代理
[[proxies]]
name = "database"
type = "tcp"
localIP = "127.0.0.1"
localPort = 3306
remotePort = 3306

环境变量配置

客户端支持通过环境变量灵活配置服务器地址:

环境变量说明默认值
FRP_SERVER_ADDR服务器IP地址127.0.0.1
FRP_SERVER_PORT服务器端口7000
FRP_CLIENT_NAME客户端标识名称default-client

配置说明:默认配置适用于在同一台机器上测试,实际部署时需要将 FRP_SERVER_ADDR 修改为实际的服务器IP地址。

使用方法

Linux:

# 方法1:导出环境变量
export FRP_SERVER_ADDR=127.0.0.1
export FRP_SERVER_PORT=7000
sudo ./install-client.sh

# 方法2:在运行时指定
sudo FRP_SERVER_ADDR=127.0.0.1 FRP_SERVER_PORT=7000 ./install-client.sh

Windows: 修改 install-service.bat 中的环境变量设置,例如:

set FRP_SERVER_ADDR=127.0.0.1
set FRP_SERVER_PORT=7000

使用场景

Linux 客户端

  1. 远程SSH访问:通过远程端口6000连接SSH服务
    ssh server-ip -p 6000
    
  2. Web开发调试:通过远程端口6080访问本地8080端口的Web应用
    http://server-ip:6080
    
  3. 数据库访问:远程访问MySQL、Redis、PostgreSQL等数据库服务
  4. 自定义服务:使用备用端口6001-6003部署自定义服务

Windows 客户端

  1. 远程桌面连接:通过远程端口3389访问Windows桌面
  2. Web开发调试:通过远程端口6080访问本地IIS或开发服务器
  3. 数据库管理:远程访问SQL Server、MySQL等数据库
  4. SSH访问:通过远程端口6000访问WSL或Git Bash的SSH服务

通用场景

  1. 开发环境共享:将本地开发环境暴露给团队成员或客户
  2. 家庭网络访问:从外部访问家庭网络中的设备和服务
  3. 测试环境部署:临时暴露测试服务供外部测试
  4. 备份服务同步:通过备用端口配置备份和数据同步服务

安全注意事项

  1. 修改Web管理界面的默认用户名和密码
  2. 合理配置防火墙规则,只开放必要的端口
  3. 使用域名和HTTPS保护敏感数据传输
  4. 定期更新FRP到最新版本

故障排除

服务无法启动

  1. 检查配置文件语法是否正确
  2. 确认端口未被占用
  3. 查看服务日志:journalctl -u frpsjournalctl -u frpc

客户端连接失败

  1. 确认服务器地址和端口配置正确
  2. 检查网络连通性和防火墙设置
  3. 验证服务端是否正常运行

代理不生效

  1. 检查本地服务状态:确认对应本地端口有服务在运行
    # Linux检查端口占用
    netstat -tlnp | grep :22
    netstat -tlnp | grep :8080
    
    # Windows检查端口占用
    netstat -an | findstr :22
    netstat -an | findstr :8080
    
  2. 确认端口映射配置:检查frpc.toml中的localIP和localPort是否正确
  3. 查看服务端状态:访问Web管理界面 http://127.0.0.1:7500 检查连接和代理状态
  4. 检查防火墙设置:确保本地防火墙允许对应端口的连接

卸载说明

服务端

# 运行服务端卸载脚本
sudo ./uninstall-server.sh

Linux 客户端

# 运行客户端卸载脚本
sudo ./linux-x86-client/uninstall-client.sh

Windows 客户端

运行 windows-x86-client/uninstall-service.bat 即可。

注意:卸载脚本只会删除系统服务,配置文件和可执行文件会保留,如需完全删除请手动删除相关目录。

许可证

本项目基于原FRP项目,遵循相应的开源许可证。

About

FRP 内网穿透工具

19.97 MiB
0 forks0 stars1 branches1 TagREADMEApache-2.0 license
Language
Shell62.1%
Others37.9%