MCPcopy
hub / github.com/masterking32/MasterDnsVPN

github.com/masterking32/MasterDnsVPN @v2026.06.13.234407-7de2476 sqlite

repository ↗ · DeepWiki ↗ · release v2026.06.13.234407-7de2476 ↗
1,832 symbols 6,553 edges 130 files 115 documented · 6%
README

پروژه MasterDnsVPN 🔐

| نسخه فارسی | English Version |

پروژه MasterDnsVPN یک پروژهٔ علمی-تحقیقاتی برای انتقال داده‌های TCP از طریق درخواست‌ها و پاسخ‌های DNS است. این پروژه در هدف کلی شبیه پروژه‌هایی مانند DNSTT یا SlipStream است، اما از نظر ساختار و روش پیاده‌سازی تفاوت‌های بنیادین دارد و رویکرد متفاوتی را دنبال می‌کند. پیاده‌سازی این سیستم بر پایهٔ سازگاری با انواع شبکه‌ها و رزولورها و نیز توانایی تحمل محدودیت‌های شدید طراحی شده است، تا در بدترین شرایط ممکن بالاترین میزان انتقال داده و بیشترین پایداری را فراهم کند.

📊 مقایسه MasterDnsVPN با پروژه‌های مشابه:

ویژگی SlipStream DNSTT MasterDnsVPN
نوع پروتکل DNS Tunnel پیشرفته DNS Tunnel کلاسیک DNS Tunnel / VPN پیشرفته
پروتکل انتقال QUIC KCP + Noise پروتکل اختصاصی + ARQ
سربار هدرهای انتقالی 🟠 ~24B 🔴 ~59B 🟢 ~5–7B

≈88% کمتر از DNSTT

≈71% کمتر از SlipStream | | نوع رمزنگاری | TLS 1.3 (در QUIC) | Noise (Curve25519) | AES / ChaCha20 / XOR (در صورت استفاده از XOR: امنیت نسبی ولی بدون سربار اضافی) | | معماری | یکپارچه (QUIC همه‌چیز را پوشش می‌دهد) | چندلایه (KCP + SMUX + Noise) | 🟢 طراحی اختصاصی سبک، بهینه برای DNS | | سرعت | 🟡 بالا (تا ~5× سریع‌تر از DNSTT) | 🔴 متوسط | 🟢 سریعتر از بقیه

تا ~9× سریعتر از DNSTT

تا ~3.6× سریعتر از SlipStream | | پایداری در Packet Loss | 🟡 خوب | 🟠 متوسط | 🟢 بسیار بالا (Multipath + ARQ) | | استفاده از چند DNS resolver | بله (multipath) | ❌ | بله — پیشرفته (multi-resolver + duplication) | | تحمل سانسور شدید | خوب | متوسط | بسیار قوی (هدف اصلی پروژه) | | پیچیدگی راه‌اندازی | متوسط | ساده | نصب و راه اندازی ساده تر

در صورت نیاز به شخصی سازی با توجه به تنظیمات گسترده، کمی پیچیده تر | | پشتیبانی SOCKS5 | بله | بله | بهینه‌شده برای SOCKS5 / SOCKS4 و کاهش سربارهای ساکس | | پشتیبانی Shadowsocks | ✅ | ❌ | غیرمستقیم: در حالت TCP Forwarding از پروتکل‌های TCP پشتیبانی می‌کند

نظیر:

Shadowsocks, Vless/Vmess و ... | | Multipath واقعی | بله (QUIC multipath) | ❌ | بله (multi-resolver + duplication) | | Adaptive routing | محدود | ❌ | پیشرفته (مبتنی بر latency/loss) | | هدف طراحی | سرعت و کارایی بالا | سادگی و پایداری | عبور از محدودترین شبکه‌ها — پایداری، سرعت و کارایی | | زبان پیاده‌سازی | Rust | Go | نسخه اصلی Go

