بزرگترین چالشهای ما در عبور از فیلترینگ پیشرفته (DPI) چیست؟
۱. ربایش و دستکاری دیاناس (DNS Hijacking)
۲. تشخیص و دراپ کردن الگوهای VPN توسط فایروال
۳. مسدودسازی یا اختلال فلّهای روی پورتهای UDP
✅ چرا معماری [Hysteria2 سرور DNS محلی] انتخاب اصلی ماست؟ این روش ترافیک شما را دقیقاً شبیه یک وبگردی کاملاً عادی (پروتکل QUIC/HTTP3) استتار میکند.
با انتقال تمام درخواستهای DNS به داخل این تونل امن، چشم فیلترینگ را کور میکنیم. در کنار آن، برای امنیت جانی کاربران، تمامی لاگهای سیستم مستقیماً روی RAM نوشته شده و با یک ریاستارت نابود میشوند (Zero Logs).
🔄 پلن جایگزین (در زمان قطعی کامل پورت 443 UDP): اگر فایروالها به حالت "اینترنت ملی" بروند و UDP 443 بسته شود، معماری ما منعطف است. به جای Hysteria2 میتوانیم از این روشها استفاده کنیم:
🔹 تکنیک IP Spoofing (جعل آیپی) روی سایر پورتها برای دور زدن Whitelist.
github.com/ParsaKSH/spoof-tu…
🔹 تونلهای Slipnet از طریق پورت 53 (فایروالها معمولاً برای حفظ ساختار شبکه خودشان جرات بستن کامل پورت ۵۳ را ندارند).
----------------------------------------------------------
نسخه: ۲۰۲۶ | روش: تونل Hysteria2 (QUIC) سیستم DNS رمزنگاریشده محلی
این راهنما به شما کمک میکند تا یک تونل امن به اینترنت آزاد بسازید. این سیستم تمام ترافیک اینترنت شما را به شکل یک بازدید معمولی از یک وبسایت بیخطر پنهان میکند تا از سد فیلترینگ عبور کنید.
📋 پیشنیازهای مهم (لطفاً ابتدا بررسی کنید)
قبل از شروع، مطمئن شوید که موارد زیر را در اختیار دارید:
۱. دو عدد سرور (VPS): یک سرور در اینترنت آزاد (سرور خارج) و یک سرور در ایران (سرور داخل/ایران). روی هر دو باید سیستمعامل Ubuntu Linux نصب باشد.
۲. پورتها: پورت 443 (هم TCP و هم UDP) باید روی هر دو سرور باز باشد.
۳. دسترسی: آیپی سرور خارج شما نباید از داخل ایران مسدود (فیلتر) شده باشد.
۴. دانش اولیه: باید بدانید چگونه با استفاده از یک نرمافزار ترمینال (مانند PuTTY در ویندوز یا Terminal در مک) به سرور خود متصل شوید.
⚠️ هشدار مهم (یک اشتباه رایج):بسیاری به اشتباه تصور میکنند که تونل عبور ترافیک (VLESS) و سرور DNS هر دو روی یک سرور قرار دارند.
اینها دو سرور کاملاً مستقل و جدا از هم هستند! (یکی برای انتقال دیتای اینترنت و دیگری برای حل مشکل ربایش DNS در شبکه داخلی).
❌ هرگز همه چیز را روی یک سرور متمرکز نکنید. پیادهسازی همه سرویسها روی یک ماشین، تمام معماری پنهاننگاری (Stealth) و امنیت شبکه شما را به خطر میاندازد. جداسازی این دو، کلید اصلی بقای این سیستم است.
بخش اول: ایمنسازی پایه و پاک کردن ردپاها (روی هر دو سرور انجام شود)
در این بخش ما دو کار مهم برای امنیت جانی و سایبری شما انجام میدهیم: اول، جلوی نشت اطلاعات توسط "IPv6" را میگیریم. دوم، به سرور دستور میدهیم که تمام گزارشهای سیستم (Logs) را به جای هارد دیسک، روی حافظه موقت (RAM) ذخیره کند. این یعنی با هر بار خاموش و روشن شدن سرور، تمام ردپاهای شما کاملاً و برای همیشه پاک میشود.
مرحله ۱: خاموش کردن IPv6
وارد سرور خود شوید و فایل تنظیمات راهاندازی (Bootloader) را باز کنید:
Bash
sudo nano /etc/default/grub
(نکته: Nano یک ویرایشگر متنی است. میتوانید با کلیدهای جهتنما در آن حرکت کنید).
مرحله ۲: در این فایل، به دنبال این دو خط بگردید:
GRUB_CMDLINE_LINUX_DEFAULT="..."
GRUB_CMDLINE_LINUX="..."
مرحله ۳: عبارت ipv6.disable=1 را داخل علامتهای نقلقول (کوتیشن) اضافه کنید. نتیجه باید شبیه به این باشد:
Plaintext
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash ipv6.disable=1" GRUB_CMDLINE_LINUX="ipv6.disable=1"
فایل را ذخیره کنید (Ctrl O، سپس Enter، سپس Ctrl X).
مرحله ۴: انتقال لاگها به حافظه موقت RAM (ضد ردگیری)
حالا باید به سرور بگوییم گزارشها را روی هارد دیسک ننویسد. این فایل را باز کنید:
Bash
sudo nano /etc/fstab
مرحله ۵: با کلید جهتنما به پایینترین قسمت فایل (یک خط خالی جدید) بروید و دقیقاً متن زیر را در آنجا جایگذاری (Copy/Paste) کنید:
Plaintext
tmpfs /var/log tmpfs defaults,noatime,nosuid,mode=0755,size=100m 0 0
فایل را ذخیره کنید (Ctrl O، سپس Enter، سپس Ctrl X).
مرحله ۶: اعمال تغییرات و ریاستارت
به سرور دستور دهید تا تغییرات را اعمال کرده و راهاندازی مجدد (ریاستارت) شود:
Bash
sudo update-grub sudo reboot
سرور شما اکنون ریاستارت میشود. همین ۶ مرحله را روی سرور دوم خود نیز انجام دهید!
بخش دوم: راهاندازی سرور خارج (Cloud)
اکنون به سروری که در خارج از کشور (اینترنت آزاد) قرار دارد متصل شوید.
مرحله ۱: ساخت یک هویت جعلی (استتار)
ما یک "گواهینامه" میسازیم که به فیلترینگ میگوید: "من یک وبسایت بیخطر (مثلاً
bing.com) هستم." دستورات زیر را یکی یکی کپی کرده و اجرا کنید:
Bash
sudo mkdir -p /etc/hysteria sudo openssl ecparam -name prime256v1 -out /etc/hysteria/ecparams.pem sudo openssl req -x509 -nodes -newkey ec:/etc/hysteria/ecparams.pem -keyout /etc/hysteria/server.key -out /etc/hysteria/server.crt -sha256 -days 3650 -subj "/CN=
bing.com" sudo chmod 644 /etc/hysteria/server.crt /etc/hysteria/server.key
مرحله ۲: دانلود Hysteria2
برنامهای که قرار است تونل ما را بسازد، دانلود کنید:
Bash
bash <(curl -fsSL
app.hysteria.network/get.sh)
مرحله ۳: تنظیمات Hysteria
فایل تنظیمات را باز کنید:
Bash
sudo nano /etc/hysteria/config.yaml
هر چیزی که در آن نوشته شده را پاک کنید و متن زیر را قرار دهید (بجای YOUR_PASSWORD یک رمز عبور قوی به دلخواه خود بنویسید):
YAML
listen: :443 tls: cert: /etc/hysteria/server.crt key: /etc/hysteria/server.key auth: type: password password: YOUR_PASSWORD obfs: type: salamander salamander: password: YOUR_PASSWORD
(ذخیره کنید: Ctrl O، سپس Enter، سپس Ctrl X)
مرحله ۴: روشن کردن تونل
Bash
sudo systemctl enable hysteria-server.service sudo systemctl start hysteria-server.service
بخش سوم: راهاندازی سرور داخل (پل ارتباطی در ایران)
حالا به سرور داخل ایران متصل شوید. این سرور از این به بعد دروازه ورود شما و تمام دستگاههای خانهتان به اینترنت آزاد خواهد بود.
مرحله ۱: دانلود Hysteria2
Bash
bash <(curl -fsSL
app.hysteria.network/get.sh)
مرحله ۲: اتصال به سرور خارج
فایل تنظیمات کلاینت را باز کنید:
Bash
sudo nano /etc/hysteria/client.yaml
متن زیر را در آن قرار دهید. مهم: بجای CLOUD_IP_ADDRESS آیپی سرور خارج خود را بنویسید و بجای YOUR_PASSWORD همان رمزی که در سرور خارج تعیین کردید را قرار دهید!
YAML
server: CLOUD_IP_ADDRESS:443 auth: YOUR_PASSWORD tls: sni:
bing.com insecure: true obfs: type: salamander salamander: password: YOUR_PASSWORD socks5: listen: 127.0.0.1:1080
(ذخیره کنید: Ctrl O، سپس Enter، سپس Ctrl X)
مرحله ۳: روشن کردن کلاینت برای همیشه
Bash
sudo systemctl enable hysteria-client@client.service sudo systemctl start hysteria-client@client.service
بخش چهارم: تعمیر دفترچه تلفن نابینا (DNS امن)
سیستم فیلترینگ اغلب از طریق بررسی درخواستهای وبسایتها (DNS) متوجه میشود شما قصد دارید کجا بروید. ما اکنون یک سرور DNS رمزنگاریشده روی سرور ایران شما میسازیم تا جلوی این جاسوسی را بگیریم.
مرحله ۱: نصب DNSCrypt
Bash
sudo apt update sudo apt install dnscrypt-proxy -y
مرحله ۲: حل مشکل مجوزها در لینوکس
باید به این برنامه اجازه دهیم تا در کل شبکه داخلی شما کار کند. این دستورات را کپی و اجرا کنید:
Bash
sudo mkdir -p /etc/systemd/system/dnscrypt-proxy.socket.d echo -e "[Socket]\nListenStream=\nListenDatagram=\nListenStream=0.0.0.0:53\nListenDatagram=0.0.0.0:53" | sudo tee /etc/systemd/system/dnscrypt-proxy.socket.d/override.conf sudo mkdir -p /etc/systemd/system/dnscrypt-proxy.service.d echo -e "[Service]\nAmbientCapabilities=CAP_NET_BIND_SERVICE\nCapabilityBoundingSet=CAP_NET_BIND_SERVICE" | sudo tee /etc/systemd/system/dnscrypt-proxy.service.d/override.conf
مرحله ۳: ارسال دفترچه تلفن از داخل تونل
تنظیمات DNSCrypt را باز کنید:
Bash
sudo nano /etc/dnscrypt-proxy/dnscrypt-proxy.toml
تغییرات را طوری اعمال کنید که در بالاترین قسمت فایل، دقیقاً این خطوط قرار بگیرند (بقیه خطوط پایین فایل را تغییر ندهید):
Ini, TOML
listen_addresses = [] server_names = ['cloudflare'] proxy = 'socks5://127.0.0.1:1080' force_tcp = true require_dnssec = true
(ذخیره کنید: Ctrl O، سپس Enter، سپس Ctrl X)
مرحله ۴: اجبار سرور به استفاده از DNS خودش
به سرور ایران میگوییم که از این به بعد فقط از سیستم رمزنگاری شده خودش استفاده کند:
Bash
sudo rm -f /etc/resolv.conf echo "nameserver 127.0.0.1" | sudo tee /etc/resolv.conf
مرحله ۵: اعمال تغییرات و شروع به کار
Bash
sudo systemctl daemon-reload sudo systemctl restart dnscrypt-proxy.socket sudo systemctl restart dnscrypt-proxy
تست نهایی روی سرور: عبارت nslookup
youtube.com را تایپ کنید. اگر لیستی از آیپیها به شما نشان داده شد، یعنی شما فیلترینگ را با موفقیت دور زدهاید!
بخش پنجم: استفاده در گوشی یا کامپیوتر
سرور ایران شما اکنون یک روترِ ضدسانسور و امن است. ابتدا باید آیپی محلی (Local IP) آن را در شبکه خانگی خود پیدا کنید (مثلاً چیزی شبیه 192.168.1.50). برای این کار روی سرور ایران دستور ip a را بزنید.
روی گوشی موبایل یا لپتاپ شما:
۱. به تنظیمات وایفای (Wi-Fi) خود بروید.
۲. تنظیمات آیپی را از حالت "خودکار (DHCP)" به حالت "دستی (Manual/Static)" تغییر دهید.
۳. در قسمت DNS 1 یا DNS Server، آیپی محلیِ سرور ایران خود را وارد کنید.
۴. ذخیره کنید!
از این لحظه به بعد، تمام درخواستهای اینترنت شما به صورت کاملاً نامرئی از تونل ایران عبور کرده و به اینترنت آزاد میرسد. نیازی به روشن کردن هیچ اپلیکیشن VPN روی گوشی خود ندارید!
بعد از روزها بررسی، تست سناریوهای مختلف و کالبدشکافی دقیق فیلترینگ فعلی، برای حل مشکل قطعی VLESS/Reality در ایران به یک معماری کمهزینه، پایدار و ضد-سانسور رسیدیم.
این کانسپت را اینجا عمومی میکنم تا متخصصین شبکه و توسعهدهندگان روی آن Pen-Test انجام دهند و باگهایش را بگیرند.👇
کانسپت پیشنهادی: میکرو-نودهای خصوصی DNS (Private DNS Micro-Nodes)
طراحی شده برای عبور از مسمومسازی شدید DNS در شبکه ملی اطلاعات (NIN)
🔴 مشکل اصلی (The Problem)
در حال حاضر، هسته اصلی اختلالات فیلترینگ ایران (GFI) بر پایه ربودن و مسمومسازی ترافیک DNS (DNS Poisoning/Hijacking) استوار است. کاربران به وضوح میبینند که کانکشنهای VLESS/Reality در مرحله Handshake اولیه وصل میشوند، اما ترافیک ردوبدل نمیشود. دلیل این است که درخواستهای DNS به جای رسیدن به سرورهای جهانی، در روترهای داخلی رهگیری شده و به IPهای جعلی یا ایزوله (مثل رنج 10.x.x.x) یا سرورهای فیلترشده (مثل SafeSearch) هدایت میشوند.
🟢 راهکار پیشنهادی (The Solution)
ایجاد «نیمسرورهای DNS خصوصی» بسیار کوچک (Micro-Nodes) در داخل ایران که فقط مختص یک خانواده یا گروه کوچک (حداکثر ۵ تا ۱۰ نفر) است. این سرورها ترافیک DNS را از دید سیستمهای DPI پنهان کرده و به خارج از کشور تونل میکنند.
⚙️ معماری سیستم (System Architecture)
۱. نود داخلی (Iran VPS - The Forwarder):
• یک سرور مجازی بسیار ارزان و سبک در یکی از دیتاسنترهای داخلی.
• وظیفه: دریافت درخواستهای DNS کاربران نهایی.
• مکانیسم: نصب یک سرویس کش محلی (مثل Unbound یا dnsmasq) برای پاسخدهی سریع به درخواستهای تکراری و کاهش ترافیک خروجی.
۲. تونل ارتباطی امن (The Stealth Tunnel):
• هشدار طراحی: استفاده از پورت ۵۳ و پروتکل UDP خام برای ارسال درخواست به خارج، به سرعت توسط DPI شناسایی و مسدود میشود.
• راهکار: سرور داخلی باید درخواستهای DNS را از طریق یک کانکشن DoH (DNS over HTTPS) یا یک تونل بسیار سبک VLESS/Reality روی پورت ۴۴۳ به سرور خارجی ارسال کند. این کار ترافیک DNS را شبیه به وبگردی امن (TLS) جلوه میدهد.
۳. نود خارجی (External VPS - The Resolver):
• سرور اصلی شما در خارج از کشور (آلمان، هلند و غیره).
• وظیفه: دریافت درخواستهای تونلشده از سرور داخلی، ارسال آنها به اینترنت آزاد (1.1.1.1 یا 8.8.8.8) و بازگرداندن IP واقعی به سرور داخلی.
۴. کاربر نهایی (The Client):
• کاربر در تنظیمات شبکه گوشی یا کامپیوتر خود، IP سرور داخلی را به عنوان DNS تنظیم میکند.
• مهم: ترافیک اصلیِ وبگردی و دانلودِ کاربر (Payload) از این سرور داخلی عبور نمیکند. کاربر همچنان از VPN/VLESS اصلی خود استفاده میکند، اما این بار چون DNS به درستی Resolve میشود، اینترنت بدون قطعی کار خواهد کرد.
🛡️ چرا این استراتژی در برابر GFI مقاوم است؟
• غیرمتمرکزسازی (Decentralization): محدود کردن کاربران به ۵ تا ۱۰ نفر (مدل خانوادگی). این کار از ایجاد الگوی رفتاری تودهای (Swarm Behavior) جلوگیری میکند.
• پنهانسازی در نویز (Statistical Noise): حجم ترافیک DNS بسیار ناچیز است. در مانیتورینگ سطح دیتاسنتر (NetFlow)، این حجم کم دیتا روی پورت ۴۴۳، به عنوان ترافیک نامتعارف (Anomaly) پرچمگذاری نمیشود.
• مقاومت شبکهای (Resilience): اگر سرور یک خانواده شناسایی و مسدود شود (Blackhole)، زیرساختِ صدها کاربر دیگر سالم میماند و سیستم دچار فروپاشی دومینووار نمیشود.
⚠️ ریسکها و الزامات امنیتی (OPSEC & Hardening)
برای توسعهدهندگانی که میخواهند روی این ایده کار کنند، در نظر گرفتن موارد زیر در اسکریپتهای اتوماسیون (DevSecOps) الزامی است:
1.ریسک احراز هویت (KYC Risk): دیتاسنترهای داخلی ترافیک را مانیتور میکنند و خرید VPS داخلی نیازمند احراز هویت است. به کاربران باید شفافیت کامل داده شود که سرور داخلی با هویت ایرانی خریداری میشود و در صورت حساسیت شدید، ریسک پاسخگویی دارد. (هرچند به دلیل عدم انتقال ترافیک VPN، اثبات جرم سختتر است).
2.قرنطینه سرور (Firewall Lockdown): اسکریپت نصب باید با UFW/iptables تمام پورتها را ببندد (جز پورت ۵۳ برای ورودی DNS و پورت ۴۴۳ برای خروجی تونل).
3.حذف ردپا (Wipe Protocols): ورود با پسورد (SSH) باید مسدود شده و لاگهای سیستمی (journalctl) به کمک Cron هر چند ساعت یکبار کاملاً پاک شوند.