bore自托管教程:10分钟搭建专属内网穿透服务器
bore自托管教程:10分钟搭建专属内网穿透服务器
【免费下载链接】bore 🕳 bore is a simple CLI tool for making tunnels to localhost 项目地址: https://gitcode.com/gh_mirrors/bo/bore
你还在为测试环境暴露公网而烦恼?还在为ngrok付费限制发愁?本文将带你用10分钟搭建专属内网穿透服务,零成本解决本地服务公网访问难题。读完你将掌握:服务器部署、客户端配置、安全防护全流程,让你的本地应用轻松上公网。
为什么选择bore自托管?
bore是一款用Rust编写的轻量级TCP隧道工具,仅400行安全代码却能实现高效内网穿透。相比同类工具,它具有三大优势:
- 极致简单:单二进制文件部署,无依赖,服务器启动仅需
bore server命令 - 资源占用低:异步I/O模型,内存占用<5MB,适合低配服务器
- 安全可控:支持密钥认证,端口白名单,杜绝未授权访问
项目核心代码结构清晰,主要模块包括:
- 服务器实现:src/server.rs
- 客户端逻辑:src/client.rs
- 认证模块:src/auth.rs
准备工作
环境要求
- 一台具有公网IP的服务器(推荐2核2G以上配置)
- 开放两个端口:控制端口7835和隧道端口范围(如10000-20000)
- 本地机器安装Rust环境或预编译二进制
安装方式
源码安装(推荐)
# 克隆仓库
git clone https://gitcode.com/gh_mirrors/bo/bore
cd bore
# 编译项目
cargo build --release
# 可执行文件位置
ls target/release/bore
预编译安装
从项目GitHub Releases下载对应平台二进制,或使用包管理器:
# macOS
brew install bore-cli
# Arch Linux
yay -S bore
服务器部署
基础启动
# 最简启动(默认监听0.0.0.0:7835,端口范围1024-65535)
bore server
# 指定端口范围和绑定地址
bore server --min-port 10000 --max-port 20000 --bind-addr 0.0.0.0
服务器启动后会监听控制端口7835,用于接收客户端连接请求。核心配置在src/server.rs中定义,主要参数包括:
pub struct Server {
/// 可转发的TCP端口范围
port_range: RangeInclusive,
/// 认证器(可选)
auth: Option,
/// 连接映射表
conns: Arc>,
/// 绑定地址
bind_addr: IpAddr,
/// 隧道绑定地址
bind_tunnels: IpAddr,
}
安全加固
密钥认证
为防止服务器被未授权使用,启用密钥认证:
# 服务器端(使用环境变量更安全)
export BORE_SECRET="your_strong_secret_here"
bore server --secret $BORE_SECRET
# 客户端连接
bore local 8080 --to your_server_ip --secret your_strong_secret_here
认证逻辑在src/auth.rs中实现,采用HMAC挑战-响应机制,确保密钥不会在网络中明文传输。
防火墙配置
只开放必要端口(以UFW为例):
# 开放控制端口和隧道端口范围
ufw allow 7835/tcp
ufw allow 10000:20000/tcp
ufw reload
后台运行
使用systemd创建服务:
# /etc/systemd/system/bore.service
[Unit]
Description=bore tunnel server
After=network.target
[Service]
User=nobody
Environment="BORE_SECRET=your_secret"
ExecStart=/usr/local/bin/bore server --min-port 10000 --max-port 20000
Restart=always
RestartSec=5
[Install]
WantedBy=multi-user.target
启用并启动服务:
sudo systemctl enable bore
sudo systemctl start bore
客户端使用
基本用法
# 转发本地8080端口到服务器随机端口
bore local 8080 --to your_server_ip --secret your_secret
# 指定远程端口(需服务器端允许)
bore local 8080 --to your_server_ip --port 12345 --secret your_secret
客户端完整参数可通过bore local --help查看,主要参数包括:
Options:
-l, --local-host 本地主机地址 [默认: localhost]
-t, --to 远程服务器地址 [必填]
-p, --port 远程端口号 [默认: 随机]
-s, --secret 认证密钥 [环境变量: BORE_SECRET]
高级场景
多端口转发
打开多个终端,分别执行:
# 转发8080端口
bore local 8080 --to your_server_ip --secret your_secret
# 同时转发3000端口
bore local 3000 --to your_server_ip --secret your_secret
转发局域网服务
将局域网内其他设备的服务暴露出去:
# 转发局域网内192.168.1.100的80端口
bore local 80 --local-host 192.168.1.100 --to your_server_ip --secret your_secret
工作原理
bore采用极简设计,核心流程如下:
- 客户端通过7835控制端口与服务器建立连接
- 服务器分配端口并监听
- 当外部用户访问该端口时,服务器生成UUID并通知客户端
- 客户端发送Accept消息确认,建立数据转发通道
- 所有数据通过双向通道透明传输
服务器连接管理在src/server.rs实现,采用UUID标识每个连接,并设置10秒超时清理机制防止内存泄漏。
故障排查
连接失败
- 检查服务器状态:
sudo systemctl status bore
journalctl -u bore -f
- 验证端口可达性:
# 检查控制端口
telnet your_server_ip 7835
# 检查防火墙规则
sudo ufw status
- 查看认证日志: 服务器端日志会显示认证失败信息,常见原因:密钥不匹配、环境变量未设置。
传输速度慢
- 检查服务器资源:
top # 查看CPU和内存占用
iftop # 检查网络带宽
- 尝试指定端口范围: 服务器随机分配端口可能落在网络质量较差的端口段,尝试指定固定端口:
bore local 8080 --to your_server_ip --port 15000 --secret your_secret
总结与最佳实践
通过本文,你已掌握bore自托管服务器的搭建与使用。总结最佳实践:
- 安全第一:始终使用
--secret启用认证,定期更换密钥 - 端口管理:限制端口范围(如10000-20000),便于防火墙管理
- 监控日志:定期检查服务器日志,及时发现异常连接
- 备份配置:将服务器配置和systemd服务文件备份,便于迁移
bore作为轻量级工具,虽不提供ngrok那样的HTTP路由和HTTPS支持,但胜在简单、透明、资源占用低,非常适合开发测试和轻量级生产环境使用。
如需扩展功能,可查看项目源码进行二次开发,主要模块参考:
- 服务器逻辑:src/server.rs
- 客户端逻辑:src/client.rs
- 共享协议:src/shared.rs
最后,欢迎在项目GitHub仓库提交issues和PR,共同完善这个优秀的开源工具!
如果你觉得本教程有用,别忘了点赞收藏,关注作者获取更多实用教程。下期将介绍如何为bore添加HTTPS支持,敬请期待!
【免费下载链接】bore 🕳 bore is a simple CLI tool for making tunnels to localhost 项目地址: https://gitcode.com/gh_mirrors/bo/bore