اما نسخه قدیمی Python نیز موجود است | | بالانسر داخلی | 🔴 | ❌ | 🟢 (8 نوع بالانسر داخلی) | | سیستم Duplication | ❌ | ❌ | بله — افزایش ترافیک برای تضمین پایداری (قابل تنظیم یا غیرفعال سازی) | | MTU قابل پشتیبانی | بهتر از DNSTT | - | سازگار حتی با MTU کم به دلیل سربار بسیار پایین پروتکل | | سیستم Failover | ❌ | ❌ | ✅ | | سرعت دانلود 10 مگابایت در حالت لوکال | 🟡 0.978 ثانیه | 🔴 2.492 ثانیه | 🟢 0.270 ثانیه | | سرعت آپلود 10 مگابایت در حالت لوکال | 🟡 3.249 ثانیه | 🔴 16.207 ثانیه | 🟢 1.746 ثانیه | | قابلیت فشرده سازی | ❌ | ❌ | 🟢

به سه روش مختلف قابل تنظیم

Off, ZSTD, LZ4, ZLIB | | بررسی سلامت رزولورها و غیرفعال‌سازی خودکار | ❌ | ❌ | ✅ | | بازفعال‌سازی رزولورها در صورت دسترسی دوباره (پس‌زمینه) | ❌ | ❌ | ✅ | | ارائه DNS محلی در کلاینت (جلوگیری از DNS Hijacking) | ❌ | ❌ | ✅ (با DNS Caching حرفه‌ای برای کاهش درخواست‌ها) | | قابلیت DNS resolving از طریق SOCKS5 | ❌ | ❌ | ✅ (با DNS Caching) | | امکان پیکربندی حرفه‌ای و دلخواه | 🟠 | 🟠 | 🟢 امکان پیکربندی دقیق تمام بخش‌ها | | بی‌نیاز از نرم‌افزارهای جانبی | ❌ | ❌ | 🟢 نیازی به نصب نرم‌افزار جانبی نیست؛ در صورت نیاز می‌توانید از SOCKS یا ابزارهای خارجی مانند Shadowsocks یا OpenVPN استفاده کنید. |


❌ رفع مسئولیت (Disclaimer):

پروژه MasterDnsVPN صرفاً یک ایدهٔ علمی و آموزشی است و بر همین اساس طراحی و پیاده‌سازی شده است.

  • ارائه بدون ضمانت: این نرم‌افزار «همان‌طور که هست» (AS-IS) و بدون هیچ‌گونه ضمانت صریح یا ضمنی، از جمله ضمانت قابلیت فروش، مناسب‌بودن برای هدف خاص یا عدم نقض حقوق، ارائه می‌شود.
  • محدودیت مسئولیت: توسعه‌دهندگان و مشارکت‌کنندگان این پروژه هیچ‌گونه مسئولیتی در قبال خسارات مستقیم، غیرمستقیم، تبعی، اتفاقی یا هر نوع خسارت دیگری ناشی از استفاده یا ناتوانی در استفاده از این نرم‌افزار نمی‌پذیرند.
  • مسئولیت کاربر: استفاده از این پروژه در محیط‌های غیرآزمایشگاهی ممکن است به ساختار شبکه آسیب برساند. کاربر به‌تنهایی مسئول هرگونه پیامد ناشی از نصب، پیکربندی و استفاده از این نرم‌افزار است.
  • رعایت قوانین: استفاده از این پروژه برای دور زدن قوانین کشورها می‌تواند با مسئولیت‌های مدنی و کیفری همراه باشد. لطفاً پیش از استفاده، قوانین و مقررات کشور خود را در این زمینه به‌دقت بررسی کنید. توسعه‌دهندگان هیچ مسئولیتی در قبال نقض قوانین محلی، ملی یا بین‌المللی توسط کاربران نمی‌پذیرند.
  • مجوز استفاده: استفاده، کپی، توزیع یا تغییر این نرم‌افزار مشمول شرایط مجوز مندرج در فایل LICENSE این مخزن است. هرگونه استفاده خارج از چارچوب آن مجوز ممنوع است.

کانال اطلاع‌رسانی و پشتیبانی 📢

برای دریافت آخرین اخبار، نسخه‌ها و اطلاعیه‌های پروژه، کانال تلگرام ما را دنبال کنید: Telegram Channel


اگر از پروژه راضی‌اید، با دادن ستاره (⭐) در گیت‌هاب از ما حمایت کنید — این کار به دیده‌شدن پروژه کمک می‌کند.


حمایت مالی (اختیاری) 💸

  • شبکه TON:

masterking32.ton

  • آدرس روی شبکه‌های EVM (ETH و سازگارها):

0x517f07305D6ED781A089322B6cD93d1461bF8652

  • شبکه TRC20 (TRON):

TLApdY8APWkFHHoxebxGY8JhMeChiETqFH

