使用lucky+cloudflare TXT解析实现直连tcp/udp服务

推荐阅读:B站「LUCKY STUN穿透」在Windows下使用VNT组网为非HTTP服务固定STUN穿透端口

之前我发过上面必须阅读的“使用Cloudflare+lucky实现优雅的公网ipv4访问网页”,利用cloudflare的页面规则实现url重定向完成lucky创建的stun端口号动态变化的问题,但是这个方法只能用在http上使用,对于tcp/udp的动态打开变化就无能为力了。有没有办法可以实现tcp和udp的数据动态端口固定呢?

在看上面的推荐阅读的文章时发现作者利用vnt的TXT解析来创建组网隧道来完成tcp端口的固定问题,但是这本质上是利用组网vpn隧道来传输的,会经过一层协议但是包装,效率会下降。这是我就在想,为什么不能直接在本地的完成TXT获取,然后直接访问该tcp/udp端口呢?

1、使用lucky获取公网ip和端口

2、利用lucky的webhook同步更新cloudflare上txt记录里面的TXT解析记录的值

3、在本地解析TXT记录获取公网ip+端口号

4、在本地开启指定端口数据转发至公网ip:port

一、lucky获取公网ip+端口号并放行

在lucky->STUN内网穿透->添加穿透规则来创建一条规则。

这里我不使用TCP的内置的转发,以提高tcp的转发效率

在openwrt->网络->防火墙->通信规则来添加一条防火墙放行规则

在openwrt->网络->防火墙->来添加一条端口转发规则

按需填写就可以了,这里我使用tcp的ssh服务

二、webhook动态更新TXT记录

这一部分和必须阅读里面Webhook配置差不多一样了

需要准备的信息:

  • DNS的API密钥(可复用ddns的)
  • 域名区域ID
  • 规则ID(后面再获取)

对于DNS的API密钥,如果还保存着的话,可以直接用(ddns的那里一个还有的,看看能否复制过来),如果忘记的话可以出现创建一个新的API密钥

区域ID的话直接在概述页复制即可

在cloudflare的dns栏添加一个记录,类型为TXT,名称为tcp,内容随意,这里暂填127.0.0.1:80

点击保存完成添加

在lucky->计划任务->添加计划任务添加一个计划任务

执行时间任意,添加一个子任务,按照下面的格式填写

  • 类型:CallWeb
  • 接口地址:https://api.cloudflare.com/client/v4/zones/区域ID/dns_records
  • 请求方法:GET
  • 请求头:
    • Authorization: Bearer DNS密钥
      Accept: application/json
  • 禁用CallWeb调用成功字符串检测:是

添加完成后点击手动触发,接着在任务执行日志内找到刚才添加的TXT解析记录,推荐搜索tcp找到刚才添加的TXT解析记录

将规则ID保存在下备用

回到刚才创建stun隧道,编辑,按照下列格式填写参数

  • 接口地址:https://api.cloudflare.com/client/v4/zones/区域ID/dns_records/规则ID
  • 请求方法:PATCH
  • 请求头:
    • Authorization: Bearer DNS密钥
      Accept: application/json
  • 请求体:
    • {
      “type”: “TXT”,
      “content”: “#{ipAddr}”
      }
  • 接口调用成功包含的字符串:”success”:true

可以在保存之前向点击”Webhook手动触发测试“看看是否调用成功

这样利用TXT就完成了对IP和端口号的固定了,下面就是如何获取TXT和解析的地址的问题了

三、解析TXT记录值并转发

目前还没有发现可以直接解析TXT记录的数据并转发给TXT记录的ip:port的软件的,但是我们可以自己写一个简单的脚本来完成解析和转发的工作

这里补充一个软件可以实现TXT解析的功能:VNT,一个组网软件,但是我觉得有点杀鸡用牛刀,于是弃用

我在github上发布了一个用来解析和转发数据的小工具:txtforward,他可以完成解析并转发的工作。

直接在release页面下载就可以了,因为是用python写的,如果可以如果有python的环境可以直接运行源码,如果没有python环境也可以直接使用python打包二进制文件启动,README页面有详细介绍,这里就不过多赘述了。

如果无法打开github可以使用gitee下载点我跳转

在cmd输入txtforward-windows-amd64.exe 本地端口 txt域名即可完成数据转发工作

使用的话就直接连接本地端口就可以了

通过TXT动态解析端口号搭配本地端口转发可以实现比较完美的公网ip直连方案,算是补全和cloudflare+lucky只能使用http直连的空缺吧。但是这个方案不是非常完美,因为这个TXT转发的软件也是临时写出来的,还有很多还没实现,如UDP是不支持转发的,这个只能等后续的软件更新来实现了,这里只能先挖个坑


📌 本文由 FishBoss_Tca 原创,转载请注明作者和原文链接。
原文链接:https://www.ytca.top/guidance/openwrt/1258/

评论

  1. nary24
    3 月前
    2025-7-22 17:46:43

    辛苦楼主完善一下windows转发udp,非常感谢
    https://github.com/FishBossTca/txtforward/issues/1

    • 博主
      nary24
      已编辑
      3 月前
      2025-7-23 13:38:01

      应该是下载的版本的问题,估计下载到1.0.0版本了,1.1.0是添加了UDP转发的了

  2. goverd
    2 月前
    2025-8-28 17:24:44

    请问为什么我的监听启动后用管理员连接ssh时会报错显示Winerror10053

    • 博主
      goverd
      2 月前
      2025-8-28 18:31:51

      是不是端口号被占用了

  3. lr
    2 月前
    2025-9-10 16:26:28

    可以取代http重定向吗?浏览器能直接解析这个txt然后重定向吗?

    • 博主
      lr
      2 月前
      2025-9-10 16:49:58

      不可以,但是开放的端口可用用来访问http

  4. 叶子
    2 月前
    2025-9-11 20:05:22

    是不是1个域名不能两次txt解析(我VNTS建服务解析了1次,现在又整1次就不行了;另外,DDNS用的是之前的(与建VNTS服务时的一样)令牌,创建令牌时“区域资源”用的是“特定区域——个人域名”,看到你新建令牌时“区域资源”用的是“所有区域”,这有影响没?

    • 博主
      叶子
      2 月前
      2025-9-11 20:13:11

      我没有太能理解你想表达是什么意思,麻烦可以分段说一下吗?

      • 叶子
        FishBoss_Tca
        2 月前
        2025-9-11 20:28:41

        能不能加下Q,这里有些内容发送后丢失。

        • 博主
          叶子
          2 月前
          2025-9-11 21:22:28

          2546046421

  5. 叶子
    2 月前
    2025-9-11 22:07:49

    刚才的问题解决了,原来是字符有问题。另外,我下载了你的shellscript版本的txtforward,运行错误line 20: syntax error: unexpected “(” (expecting “then”),我的是padavan的路由,有解决办法没。

    • 博主
      叶子
      2 月前
      2025-9-11 23:47:44

      如果不行的话就用python吧
      目前我都是使用dig命令查一下txt解析的端口来即时连接的,我也几乎不怎么用这个脚本了
      自从使用vnt实现了完美的内网组网方案,就都是走内网访问的了,这个脚本我算只是提供一种思路而已罢了

    • 博主
      叶子
      2 月前
      2025-9-11 23:48:54

      如果你有更详细地连接需求再找我改吧

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