使用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是不支持转发的,这个只能等后续的软件更新来实现了,这里只能先挖个坑


暂无评论

发送评论 编辑评论


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