از هر نوع حمایت و بازخورد شما سپاسگزاریم — کمک‌ها برای توسعه و بهبود پروژه بسیار ارزشمند است.


ویژگی‌های کلیدی و مزایا ✨

نمای کلی و مختصر از قابلیت‌های اصلی MasterDnsVPN:

  • عبور از سانسور و تحمل شرایط سخت شبکه: 🛡️ طراحی‌شده برای کار در شبکه‌های دارای فیلترینگ، قطعی و محدودیت MTU.
  • پروتکل سبک و کم‌سربار: 🔄 پروتکل اختصاصی با مکانیزم ارسال مجدد برای کاهش سربار و افزایش ظرفیت داده در DNS.
  • قابلیت Multipath و تکثیر بسته‌ها: 📡 ارسال همزمان از مسیرهای مختلف و تکثیر انتخابی برای افزایش شانس تحویل در شبکه‌های ناپایدار.
  • انتخاب هوشمند رزولورها و بررسی سلامت: ⚡ انتخاب بر اساس کیفیت و وضعیت رزولورها و مدیریت خودکار رزولورهای مشکل‌دار.
  • کشف و همگام‌سازی MTU: 🧰 تشخیص MTU عملیاتی مسیرها و تنظیم برای کاهش fragmentation و افزایش پایداری.
  • پشتیبانی و بهینه‌سازی SOCKS5/SOCKS4: 🧦 مسیردهی و پردازش بهینه ترافیک پراکسی محلی برای برنامه‌ها.
  • تجمیع کنترل‌ها و کاهش سربار پاسخ‌ها: 📦 جمع‌آوری ACK و پیام‌های کنترلی در یک پکت برای کاهش ترافیک کنترل.
  • فشرده‌سازی و تجمیع درخواست‌ها (اختیاری): 🗜️ کاهش تعداد درخواست‌ها و افزایش بهره‌وری در شرایط MTU کوچک.
  • رمزنگاری انعطاف‌پذیر: 🔐 پشتیبانی از چند الگوریتم رمزنگاری برای متعادل‌سازی سرعت و امنیت.
  • قابلیت DNS محلی و کشینگ در کلاینت: 📛 ارائه DNS محلی، کاهش تأخیر و جلوگیری از حملات hijack.
  • مقیاس‌پذیری و کنترل منابع: ⚙️ قابل اجرا از سرورهای کم‌منابع تا محیط‌های با بار زیاد.

این فهرست نمای کلی و مختصری از قابلیت‌هاست؛ برای جزئیات بیشتر به بخش‌های مرتبط در همین سند مراجعه کنید.


راه‌اندازی و شروع بکار 🧑‍💻

بخش ۱: 🖥️ راه‌اندازی سرور

بخش ۱.۱: 🌐 راه‌اندازی و آماده‌سازی دامنه (پیش‌نیاز)

برای دریافت مستقیم درخواست‌های DNS روی سرور باید یک زیردامنه را به سرورتان واگذار (delegate) کنید. به‌صورت خلاصه دو رکورد بسازید: یک رکورد A برای آدرس سرور و یک رکورد NS که زیردامنه را به آن A ارجاع دهد.

گام ۱.۱.۱: 🅰️ ساخت رکورد A (آدرس سرور)

  • نوع: A
  • نام: نام کوتاه مثل ns
  • مقدار: آدرس IPv4 سرور شما

مثال: ns.example.com -> 1.2.3.4

در Cloudflare - ⚠️ نکته سریع: اگر دامنه روی Cloudflare است، در صفحه DNS روی آیکون ابر کنار رکورد A کلیک کنید تا خاکستری (DNS only) شود؛ نباید Proxied (نارنجی) باشد.

گام ۱.۱.۲: 🏷️ ساخت رکورد NS (واگذاری زیردامنه)

  • نوع: NS
  • نام: زیردامنه‌ی تونل مثل v
  • مقدار (Target): ns.example.com

مثال: v.example.com -> ns.example.com

در Cloudflare - ⚠️ نکته سریع: رکورد NS را اضافه کنید؛ Cloudflare رکورد NS را پروکسی نمی‌کند، فقط مطمئن شوید رکورد ns قبلاً روی DNS only قرار دارد.

بخش ۱.۱.۳: 💡 نکتهٔ کوتاه دربارهٔ MTU

