masterking32/MasterDnsVPN
摘要
MasterDnsVPN 是一个开源的科学/研究项目,通过 DNS 查询和响应来隧道传输 TCP 流量,与 DNSTT 和 SlipStream 等同类工具相比,提供了多路径路由、ARQ 可靠性传输以及低协议开销等高级特性。
查看缓存全文
缓存时间: 2026/05/09 12:31
masterking32/MasterDnsVPN 来源:https://github.com/masterking32/MasterDnsVPN # MasterDnsVPN 项目 🔐 ## | فارسی نسخه | English Version | MasterDnsVPN 是一个通过 DNS 查询和响应承载 TCP 流量的科学研究型项目。其总体目标与 DNSTT 或 SlipStream 等项目类似,但在结构和实现方式上有着根本性的不同。该系统围绕对多种解析器行为及恶劣网络条件的兼容性进行设计,目标是在最糟糕的情况下仍能保持尽可能高的稳定性和数据传输能力。
📊 MasterDnsVPN 与同类项目对比
| 特性 | SlipStream | DNSTT | MasterDnsVPN |
|---|---|---|---|
| 协议类型 | 高级 DNS 隧道 | 经典 DNS 隧道 | 高级 DNS 隧道 / VPN |
| 传输协议 | QUIC | KCP + Noise | 自定义协议 + ARQ |
| 传输头部开销 | 🟠 ~24B | 🔴 ~59B | 🟢 ~5–7B ≈比 DNSTT 低 88% ≈比 SlipStream 低 71% |
| 加密方式 | TLS 1.3(内嵌于 QUIC) | Noise(Curve25519) | AES / ChaCha20 / XOR(若使用 XOR:轻量级,安全性较低且无额外开销) |
| 架构 | 统一(QUIC 处理一切) | 多层(KCP + SMUX + Noise) | 🟢 专为 DNS 优化的轻量级自定义设计 |
| 速度 | 🟡 高(最高约为 DNSTT 的 5 倍) | 🔴 中等 | 🟢 快于其他方案,最高约为 DNSTT 的 9 倍,约为 SlipStream 的 3.6 倍 |
| 丢包下的稳定性 | 🟡 良好 | 🟠 中等 | 🟢 非常高(多路径 + ARQ) |
| 多解析器支持 | 是(多路径) | ❌ | 是——高级(多解析器 + 数据复制) |
| 强审查下的抗干扰能力 | 良好 | 中等 | 非常强(项目核心目标) |
| 配置复杂度 | 中等 | 简单 | 安装更简便;仅在深度自定义高级设置时才更复杂 |
| SOCKS5 支持 | 是 | 是 | 针对 SOCKS5 / SOCKS4 优化,降低 SOCKS 开销 |
| Shadowsocks 支持 | ✅ | ❌ | 间接支持:TCP 转发模式可承载基于 TCP 的协议,如 Shadowsocks、VLESS/VMess 等 |
| 真正的多路径 | 是(QUIC 多路径) | ❌ | 是(多解析器 + 数据复制) |
| 自适应路由 | 有限 | ❌ | 高级(基于延迟/丢包) |
| 设计目标 | 高速与高效 | 简洁与稳定 | 在最恶劣的网络环境中存活——稳定性、速度与效率 |
| 实现语言 | Rust | Go | 主版本为 Go,同时存在旧版 Python 实现 |
| 内置负载均衡 | 🔴 | ❌ | 🟢(8 种内置均衡模式) |
| 数据复制系统 | ❌ | ❌ | 是——通过增加流量来提升可靠性(可配置或禁用) |
| MTU 容忍性 | 优于 DNSTT | - | 因协议开销极低,即使 MTU 非常小也能正常工作 |
| 故障转移系统 | ❌ | ❌ | ✅ |
| 下载速度 10MB(本地) | 🟡 0.978s | 🔴 2.492s | 🟢 0.270s |
| 上传速度 10MB(本地) | 🟡 3.249s | 🔴 16.207s | 🟢 1.746s |
| 解析器健康检查与自动禁用 | ❌ | ❌ | ✅ |
| 健康解析器后台自动恢复 | ❌ | ❌ | ✅ |
| 客户端本地 DNS 服务(减少 DNS 劫持) | ❌ | ❌ | ✅(带强力 DNS 缓存) |
| 通过 SOCKS5 解析 DNS | ❌ | ❌ | ✅(带 DNS 缓存) |
| 细粒度专业配置 | 🟠 | 🟠 | 🟢 几乎每个子系统均可配置 |
| 无需外部辅助软件 | ❌ | ❌ | 🟢 无需额外软件;如有需要,仍可与 SOCKS 或 Shadowsocks、OpenVPN 等工具组合使用 |
❌ 免责声明
MasterDnsVPN 仅作为教育和研究项目提供。
- 不提供任何担保: 本软件以“现状“提供,不附带任何明示或暗示的担保,包括适销性、特定用途适用性或不侵权担保。
- 责任限制: 本项目的开发者和贡献者对因使用或无法使用本软件而造成的任何直接、间接、偶然、后果性或其他损害不承担任何责任。
- 用户责任: 在测试环境之外使用本项目可能会干扰或破坏网络行为。用户对安装、配置和使用的一切后果自行负责。
- 法律合规: 使用本项目绕过当地法律可能导致民事或刑事后果。请在使用前查阅所在国家/地区的法律法规。开发者对用户违反当地、国家或国际法律不承担任何责任。
- 许可条款: 本软件的使用、复制、分发或修改受本仓库
LICENSE文件中的许可证约束。超出该条款范围的任何使用均被禁止。
公告与支持频道 📢
获取最新动态、版本发布和项目更新,请关注我们的 Telegram 频道:
如果您喜欢这个项目,请在 GitHub 上给它点个星(⭐),这将帮助更多人发现本项目。
可选财务支持 💸
- TON 网络:
masterking32.ton - EVM 兼容网络(ETH 及兼容链):
0x517f07305D6ED781A089322B6cD93d1461bF8652 - TRC20 网络(TRON):
TLApdY8APWkFHHoxebxGY8JhMeChiETqFH
每一份贡献和每一条反馈都令人感激。您的支持直接推动项目的持续开发与改进。
核心特性与优势 ✨
MasterDnsVPN 主要功能概览:
- 抗审查与恶劣网络生存能力: 🛡️ 专为在过滤网络、不稳定链路和严格 MTU 环境下工作而设计。
- 轻量级自定义协议: 🔄 使用带重传逻辑的自定义协议,降低开销并增加可用 DNS 载荷。
- 多路径与数据包复制: 📡 通过多条路径发送流量,支持选择性数据包复制,提升不稳定网络下的投递概率。
- 智能解析器选择与健康检查: ⚡ 根据质量和健康状态选择解析器,并自动管理问题解析器。
- MTU 探测与同步: 🧰 检测工作路径的实际 MTU 并据此对齐,减少分片并提高稳定性。
- SOCKS5 / SOCKS4 支持与优化: 🧦 针对常见应用的本地代理处理进行优化。
- ACK/控制流量打包与降低控制开销: 📦 将 ACK/控制流量合并,减少控制信令频次。
- 可选压缩与请求打包: 🗜️ 减少请求数量,在小 MTU 条件下提升效率。
- 灵活的加密方式: 🔐 支持多种加密方式,在速度与安全之间灵活权衡。
- 可选客户端本地 DNS 与缓存: 📛 可暴露本地 DNS 服务,降低延迟并减少被劫持的机会。
- 可扩展的资源控制: ⚙️ 可在小型服务器上运行,也可针对较重负载进行调优。
以上仅为高层次摘要,下方相关章节将对每个方面作更详细的说明。
🌐 在互联网全面断网期间经过实战验证
MasterDnsVPN 不只是一个理论性项目。它已在全球互联网被完全切断的环境中经过实战验证。
近期,在伊朗长达 70 余天的互联网断网期间,当局不仅封锁了 VPN 和过滤网站——还直接切断了国际带宽。99% 的对外连接被物理切断,用户被困在封闭的本地内网中。当没有国际互联网可连接时,标准翻墙工具毫无用武之地。
然而,在这次大规模断网期间,MasterDnsVPN 成为为数极少的、真正让用户保持与全球互联网连接的工具之一。
它是如何在全面断网中存活的?
MasterDnsVPN 不像普通 VPN 那样工作,而是依靠智能 DNS 隧道技术穿透封锁:
- 多解析器: 通过多个 DNS 解析器路由流量,确保连接从不依赖单一的、容易被封锁的路径。
- 加密与数据分割: 对数据进行加密,并将其拆分成细小的分散片段。
- 伪装成合法流量: 将这些数据片段封装在标准的、完全正常的 DNS 查询中。
- 绕过本地陷阱: 由于流量看起来与普通的日常 DNS 请求完全一致,防火墙会放行。数据被解析并到达外部世界——即使网络强制用户使用当局自己的受限本地解析器。
正是这种组合,让 MasterDnsVPN 在外部世界完全被封锁的情况下仍能维持稳定连接。
安装与快速上手 🧑💻
第一节:🖥️ 服务器配置
第 1.1 节:🌐 域名配置与准备(前置条件)
要让服务器直接接收 DNS 请求,您必须将一个子域名委派给它。简而言之,创建两条记录:一条指向服务器 IP 的 A 记录,以及一条将隧道子域名委派给该 A 记录的 NS 记录。
步骤 1.1.1:🅰️ 创建 A 记录(服务器地址)
- 类型:
A - 名称: 短名称,例如
ns - 值: 您服务器的 IPv4 地址
示例:
ns.example.com -> 1.2.3.4Cloudflare 注意事项:如果域名使用 Cloudflare,请打开DNS页面,点击A记录旁的云图标,使其变为灰色(仅 DNS)。不得保持代理状态。
步骤 1.1.2:🏷️ 创建 NS 记录(委派子域名)
- 类型:
NS - 名称: 隧道子域名,例如
v - 值/目标:
ns.example.com
示例:
v.example.com -> ns.example.comCloudflare 注意事项:正常添加NS记录即可。Cloudflare 不会代理 NS 记录,但请确保ns的 A 记录已设置为仅 DNS。
第 1.1.3 节:💡 关于 MTU 的简要说明
域名越短,每个 DNS 请求中留给实际数据的空间就越多。为获得更好的吞吐量,请尽量保持名称简短。如果使用 Cloudflare,仍需将相关记录保持在 仅 DNS 模式。
第 1.2 节:🐧 Linux 服务器快速安装
步骤 1.2.1:自动安装(脚本)
如需在 Linux 上部署服务器,最简便的方式是使用自动安装脚本。在服务器上运行以下命令:
bash <(curl -Ls https://raw.githubusercontent.com/masterking32/MasterDnsVPN/main/server_linux_install.sh)
脚本将自动处理安装和配置。完成后,服务器启动,加密密钥会显示在终端日志中,并写入可执行文件旁边的 encrypt_key.txt 文件。请妥善保存此密钥。
步骤 1.2.2:安装后的重要说明
- 安装过程中会要求您输入域名,必须与您在
NS记录中配置的委派子域名相同,例如v.example.com。 - 创建 DNS 记录后,请等待传播完成。根据 TTL 和 DNS 提供商的不同,这可能需要几分钟到数小时,某些情况下最长可达 48 小时。
- 可使用
dig或nslookup等工具验证 DNS 配置,例如dig v.example.com NS或nslookup -type=ns v.example.com。直接查询新域名服务器:dig @ns.example.com v.example.com A。 - 如果服务器防火墙已启用,请放行 UDP 端口 53。
ufw示例:
sudo ufw allow 53/udp
sudo ufw reload
firewalld 示例:
sudo firewall-cmd --add-port=53/udp --permanent
sudo firewall-cmd --reload
- 如果端口
53已被其他服务占用(如systemd-resolved),请参阅故障排除章节“修复端口 53 已被占用“。 - 安装完成后将显示加密密钥(
encrypt_key.txt)。请复制并妥善保存,因为客户端连接时需要用到它。
第二节:🚀 安装与启动(客户端和服务器)
您可以通过以下两种方式安装和运行本项目:
- 使用预编译二进制文件(推荐大多数用户使用)
- 使用 Go 直接从源码运行(推荐开发者使用)
第 2.1 节:使用预编译发布版(✅ 推荐)
为方便使用,预编译的客户端和服务器二进制文件已发布在发布页面。请下载适合您操作系统的压缩包并解压。
💡 注意: 发布压缩包通常包含二进制文件及示例配置文件。
客户端下载链接 📥
| 操作系统 | 架构 | 适用场景 | 直接下载 |
|---|---|---|---|
| Windows 🪟 | AMD64(64位) | Windows 10 和 11 | 下载 Windows 客户端 ⬇️ |
| Windows 🪟 | x86(32位) | 旧版 32 位 Windows 系统 | 下载 Windows x86 客户端 ⬇️ |
| Windows 🪟 | ARM64 | ARM 设备上的 Windows | 下载 Windows ARM64 客户端 ⬇️ |
| macOS 🍎 | ARM64 | Apple Silicon Mac(M1 / M2 / M3) | 下载 macOS 客户端 ⬇️ |
| macOS 🍎 | AMD64 | Intel Mac | 下载 macOS Intel 客户端 ⬇️ |
| Linux 🐧 | AMD64(64位) | 现代发行版(Ubuntu 22.04+,Debian 12+) | 下载 Linux 客户端 ⬇️ |
| Linux 🐧 | x86(32位) | 旧版 32 位 Linux 系统 | 下载 Linux x86 客户端 ⬇️ |
| Linux(旧版)🐧 | AMD64(64位) | 旧版发行版(Ubuntu 20.04,Debian 11) | 下载 Linux 旧版客户端 ⬇️ |
| Linux(旧版)🐧 | ARM64 | 需要更广泛兼容性的旧版 ARM64 Linux 系统 | 下载 Linux 旧版 ARM64 客户端 ⬇️ |
| Linux(ARM)🐧 | ARM64 | ARM 服务器、Raspberry Pi 及类似开发板 | 下载 Linux ARM 客户端 ⬇️ |
| Linux(ARM)🐧 | ARMv7 | 32 位 ARM 开发板及旧版嵌入式 Linux 设备 | 下载 Linux ARMv7 客户端 ⬇️ |
| Linux(ARM)🐧 | ARMv6 | 旧版 ARM 开发板及轻量级 Linux 设备 | 下载 Linux ARMv6 客户端 ⬇️ |
| Linux(ARM)🐧 | ARMv5 | 非常旧的 ARM 设备及嵌入式 Linux 系统 | 下载 Linux ARMv5 客户端 ⬇️ |
| Linux 🐧 | RISCV64 | RISC-V Linux 开发板和服务器 | 下载 Linux RISCV64 客户端 ⬇️ |
| Linux(MIPS)🐧 | MIPS | 大端序 MIPS Linux 及路由器平台 | 下载 Linux MIPS 客户端 ⬇️ |
| Linux(MIPS)🐧 | MIPSLE | 小端序 MIPS Linux 及路由器平台 | 下载 Linux MIPSLE 客户端 ⬇️ |
相似文章
@itsharmanjot: 防火墙无法阻止这一点。一位开发者刚刚开源了一个隧道,可通过端口53走私你的整个互联网……
一位开发者开源了MasterDnsVPN,这是一款通过DNS端口53创建加密隧道的工具,可绕过必须保持该端口开放的防火墙。它提供了可靠性、多个解析路径,并支持多种加密算法,充当免费的VPN替代方案。
@Fluyeporlaweb: 有一种互联网数据包,世界上没有任何防火墙能在不彻底破坏互联网的情况下将其屏蔽……
一款名为MasterDnsVPN的新型VPN将所有流量隐藏到端口53的DNS查询中,这使得防火墙极难在不干扰互联网的情况下进行屏蔽。它专为受限网络和审查严格的环境而设计。
@HowToPrompt__:伊朗连续88天切断了99%的互联网。每个VPN、每个代理、每个工具都失效了。但一个开源项目……
MasterDnsVPN是一个开源项目,通过将流量路由到DNS查询绕过所有防火墙,在伊朗99%互联网关闭的情况下幸存下来。
SOCKMAP - 未来的TCP拼接
Cloudflare 探索利用Linux内核的SOCKMAP基础设施进行TCP套接字拼接,从而减少用户空间开销,并实现更高效的反向代理数据转发。
NAT Slipstreaming v2.0 允许攻击者远程访问任意 TCP/UDP 服务
NAT Slipstreaming v2.0 是一种基于浏览器的攻击,利用 ALG 连接跟踪来远程访问受害者 NAT 后的任意 TCP/UDP 服务,绕过防火墙限制。