当前位置:首页 > 技术 > 正文内容

使用钉钉内网穿透工具暴露本地服务

访客 技术 2026年11月7日 2

本指南介绍如何使用钉钉提供的内网穿透工具,将本地开发的Web服务暴露到公网。

工具获取与准备

首先,您需要从GitHub克隆项目代码,并根据您的操作系统进行相应的准备工作。

git clone https://github.com/open-dingtalk/pierced.git
cd windows_64  # 根据您的操作系统选择相应的目录,例如 windows_64, linux_amd64 等
chmod +x ding  # 赋予执行权限

HTTP服务穿透

要将本地运行的HTTP服务(例如运行在3000端口的应用)暴露到公网,可以使用以下命令:

# 基本启动命令,使用默认配置文件和指定的子域名及本地端口
./ding -config=ding.cfg -subdomain=my-app 3000

# 或者采用另一种参数写法
./ding -config=ding.cfg -subdomain=my-app 3000

前台运行与日志监控

为了方便调试,您可以选择前台运行,并将日志输出到标准输出,同时设置日志级别为INFO:

./ding -config=ding.cfg -log=stdout -log-level=INFO -proto=http -subdomain=my-app 3000

命令参数说明:

参数 说明
./ding 指向穿透工具可执行文件的路径。
-config=ding.cfg 指定配置文件(ding.cfg)的路径。
-log=stdout 将日志输出到标准输出。
-log-level=INFO 设置日志级别为 INFO,显示更详细的运行信息。
-proto=http 指定穿透协议为 HTTP。
-subdomain=my-app 申请一个名为 my-app 的二级域名用于公网访问。
3000 本地需要暴露的HTTP服务的端口号。

使用自定义域名

如果您想使用自己注册的域名(例如 my-domain.com)来访问服务,需要进行额外的DNS配置(将域名的CNAME记录指向穿透服务提供的地址)。请注意,使用自定义域名通常需要进行备案。

配置自定义域名的命令示例:

./ding -config=ding.cfg -proto=http -hostname=my-app.mydomain.com -subdomain=my-app 3000

参数说明:

参数 说明
-hostname=my-app.mydomain.com 指定您希望使用的自定义域名。此域名必须已正确配置 CNAME 记录。
-subdomain=my-app (可选)即使使用自定义域名,也可以指定一个子域名,用于内部标识或作为备用。
3000 本地服务的端口号。

后台运行

为了让穿透服务在服务器上稳定运行,您可以将其置于后台,并将日志输出到文件:

nohup ./ding -config=ding.cfg -log=stdout -log-level=INFO -proto=http -hostname=my-app.mydomain.com -subdomain=my-app 3000 > app_tunnel.log 2>&1 &

命令解释:

参数 说明
nohup ... & 使命令在后台持续运行,即使终端关闭也不会中断。
> app_tunnel.log 2>&1 将标准输出(stdout)和标准错误(stderr)都重定向到 app_tunnel.log 文件,实现日志持久化。

在钉钉后台运行的另一个示例,其中本地服务地址为 172.8.8.8:8080:

nohup ./ding -config=ding.cfg -log=stdout -log-level=INFO -proto=http -subdomain=my-server 172.8.8.8:8080 > server_log.out 2>&1 &

通用参数说明

以下是 ding 命令支持的一些常用参数:

  • -authtoken string: 用于身份验证的令牌,适用于某些高级功能或私有部署。
  • -config string: 指定 ngrok 配置文件(如 $HOME/.ngrok)的路径。
  • -hostname string: 请求使用自定义域名(仅限 HTTP/HTTPS 协议),需要配合 DNS 记录。
  • -httpauth string: 为公共隧道端点设置 HTTP 基本认证(格式如 username:password)。
  • -log string: 指定日志输出文件。'stdout' 表示输出到标准输出,'none' 表示不记录日志。
  • -log-level string: 设置日志记录级别,可选值包括 DEBUG, INFO, WARNING, ERROR。
  • -proto string: 指定隧道协议,可选 'http', 'https', 'tcp'。默认是 'http + https'。
  • -subdomain string: 请求一个自定义的二级域名(仅限 HTTP/HTTPS 协议)。

相关文章

Linux crontab 详解

1) crontab 是什么cron 是 Linux 的定时任务守护进程;crontab 是用来编辑/查看“按时间周期执行命令”的表(cron table)。常见两类:用户 crontab:每个用户一份(crontab -e 编辑)系统级 crontab / cron.d:可指定执行用户(/etc/crontab、/etc/cron.d/*)2) crontab 时间...

富文本里可以允许的 HTML 属性

一、所有标签默认允许的安全属性(极少)class        (可选)id           (通常建议禁用)title️ 注意:id 容易被滥用做锚点注入,很多系统直接禁用class 允许的话最好只允许固定前缀(如 editor-*)二、a 标签允许属性<a href="" t...

Mac 安装 Node.js 指南

方法一:通过官网安装包(最简单,适合初学者)如果你只是想快速安装并开始使用,这是最直接的方法。访问 Node.js 官网。页面会显示两个版本:LTS (Recommended For Most Users):长期支持版,最稳定。建议选这个。Current:最新特性版,包含最新功能但可能不够稳定。下载 .pkg 安装包并运行。按照安装向导点击“下一步”即可完成。方法二:使用 Homebrew 安装(...

Dom\HTML_NO_DEFAULT_NS 的副作用:自动加闭合标签

在使用Dom\HTMLDocument时,Dom\HTML_NO_DEFAULT_NS 将禁止在解析过程中设置元素的命名空间, 此设置是为了与DOMDocument向后兼容而存在的。当使用它时,已知的一个副作用就是:自动加闭合标签例如 </img> 为什么会这样?当你使用:Dom\HTML_NO_DEFAULT_NS文档会变成 无命名空间模式,此时内部更接近 XML...

Laravel 事件和监听器创建

在 Laravel 中,使用 Artisan 命令创建 Events(事件) 和 Listeners(监听器) 是非常高效的。你可以通过以下几种方式来实现:1. 手动创建单个 Event如果你只想创建一个事件类,可以使用 make:event 命令:Bashphp artisan make:event UserRegistered执行后,文件将生成在 app/Even...

自定义域名解析神器 dnsmasq

什么是 dnsmasq?dnsmasq 是一个轻量级、功能强大的网络服务工具,专为小型和中等规模网络设计。它是一个综合的网络基础设施解决方案[1]。dnsmasq 能做什么?功能说明应用场景DNS 转发与缓存将 DNS 查询转发到上游服务器(ISP、Google DNS 等),并在本地缓存结果加快 DNS 查询速度,减少外部 DNS 流量本地 DNS解析本地网络设备的主机名,无需编辑&n...

发表评论

访客

◎欢迎参与讨论,请在这里发表您的看法和观点。