هر چه نام‌های دامنه کوتاه‌تر باشند، فضای بیشتری برای داده در هر DNS request باقی می‌ماند. برای throughput بهتر از نام‌های کوتاه استفاده کنید. اگر از Cloudflare استفاده می‌کنید، باز هم رکوردها را DNS only نگه دارید.


بخش ۱.۲: 🐧 نصب سریع سرور لینوکس

گام ۱.۲.۱: نصب خودکار (اسکریپت)

اگر قصد دارید سرور را روی یک سیستم لینوکسی راه‌اندازی کنید، ساده‌ترین راه استفاده از اسکریپت نصب خودکار است. کافی است دستور زیر را در ترمینال سرور وارد کنید:

bash <(curl -Ls https://raw.githubusercontent.com/masterking32/MasterDnsVPN/main/server_linux_install.sh)

این اسکریپت مراحل نصب و پیکربندی را خودکار انجام می‌دهد. بعد از پایان نصب، سرور اجرا می‌شود و کلید رمزنگاری در لاگ ترمینال نمایش داده می‌شود و همچنین در فایل encrypt_key.txt کنار فایل اجرایی ذخیره می‌گردد — این کلید را در جای امن نگه دارید.

گام ۱.۲.۲: نکات مهم پس از نصب

  • در هنگام نصب از شما آدرس دامنه پرسیده می‌شود؛ باید همان زیردامنه‌ای باشد که در رکورد NS تنظیم کرده‌اید (مثلاً v.example.com).
  • پس از ایجاد رکوردهای DNS، تا انتشار آن‌ها صبر کنید (ممکن است از چند دقیقه تا چند ساعت یا در موارد خاص تا 48 ساعت طول بکشد؛ بسته به TTL).
  • برای بررسی صحت تنظیمات DNS می‌توانید از ابزارهایی مانند dig یا nslookup استفاده کنید (مثلاً dig v.example.com NS یا nslookup -type=ns v.example.com). برای پرس‌وجو مستقیم از nameserver جدید: 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 در برخی توزیع‌ها)، راه‌حل را در بخش «رفع مشکل اشغال بودن پورت ۵۳» ببینید.
  • کلید رمزنگاری (encrypt_key.txt) پس از نصب نمایش داده می‌شود؛ آن را کپی و امن نگه دارید، زیرا برای اتصال کلاینت لازم است.

بخش ۲: 🚀 نصب و راه‌اندازی (کلاینت و سرور)

شما می‌توانید این پروژه را به دو روش نصب و اجرا کنید:

  1. استفاده از فایل‌های کامپایل‌شدهٔ آماده (مناسب اکثر کاربران)
  2. اجرای مستقیم از روی سورس با Go (مناسب توسعه دهندگان)

بخش ۲.۱: استفاده از نسخه‌های کامپایل‌شده (✅ روش پیشنهادی)

برای راحتی شما، فایل‌های اجرایی کلاینت و سرور از قبل در releaseها منتشر می‌شوند. کافی است نسخه مناسب سیستم‌عامل خود را دانلود و از حالت فشرده خارج کنید.

💡 نکته: بسته‌های release معمولاً شامل فایل اجرایی و فایل‌های نمونه‌ی کانفیگ هستند.

لینک‌های دانلود کلاینت (Client) 📥

