DevTunnel:免费安全穿透内网网页
Dev Tunnel 是微软推出的一款免费、安全的临时网络隧道工具,允许开发者将本地运行的 Web 应用或 API 快速暴露到公共互联网。
无需配置端口转发、动态 DNS 或公网服务器,即可让他人访问你的本地服务,非常适合远程调试、功能演示、Webhook 调用、移动端联调等场景。
一、安装与登录
1. 安装 Dev Tunnel CLI
在 Linux 系统上,可以使用以下命令快速安装(其他系统请参考 官方文档):
curl -sL https://aka.ms/DevTunnelCliInstall | bash
安装完成后,通过命令行登录账户。
2. 登录账号
Dev Tunnel 需要使用 Microsoft Entra ID(组织账户)、Microsoft 个人账户 或 GitHub 账户 登录。
不支持匿名用户托管隧道。
命令 | 说明 |
---|---|
devtunnel user login | 使用 Microsoft 账户登录 |
devtunnel user login -g | 使用 GitHub 账户登录 |
devtunnel user login -d | 使用设备代码方式登录(适用于无图形界面的终端) |
devtunnel user login -g -d | 使用 GitHub + 设备代码登录 |
二、创建临时隧道
1. 启动测试回显服务器
可以使用 Dev Tunnel 自带的测试工具,在本地启动一个“回显”服务器(返回请求内容):
devtunnel echo -p 8080
2. 启动临时隧道
创建一个指向本地 8080
端口的临时隧道,默认只有本人可以访问:
devtunnel host -p 8080
输出示例如下:
Hosting port: 8080
Connect via browser: https://cjwdrxf3.asse.devtunnels.ms:8080or https://cjwdrxf3-8080.asse.devtunnels.ms
Inspect network activity: https://cjwdrxf3-8080-inspect.asse.devtunnels.msReady to accept connections for tunnel: puzzled-pond-dsjk1t8.asse
此时,本地 http://localhost:8080
服务已可以通过上述公网地址访问。
默认启用 HTTPS,最长有效期为 30 天。
3. 允许匿名访问
默认情况下,访客必须使用 Microsoft 或 GitHub 登录且有权限才能访问。若希望允许任何人(匿名)访问,可添加 --allow-anonymous
参数:
devtunnel host -p 8080 -a
4. 常用参数说明
参数 | 说明 |
---|---|
-p | 指定要暴露的端口,可指定多个端口,如 -p 3000 5000 |
--allow-anonymous | 允许匿名访问(无需登录) |
--protocol | 指定协议类型:http 、https 或 auto (默认自动) |
--expiration | 设置过期时间,如 1h (1小时)、2d (2天)、30d (30天) |
三、自定义持久隧道
临时隧道在关闭后会自动销毁。若需要反复使用同一个隧道(例如长期测试 API 或前端服务),可以创建持久化隧道。
1. 创建隧道
devtunnel create test123
输出示例:
Tunnel ID : test123.asse
Description :
Host connections : 0
Client connections : 0
Tunnel Expiration : 30 days
Set default tunnel to test123.asse.
如果未指定名称,系统会自动生成一个随机 ID。
2. 删除与查看隧道
删除指定隧道:
devtunnel delete TUNNELID
删除所有隧道:
devtunnel delete-all
查看隧道详情:
devtunnel show TUNNELID
3. 启动持久隧道
devtunnel host TUNNELID
四、管理隧道端口
持久隧道可以添加或删除端口:
# 新增端口
devtunnel port create TUNNELID -p 8080# 删除端口
devtunnel port delete TUNNELID -p 8080# 查看端口信息
devtunnel port show TUNNELID -p 8080# 更新端口说明
devtunnel port update -p 3000 --description 'frontend port'
可以为不同端口设置说明、协议类型和访问权限。
五、管理访问权限
Dev Tunnel 提供了灵活的访问控制机制,允许按组织、租户或匿名用户配置权限。
命令示例 | 说明 |
---|---|
devtunnel token TUNNELID --scopes connect | 获取临时连接令牌,可共享给他人使用 |
devtunnel access create TUNNELID --anonymous | 启用匿名访问 |
devtunnel access create TUNNELID --anonymous --expiration 4h | 启用匿名访问并设置 4 小时过期时间 |
devtunnel access create TUNNELID --port 3000 --anonymous | 仅对指定端口启用匿名访问 |
devtunnel access create TUNNELID --tenant | 允许当前 Microsoft Entra 租户访问 |
devtunnel access create TUNNELID --org ORG | 允许指定 GitHub 组织访问 |
六、总结
Dev Tunnel 是一个轻量、安全、免费的网络隧道工具,特别适合以下场景:
- Webhook 调试:外部服务调用本地 API
- 移动端调试:手机访问本地开发的 Web 服务
- 远程演示与分享:快速展示项目 Demo
- 集成测试:在 CI/CD 流程中临时暴露测试环境
相比 Ngrok、LocalTunnel 等第三方工具,Dev Tunnel 集成于微软生态,支持身份验证、访问控制、HTTPS 自动启用,安全性与稳定性更高。