这是一个基于 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客户端服务卸载脚本
sudo ./install-server.sh
# 查看服务状态
systemctl status frps
# 重启服务
systemctl restart frps
# 停止服务
systemctl stop frps
# 查看服务日志
journalctl -u frps -f
服务端配置文件 frps.toml:
访问 Web 管理界面:http://127.0.0.1:7500 (默认配置)
服务启动状态:安装后服务将自动启动并设置为开机自启动
export FRP_SERVER_ADDR=your-server-ip
export FRP_SERVER_PORT=7000
export FRP_CLIENT_NAME=my-device
sudo ./install-client.sh
# 查看服务状态
systemctl status frpc
# 重启服务
systemctl restart frpc
# 停止服务
systemctl stop frpc
# 查看服务日志
journalctl -u frpc -f
默认配置说明:如果不设置环境变量,客户端将使用默认配置连接到
127.0.0.1:7000
install-service.bat 中的环境变量:set FRP_SERVER_ADDR=your-server-ip set FRP_SERVER_PORT=7000 set FRP_CLIENT_NAME=my-device
install-service.bat
# 查看服务状态 sc query FRPClient # 重启服务 sc stop FRPClient sc start FRPClient # 查看服务日志 # 日志保存在 Windows 事件查看器中
uninstall-service.bat
默认配置说明:如果不修改环境变量,客户端将使用默认配置连接到
127.0.0.1:7000技术说明:使用Windows原生
sc命令创建服务,无需第三方工具
客户端默认配置了多个常用服务的TCP代理,包括SSH、Web服务、数据库等。具体配置如下:
| 服务名称 | 本地端口 | 远程端口 | 用途说明 |
|---|---|---|---|
| SSH | 22 | 6000 | SSH远程连接 |
| Web开发 | 8080 | 6080 | 本地Web开发服务器 |
| MySQL | 3306 | 6306 | MySQL数据库访问 |
| Redis | 6379 | 6379 | Redis缓存访问 |
| PostgreSQL | 5432 | 5432 | PostgreSQL数据库访问 |
| 备用1 | 6001 | 6001 | 自定义服务备用 |
| 备用2 | 6002 | 6002 | 自定义服务备用 |
| 备用3 | 6003 | 6003 | 自定义服务备用 |
| 服务名称 | 本地端口 | 远程端口 | 用途说明 |
|---|---|---|---|
| 远程桌面 | 3389 | 3389 | Windows远程桌面连接 |
| SSH | 22 | 6000 | SSH服务(如Git Bash/WSL) |
| Web开发 | 8080 | 6080 | 本地Web开发服务器 |
| IIS网站 | 80 | 6080 | IIS默认网站 |
| SQL Server | 1433 | 61433 | SQL Server数据库 |
| MySQL | 3306 | 6306 | MySQL数据库访问 |
| 备用1 | 6001 | 6001 | 自定义服务备用 |
| 备用2 | 6002 | 6002 | 自定义服务备用 |
| 备用3 | 6003 | 6003 | 自定义服务备用 |
注意:只有本地对应端口有服务在运行时,相应的代理才会生效。
在 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
ssh server-ip -p 6000
http://server-ip:6080
journalctl -u frps 或 journalctl -u frpc# Linux检查端口占用
netstat -tlnp | grep :22
netstat -tlnp | grep :8080
# Windows检查端口占用
netstat -an | findstr :22
netstat -an | findstr :8080
# 运行服务端卸载脚本
sudo ./uninstall-server.sh
# 运行客户端卸载脚本
sudo ./linux-x86-client/uninstall-client.sh
运行 windows-x86-client/uninstall-service.bat 即可。
注意:卸载脚本只会删除系统服务,配置文件和可执行文件会保留,如需完全删除请手动删除相关目录。
本项目基于原FRP项目,遵循相应的开源许可证。