سیستم‌عامل (OS) پردازنده (Architecture) مناسب برای سیستم‌های... لینک دانلود مستقیم
ویندوز (Windows) 🪟 AMD64 (64-bit) ویندوز ۱۰ و ۱۱ دانلود نسخه ویندوز ⬇️
ویندوز (Windows) 🪟 x86 (32-bit) سیستم‌های قدیمی ۳۲ بیتی ویندوز دانلود نسخه ویندوز x86 ⬇️
ویندوز (Windows) 🪟 ARM64 دستگاه‌های ویندوزی مبتنی بر ARM دانلود نسخه ویندوز ARM64 ⬇️
مک‌اواس (macOS) 🍎 ARM64 مک‌های جدید (سری M1 / M2 / M3) دانلود نسخه مک (Apple Silicon) ⬇️
مک‌اواس (macOS) 🍎 AMD64 مک‌های اینتل دانلود نسخه مک اینتل ⬇️
لینوکس (Linux) 🐧 AMD64 (64-bit) توزیع‌های جدید (اوبونتو ۲۲.۰۴+، دبیان ۱۲+) دانلود نسخه لینوکس (جدید) ⬇️
لینوکس (Linux) 🐧 x86 (32-bit) سیستم‌های قدیمی ۳۲ بیتی لینوکس دانلود نسخه لینوکس x86 ⬇️
لینوکس (Legacy) 🐧 AMD64 (64-bit) توزیع‌های قدیمی (اوبونتو ۲۰.۰۴، دبیان ۱۱) دانلود نسخه لینوکس (سازگاری بالا) ⬇️
لینوکس (Legacy) 🐧 ARM64 سیستم‌های ARM64 قدیمی‌تر که سازگاری بیشتری می‌خواهند دانلود نسخه لینوکس Legacy ARM64 ⬇️
لینوکس (ARM) 🐧 ARM64 سرورهای ARM، رزبری‌پای و بردهای مشابه دانلود نسخه لینوکس (ARM) ⬇️
لینوکس (ARM) 🐧 ARMv7 بردهای ARM ۳۲ بیتی و دستگاه‌های قدیمی‌تر دانلود نسخه لینوکس ARMv7 ⬇️
لینوکس (ARM) 🐧 ARMv6 بردهای ARM قدیمی‌تر و سیستم‌های سبک لینوکسی دانلود نسخه لینوکس ARMv6 ⬇️
لینوکس (ARM) 🐧 ARMv5 دستگاه‌های ARM خیلی قدیمی و سیستم‌های embedded دانلود نسخه لینوکس ARMv5 ⬇️
لینوکس (Linux) 🐧 RISCV64 بردها و سرورهای لینوکسی مبتنی بر RISC-V دانلود نسخه لینوکس RISCV64 ⬇️
لینوکس (MIPS) 🐧 MIPS سیستم‌ها و روترهای لینوکسی MIPS با endian بزرگ دانلود نسخه لینوکس MIPS ⬇️
لینوکس (MIPS) 🐧 MIPSLE سیستم‌ها و روترهای لینوکسی MIPS با endian کوچک دانلود نسخه لینوکس MIPSLE ⬇️
لینوکس (MIPS) 🐧 MIPS64 سیستم‌های ۶۴ بیتی MIPS با endian بزرگ دانلود نسخه لینوکس MIPS64 ⬇️
لینوکس (MIPS) 🐧 MIPS64LE سیستم‌های ۶۴ بیتی

Extension points exported contracts — how you extend this code

PacketEnqueuer (Interface)
PacketEnqueuer abstracts the transmission layer (Client or Server stream) [4 implementers]
internal/arq/arq.go
ClientContext (Interface)
ClientContext defines the interface that the client must implement to be handled. This prevents circular dependencies be [2 …
internal/client/handlers/registry.go
Logger (Interface)
(no doc) [3 implementers]
internal/arq/arq.go
HandlerFunc (FuncType)
HandlerFunc is the signature for all packet type handlers.
internal/client/handlers/registry.go

Core symbols most depended-on inside this repo

Errorf
called by 148
internal/arq/arq.go
Close
called by 91
internal/client/stream_client.go
Infof
called by 71
internal/arq/arq.go
Close
called by 66
internal/arq/arq.go
Done
called by 65
internal/arq/arq.go
max
called by 59
internal/client/mtu.go
NewARQ
called by 59
internal/arq/arq.go
Debugf
called by 56
internal/arq/arq.go

Shape

Method 865
Function 790
Struct 152
TypeAlias 13
Interface 11
FuncType 1

Languages

Go100%

Modules by API surface

internal/arq/arq.go120 symbols
internal/arq/arq_test.go119 symbols
internal/client/balancer.go116 symbols
internal/udpserver/session.go75 symbols
internal/config/client.go71 symbols
internal/config/server.go70 symbols
internal/udpserver/stream_syn_test.go56 symbols
internal/client/mtu.go45 symbols
internal/client/client_utils.go39 symbols
internal/udpserver/server_postsession.go38 symbols
internal/udpserver/server_session.go34 symbols
internal/client/stream_client.go34 symbols

Dependencies from manifests, versioned

github.com/pierrec/lz4/v4v4.1.26 · 1×
golang.org/x/cryptov0.49.0 · 1×
golang.org/x/sysv0.42.0 · 1×

For agents

$ claude mcp add MasterDnsVPN \
  -- python -m otcore.mcp_server <graph>

⬇ download graph artifact