免费内网穿透哪家强?没公网 IP 靠 DevBridge,自家小主机自建 Vaultwarden 密码管理器,真香
自建密码管理器,最难的一步往往不是部署,而是"出门怎么连回家"。
Vaultwarden 本身很轻,一台旧笔记本、一个 NAS 就能跑。可家宽大多没有公网 IP,传统做法要么买台云服务器做 frp 中转,要么折腾 DDNS 加端口映射,还得自己弄证书——Bitwarden 网页端依赖浏览器的 WebCrypto,必须跑在 HTTPS 下,没证书连网页都打不开。
华为云开发者空间里的 DevBridge 开发隧道,正好把这几件事一次解决了。
DevBridge 解决了什么
DevBridge 的思路是"反向托管":本地机器主动连出去,网关把公网请求转回来,所以本地不需要开任何入站端口。托管成功后会拿到一个这样的地址:
https://<tunnelId>-<port>.devbridge-s2.hwtunnel.com
有三点我觉得特别适合密码库这种场景:
- 自带 HTTPS 子域名。证书由网关负责,Vaultwarden 只管在本地跑 HTTP,WebCrypto 的要求天然满足,不用自己申请和续期证书。
- 免费额度够用。每月 50GB 流量、5M 带宽,网关在广州,国内访问延迟友好。这个额度跑密码库有多富余,后面单独算一笔账。
- 开发者空间自带插件。在开发者空间里不用另装,自己的机器装 CLI 也是一行脚本的事。
和几家常见免费隧道比一比
做之前我把国内几家常用的内网穿透免费档翻了一遍,数据取自各家官网 2026 年 11 月的说明,以官网实时为准:
| 服务 | 免费带宽 | 免费流量 | 免费隧道数 | 地址与 HTTPS |
|---|---|---|---|---|
| DevBridge | 5M | 50GB/月 | 10 条 | 固定 hwtunnel.com 子域名,自带 HTTPS,持久隧道最长 720 小时可续 |
| cpolar | 1Mbps | 不限 | 4 条 | 随机二级域名,约 24 小时一换 |
| NATAPP | 1M | 2G/月 | 2 条 | 随机域名,不定时强制更换,免费档不支持 HTTPS |
| SakuraFrp | 10Mibps | 5GiB/月,签到可加 | 2 条 | 需实名;内地节点建站要备案域名 |
| 花生壳 | 较低(免费档) | 5G/月 | 1 条 | 送 1 年壳域名,需实名 |
看下来各家各有长处:SakuraFrp 带宽最大,cpolar 不限流量。但放到"手机长期同步密码库"这个场景,最要紧的是地址不变和自带 HTTPS——地址一变,所有客户端都得重新填服务器;没有 HTTPS,Bitwarden 网页端直接用不了。这两条同时满足、流量又宽裕的,免费档里 DevBridge 最省心。
为什么这套组合够用:5M 跑密码库的账
5M 听着不大,换算下来约 625KB/s。密码库恰好是对带宽最不挑的自托管服务之一,原因有三层。
一是数据量小。 密码条目本质是加密后的短文本。以几百条记录的个人库估算,一次完整同步返回的数据大约是几百 KB(估算,随条目数和附件变化),5M 下不到一秒。真正大的只有网页端第一次加载的前端资源,加载后浏览器会缓存,之后不再重复拉取。
二是访问频率低。 手机、电脑、浏览器插件三端各自定时或在改动时同步,按每端每天几十次、每次几百 KB 粗算,一个月也就几 GB(估算),离 50GB 的额度很远。换句话说,流量额度是按"小网站"给的,跑密码库属于富余使用。
三是断了也不致命。 Bitwarden 系客户端会在本地保留一份加密缓存,隧道临时掉线时,已有密码照样能查、能填,受影响的只是新改动的同步。这让"免费隧道不保证 SLA"这个短板,在密码库场景里被大大削弱。
再往下想一层:为什么偏偏是"隧道 + 密码库"而不是"隧道 + 网盘"?因为瓶颈不同。网盘、相册、视频这类服务吃的是持续带宽,5M 会直接卡住体验;密码库吃的是在线率、固定地址和 HTTPS,这三样恰好是 DevBridge 免费档的长处。服务的需求和隧道的优势对上了,这才是"最优解"的来由,而不是单纯因为免费。
免费档里白送的安全能力
算完带宽再算安全,DevBridge 免费档里有几样东西,单独找方案搭要花不少功夫,这里是直接送的(均出自官方文档):
- 源站不暴露。 Host 主动向中继发起出站连接,本机不用开任何公网入站端口。扫描器只能扫到华为的网关,扫不到你家的宽带 IP。自己搭 frp 或做端口映射,这一层要靠防火墙自己守。
- 现成的 HTTPS 证书。 隧道地址自带平台签发的证书,不用申请、不用续签,也不怕忘记续期导致客户端连不上。
- 按端口的访问策略。 每个端口单独设"禁止匿名 / 允许匿名",默认是禁止。同一条隧道里,密码库端口开放、调试端口锁死,可以分开管。
- 分权的短期令牌。 Host 令牌只能托管、Connect 令牌只能连接,且有效期固定、较短,不跟着隧道有效期走。令牌就算泄露,能干的事和能用的时间都有限。
- 账号权限是天然的一道墙。 建隧道、开端口、改匿名策略、签发令牌,全都要先用华为云账号登录或持 API Key 才能操作;没开匿名的端口,访问者也得有 DevBridge 身份。也就是说,"门开不开、开多大"只有你自己的账号说了算,别人拿到地址也改不了策略。
- 身份与集群隔离。 隧道归属登录身份的工作空间,Host、Connect 和网关必须同属一个集群,避免跨集群串访问。
- 本地凭据受保护存储,断线自动重连。 登录凭据存在本地受保护的凭证存储里;Host、Connect 网络中断后会自动重连,家里断一下网不用手动拉起。
自己用 VPS 搭一套 frp 中转,要的是一台机器、一张证书、一套防火墙规则,外加持续的维护时间。这些在这里都是零成本,这才是我说"赚到"的地方。
要说明的是,官方文档里没有写隧道自带 WAF、抗 DDoS 之类的增值防护,所以本文不把它算进来。应用层的防护,靠的仍是第四步里 Vaultwarden 自身的加固。
安全怎么看:把风险一层层拆开
密码库挂公网,第一反应是"危险"。与其笼统地怕,不如按链路拆成四层,看每层谁在防、防到什么程度。
第一层:数据本身。 Bitwarden 协议是端到端加密:密码库在客户端用主密码派生的密钥加密后才上传,登录时发给服务器的也只是主密码的派生哈希,不是主密码本身。所以服务端存的是密文,主密码从不离开你的设备。这是整套方案最硬的一层,也是密码库比很多"明文后台"更适合挂在隧道上的根本原因。
第二层:传输链路。 访问地址是平台签发证书的 HTTPS 域名,客户端到网关这一段是加密的。需要说清楚的是:证书属于平台,TLS 大概率在网关处终止(推断,官方文档未明说),也就是说网关理论上能看到解开 HTTPS 后的请求。但结合第一层,它能看到的是请求结构和密文,看不到你的明文密码。把隧道网关当成"可信度一般的中转"来设计,结论依然成立。
第三层:入口暴露。 这是真正要花心思的一层。-a 开匿名后,地址就是公网可达的,而地址里的隧道 ID 不是秘密,要默认它会被扫到。风险集中在三处:有人来注册新账号、有人对登录接口撞库、有人摸到管理后台。对应的门锁在第四步:关注册、主密码设长并开两步验证、不开管理后台。Vaultwarden 自带登录限速(LOGIN_RATELIMIT_* 系列参数),默认就开着,能拖慢暴力尝试。
第四层:平台与可用性。 DevBridge 免责声明(2026-08-15 生效)写明它面向开发测试,不承诺用于生产核心系统和关键数据。这一条要正视,而不是绕开:本文的定位是个人自用的折腾方案,数据始终在本地,隧道只是一条随时可替换的通道。落到操作上就是两件事:/vw-data 定期备份到别处;把隧道当成随时可替换的通道,真要给家人或团队当正式服务,还是上云服务器更合适。
拆完再看,最大的风险不在"免费隧道"本身,而在第三层的门有没有锁好,这部分完全掌握在自己手里。
第一步:本地跑起 Vaultwarden
docker run -d --name vaultwarden \
-v /vw-data/:/data/ \
-e DOMAIN="https://<tunnelId>-8080.devbridge-s2.hwtunnel.com" \
-e SIGNUPS_ALLOWED=true \
-p 127.0.0.1:8080:80 \
--restart unless-stopped \
vaultwarden/server:latest
两个细节:端口只绑 127.0.0.1,局域网里也不暴露,入口只留隧道一个;DOMAIN 先留着,等拿到隧道 ID 再回来填,它影响附件下载、邮件里的链接等。
第二步:建一条长期隧道
装 CLI 并登录(自己的机器上执行,开发者空间可跳过安装):
curl -fsSL https://tools-artifact.developer.huaweicloud.com/sharedata/devbridge/install.sh | bash
export PATH="$HOME/.huawei/bin:$PATH"
devbridge auth login
devbridge host -p 8080 能直接起一条临时隧道,但默认有效期 72 小时,地址也会跟着变,不适合给手机长期用。密码库要用持久隧道,有效期拉满 720 小时:
devbridge create vault -d "vaultwarden" -e 720
devbridge port create <tunnelId> -p 8080 --protocol http -a
devbridge host <tunnelId>
这里的 -a 要说清楚。DevBridge 端口默认禁止匿名访问,访问者需要先有 DevBridge 身份,这对调试页面是很好的默认保护。但 Bitwarden 的手机、桌面客户端和浏览器插件没法完成 DevBridge 这一步认证,想让它们直接同步,这个端口只能开匿名。
官方文档建议包含用户数据的服务禁止匿名,这里属于权衡后的例外:底气来自前面安全一节说的端到端加密,代价是门口的保安换成了 Vaultwarden 自己,所以第四步的加固一定要做。
拿到隧道 ID 后,把 DOMAIN 改成真实地址,重建一下容器。
第三步:让它一直在线
devbridge host 是前台进程,正式用写成 systemd 服务,断线自己会重连,挂了也会被拉起:
[Unit]
Description=DevBridge host for Vaultwarden
After=network-online.target docker.service
[Service]
ExecStart=/root/.huawei/bin/devbridge host <tunnelId>
Restart=always
RestartSec=10
[Install]
WantedBy=multi-user.target
有效期也别忘了。官方文档写明,修改隧道或端口会刷新到期时间,所以加一条每周的定时任务续一下即可:
0 4 * * 1 /root/.huawei/bin/devbridge update <tunnelId> -e 720
720 小时是 30 天,每周续一次,留足余量。
第四步:开匿名之后的加固
这一步决定了这套方案安不安全,我按优先级排:
- 注册完自己的账号就关注册:
SIGNUPS_ALLOWED=false,重建容器。地址是公网可达的,不关就等于谁都能来开号。 - 管理后台:用不上就别设
ADMIN_TOKEN,后台默认就是关的;要用就用 argon2 哈希形式的 token,不放明文。 - 主密码设长,账号开两步验证。
- 地址不外传。隧道地址就是门牌号,别贴进群聊和截图里。
小结
没有公网 IP、不想买中转机、不想管证书,这三个痛点 DevBridge 一条隧道全包了:自带 HTTPS 域名,免费额度对密码库来说用不完,开发者空间里开箱即用。真正需要花心思的只有两处——用持久隧道并定期续期,以及开匿名后把 Vaultwarden 自己的门锁好。做到这两点,旧电脑上的密码库也能随身带着走。
使用声明
DevBridge 官方文档写明:开发隧道面向开发和测试工作流,官方建议在测试环境使用。使用时仍需遵守以下边界:
- 不在隧道中传输不必要的生产数据;
- 不为管理接口开放匿名访问;
- 不在脚本、日志或代码仓库中保存 API Key 和隧道令牌;
- 不把短期令牌当作长期身份凭证;
- 完成共享后停止 Host,并删除不再使用的隧道。
本文是个人自用场景的实践记录,请结合自身情况评估风险,数据务必做好备份。
- 点赞
- 收藏
- 关注作者
评论(0)