The project's README from github.com/masterking32/MasterDnsVPN. As one markdown file: README.md.
MasterDnsVPN is a scientific and research-oriented project for carrying TCP traffic through DNS queries and responses. In broad goal, it is similar to projects such as DNSTT or SlipStream, but it follows a fundamentally different structure and implementation approach. This system is designed around compatibility with many resolver behaviors and harsh network conditions, with the goal of preserving the highest possible stability and data delivery even in the worst cases.
| Feature | SlipStream | DNSTT | MasterDnsVPN |
|---|---|---|---|
| Protocol type | Advanced DNS tunnel | Classic DNS tunnel | Advanced DNS tunnel / VPN |
| Transport protocol | QUIC | KCP + Noise | Custom protocol + ARQ |
| Transport header overhead | 🟠 ~24B | 🔴 ~59B | 🟢 ~5–7B ≈88% lower than DNSTT ≈71% lower than SlipStream |
| Encryption style | TLS 1.3 (inside QUIC) | Noise (Curve25519) | AES / ChaCha20 / XOR (if XOR is used: lightweight with lower security and no extra overhead) |
| Architecture | Unified (QUIC handles everything) | Multi-layered (KCP + SMUX + Noise) | 🟢 Lightweight custom design optimized for DNS |
| Speed | 🟡 High (up to ~5× faster than DNSTT) | 🔴 Medium | 🟢 Faster than others Up to ~9× faster than DNSTT Up to ~3.6× faster than SlipStream |
| Stability under packet loss | 🟡 Good | 🟠 Medium | 🟢 Very high (Multipath + ARQ) |
| Multi-resolver support | Yes (multipath) | ❌ | Yes — advanced (multi-resolver + duplication) |
| Resilience under heavy censorship | Good | Medium | Very strong (a core project goal) |
| Setup complexity | Medium | Simple | Easier installation More complex only if you heavily customize advanced settings |
| SOCKS5 support | Yes | Yes | Optimized for SOCKS5 / SOCKS4 with reduced SOCKS overhead |
| Shadowsocks support | ✅ | ❌ | Indirectly: TCP Forwarding mode can carry TCP-based protocols e.g. Shadowsocks, VLESS/VMess, etc. |
| Real multipath | Yes (QUIC multipath) | ❌ | Yes (multi-resolver + duplication) |
| Adaptive routing | Limited | ❌ | Advanced (latency/loss based) |
| Design goal | High speed and efficiency | Simplicity and stability | Surviving the harshest networks — stability, speed, and efficiency |
| Implementation language | Rust | Go | Main version is Go Legacy Python version also exists |
| Built-in balancer | 🔴 | ❌ | 🟢 (8 built-in balancing modes) |
| Duplication system | ❌ | ❌ | Yes — increases traffic to improve reliability (configurable or can be disabled) |
| MTU tolerance | Better than DNSTT | - | Works even with very small MTU because protocol overhead is very low |
| Failover system | ❌ | ❌ | ✅ |
| Download speed 10MB (Local) | 🟡 0.978s | 🔴 2.492s | 🟢 0.270s |
| Upload speed 10MB (Local) | 🟡 3.249s | 🔴 16.207s | 🟢 1.746s |
| Resolver health checks and auto-disable | ❌ | ❌ | ✅ |
| Background reactivation of healthy resolvers | ❌ | ❌ | ✅ |
| Local DNS service on client (to reduce DNS hijacking) | ❌ | ❌ | ✅ (with strong DNS caching) |
| DNS resolving through SOCKS5 | ❌ | ❌ | ✅ (with DNS caching) |
| Fine-grained professional configuration | 🟠 | 🟠 | 🟢 Almost every subsystem is configurable |
| No external helper software required | ❌ | ❌ | 🟢 No extra software is required; if needed, you can still combine it with SOCKS or tools such as Shadowsocks or OpenVPN |
MasterDnsVPN is provided as an educational and research project only.
LICENSE file of this repository. Any use outside those terms is prohibited.For the latest news, releases, and project updates, follow our Telegram channel: Telegram Channel
masterking32.ton
0x517f07305D6ED781A089322B6cD93d1461bF8652
TLApdY8APWkFHHoxebxGY8JhMeChiETqFH
Every contribution and every piece of feedback is appreciated. Support directly helps ongoing development and improvement.
A brief overview of the main capabilities of MasterDnsVPN:
This list is only a high-level summary. The related sections below explain each area in more detail.
MasterDnsVPN isn't just a theoretical project. It is battle-tested and proven to work in environments where the global internet is completely severed.
Recently, during the 88-day internet blackout in Iran, authorities didn't just block VPNs or filter websites—they completely pulled the plug on international bandwidth. With 99% of the connection to the outside world physically cut off, users were trapped inside a closed, local intranet.
Standard circumvention tools are useless when there is no international internet to connect to. Yet, during this massive shutdown, MasterDnsVPN stood out as one of the very few lifelines that actually kept users connected to the global web.
How did it survive a total shutdown? Instead of acting like a standard VPN, MasterDnsVPN relies on smart DNS tunneling techniques to pierce through the blackout:
This exact combination is what allowed MasterDnsVPN to maintain a stable connection when the outside world was completely blocked.
To receive DNS requests directly on your server, you must delegate a subdomain to it. In short, create two records: one A record that points to your server IP, and one NS record that delegates the tunnel subdomain to that A record.
AnsExample:
ns.example.com -> 1.2.3.4
Cloudflare note: if the domain uses Cloudflare, open the
DNSpage and click the cloud icon next to theArecord so it becomes gray (DNS only). It must not remain proxied.
NSvns.example.comExample:
v.example.com -> ns.example.com
Cloudflare note: add the
NSrecord normally. Cloudflare does not proxy NS records, but make sure thensA record is already set toDNS only.
Shorter domain names leave more space for actual data inside each DNS request. For better throughput, keep names short. If you use Cloudflare, still keep the relevant records in DNS only mode.
If you want to deploy the server on Linux, the easiest method is the automatic installer script. Run this command on the server:
bash <(curl -Ls https://raw.githubusercontent.com/masterking32/MasterDnsVPN/main/server_linux_install.sh)
The script handles installation and configuration automatically. When it finishes, the server starts and the encryption key is shown in the terminal log and also written to encrypt_key.txt next to the executable. Keep this key safe.
NS record, for example v.example.com.dig or nslookup, for example dig v.example.com NS or nslookup -type=ns v.example.com. For a direct query to the new nameserver: dig @ns.example.com v.example.com A.ufw:sudo ufw allow 53/udp
sudo ufw reload
For firewalld:
sudo firewall-cmd --add-port=53/udp --permanent
sudo firewall-cmd --reload
53 is already occupied by another service, such as systemd-resolved, see the troubleshooting section “Fixing Port 53 Already in Use”.encrypt_key.txt) is shown after installation. Copy it and store it safely because the client needs it to connect.You can install and run this project in two ways:
For convenience, prebuilt client and server binaries are published in the release page. Download the correct archive for your operating system and extract it.
💡 Note: Release archives usually include the binary plus sample configuration files.
| Operating System | Architecture | Suitable For | Direct Download |
|---|---|---|---|
| Windows 🪟 | AMD64 (64-bit) |
Windows 10 and 11 | Download Windows Client ⬇️ |
| Windows 🪟 | x86 (32-bit) |
Older 32-bit Windows systems | Download Windows x86 Client ⬇️ |
| Windows 🪟 | ARM64 |
Windows on ARM devices | Download Windows ARM64 Client ⬇️ |
| macOS 🍎 | ARM64 |
Apple Silicon Macs (M1 / M2 / M3) | Download macOS Client ⬇️ |
| macOS 🍎 | AMD64 |
Intel Macs | Download macOS Intel Client ⬇️ |
| Linux 🐧 | AMD64 (64-bit) |
Modern distributions (Ubuntu 22.04+, Debian 12+) | Download Linux Client ⬇️ |
| Linux 🐧 | x86 (32-bit) |
Older 32-bit Linux systems | Download Linux x86 Client ⬇️ |
| Linux (Legacy) 🐧 | AMD64 (64-bit) |
Older distributions (Ubuntu 20.04, Debian 11) | Download Linux Legacy Client ⬇️ |
| Linux (Legacy) 🐧 | ARM64 |
Older ARM64 Linux systems that need broader compatibility | Download Linux Legacy ARM64 Client ⬇️ |
| Linux (ARM) 🐧 | ARM64 |
ARM servers, Raspberry Pi, and similar boards | Download Linux ARM Client ⬇️ |
| Linux (ARM) 🐧 | ARMv7 |
32-bit ARM boards and older embedded Linux devices | Download Linux ARMv7 Client ⬇️ |
| Linux (ARM) 🐧 | ARMv6 |
Older ARM boards and lightweight Linux devices | Download Linux ARMv6 Client ⬇️ |
| Linux (ARM) 🐧 | ARMv5 |
Very old ARM devices and embedded Linux systems | Download Linux ARMv5 Client ⬇️ |
| Linux 🐧 | RISCV64 |
RISC-V Linux boards and servers | Download Linux RISCV64 Client ⬇️ |
| Linux (MIPS) 🐧 | MIPS |
Big-endian MIPS Linux and router platforms | Download Linux MIPS Client ⬇️ |
| Linux (MIPS) 🐧 | MIPSLE |
Little-endian MIPS Linux and router platforms | Download Linux MIPSLE Client ⬇️ |
| Linux (MIPS) 🐧 | MIPS64 |
64-bit big-endian MIPS Linux systems | Download Linux MIPS64 Client ⬇️ |
| Linux (MIPS) 🐧 | MIPS64LE |
64-bit little-endian MIPS Linux systems | Download Linux MIPS64LE Client ⬇️ |
| Termux / Android 📱 | ARM64 |
Modern Android phones running Termux | Download Termux ARM64 Client ⬇️ |
| Termux / Android 📱 | ARMv7 |
Older Android phones running 32-bit Termux environments | Download Termux ARMv7 Client ⬇️ |
(Use these if you do not want the automated Linux installer.)
| Operating System | Architecture | Suitable For | Direct Download |
|---|---|---|---|
| Windows 🪟 | AMD64 (64-bit) |
Windows Server, Windows 10 and 11 | Download Windows Server ⬇️ |
| Windows 🪟 | x86 (32-bit) |
Older 32-bit Windows systems | Download Windows x86 Server ⬇️ |
| Windows 🪟 | ARM64 |
Windows on ARM devices | [Download Windows ARM64 Server ⬇️](https://github.com/masterking32/MasterDnsVPN/releases/latest/download/MasterDnsVPN_Server_W |