مجموعه جامعی از راهحلهای حفاظت حریم خصوصی خودکار با Ansible و رزبری پای، طراحی شده برای محافظت از کاربران استارلینک در ایران در برابر حملات همبستگی هویت.
نویسنده: ایمان سمیعزاده مجوز: MIT مخزن: https://github.com/Iman/javid-mask
وقتی یک کاربر استارلینک در ایران بهطور تصادفی از یک وبسایت ایرانی بازدید میکند، هویت او میتواند از طریق کوکیها، فینگرپرینت مرورگر یا جلسات ورود افشا شود:
قبل (ISP معمولی ایرانی):
┌──────────────┐ ┌─────────────────┐
│ کاربر │─────►│ وبسایت ایرانی │
│ کوکی: رضا │ │ (digikala.com) │
│ IP: ایران │ │ لاگ: رضا=ایران │
└──────────────┘ └─────────────────┘
بعد (استارلینک - خطرناک):
┌──────────────┐ ┌─────────────────┐
│ کاربر │─────►│ وبسایت ایرانی │
│ کوکی: رضا │ │ (digikala.com) │
│ IP: آمریکا! │ │ لاگ: رضا=آمریکا!│ ◄── پرچم قرمز
└──────────────┘ └─────────────────┘ "رضا استارلینک دارد"
خطر: مقامات ایرانی میتوانند کاربران استارلینک را با همبستگی زیر شناسایی کنند:
- همان کوکیها/فینگرپرینت + IP خارجی = کاربر استارلینک شناسایی شد
- جلسات ورود از IPهای خارجی = هویت افشا شد
- فینگرپرینت مرورگر (Canvas، WebGL) دستگاهها را در IPهای مختلف شناسایی میکند
این پروژه سه معماری مکمل فراهم میکند که هر کدام سطوح مختلفی از حفاظت ارائه میدهند:
| معماری | سیفتر | سینگلتون | مثلث |
|---|---|---|---|
| پیچیدگی | ساده | متوسط | پیشرفته |
| استفاده اصلی | سرور DNS | دروازه WiFi | دروازه VPN |
| نقطه دسترسی WiFi | ❌ | ✅ | ✅ |
| پراکسی (VLESS/VMess) | ❌ | ✅ | ❌ |
| VPN (WireGuard) | ❌ | ❌ | ✅ |
| رمزگذاری ترافیک | فقط DNS | کامل (از طریق پراکسی) | کامل (از طریق VPN) |
| IP خروجی | IP شما | IP شما | IP VPS |
| Kill Switch | ❌ | ❌ | ✅ |
| نیاز به VPS | ❌ | ❌ | ✅ |
| فیلترینگ DNS | بیش از ۱.۶ میلیون | بیش از ۱.۶ میلیون | بیش از ۳.۲ میلیون (دوگانه) |
| دامنههای ایرانی مسدود | بیش از ۱۳۱ هزار | بیش از ۱۳۱ هزار | بیش از ۱۳۱ هزار |
| IPهای ایرانی مسدود | ۷۶۳ CIDR | ۷۶۳ CIDR | ۷۶۳ CIDR |
سادهترین معماری - یک سرور DNS خالص که تمام دستگاههای خانه شما به آن اشاره میکنند.
بهترین برای:
- کاربرانی که کمترین تنظیمات را میخواهند
- محافظت از تمام دستگاهها در شبکه موجود
- فقط مسدودسازی سطح DNS
ویژگیها:
- فیلترینگ DNS با Pi-hole (بیش از ۱.۶ میلیون دامنه)
- مسدودسازی دامنه ایرانی (بیش از ۱۳۱,۵۷۶ دامنه)
- مسدودسازی IP ایرانی (۷۶۳ CIDR)
- DNS-over-HTTPS (Cloudflare)
- جلوگیری از نشت IPv6
Home Devices → DNS to Pi → Pi-hole → Cloudflared → Internet
↓
Iranian domains blocked
یک نقطه دسترسی WiFi مستقل با پشتیبانی داخلی از پراکسی برای پروتکلهای VLESS/VMess.
بهترین برای:
- کاربرانی که به شبکه WiFi ایزوله نیاز دارند
- پشتیبانی از پروتکل پراکسی (ضد DPI)
- استقرار روی یک دستگاه
ویژگیها:
- شبکه WiFi ایزوله (10.50.0.0/24)
- فیلترینگ DNS با Pi-hole (بیش از ۱.۶ میلیون دامنه)
- پراکسی 3x-UI/Xray (VLESS/VMess/Reality)
- مسدودسازی IP/دامنه ایرانی
- DNS-over-HTTPS
WiFi Clients → WiFi AP → Pi-hole → nftables → Xray Proxy → Internet
↓ ↓
DNS filtered Iranian IPs blocked
یک معماری توزیعشده با تونل WireGuard VPN به یک VPS، که پوشش IP و kill switch فراهم میکند.
بهترین برای:
- حداکثر حفاظت حریم خصوصی
- پوشش جغرافیایی IP
- حفاظت از نظارت ISP
ویژگیها:
- تونل WireGuard VPN به VPS
- دوگانه Pi-hole (پای + VPS)
- تمام ترافیک از IP VPS خارج میشود
- Kill switch (مسدود اگر تونل شکست بخورد)
- مسدودسازی IP/دامنه ایرانی روی هر دو نود
WiFi Clients → WiFi AP → Pi-hole → WireGuard → VPS Pi-hole → Internet
↓ ↓
DNS filtered (2x) Traffic exits via VPS IP
| نوع نشت | سیفتر | سینگلتون | مثلث |
|---|---|---|---|
| نشت DNS | ✅ DoH | ✅ DoH | ✅ دوگانه DoH |
| نشت IPv6 | ✅ غیرفعال | ✅ غیرفعال | ✅ غیرفعال |
| دامنه ایرانی | ✅ بیش از ۱۳۱ هزار | ✅ بیش از ۱۳۱ هزار | ✅ بیش از ۱۳۱ هزار |
| IP ایرانی | ✅ ۷۶۳ CIDR | ✅ ۷۶۳ CIDR | ✅ ۷۶۳ CIDR |
| همبستگی کوکی | ✅ مسدود | ✅ مسدود | ✅ مسدود |
| نشت WebRTC | |||
| پوشش IP | ❌ | ❌ | ✅ IP VPS |
| Kill Switch | ❌ | ❌ | ✅ |
| مقاومت DPI | ❌ | ✅ Reality | ✅ WireGuard |
تمام معماریها در سطح شبکه (خودکار) محافظت میکنند، اما برخی تهدیدات نیاز به پیکربندی مرورگر (دستی) دارند:
NETWORK LEVEL (خودکار):
├── فیلترینگ DNS (Pi-hole)
├── مسدودسازی دامنه ایرانی (۱۳۱K+)
├── مسدودسازی IP ایرانی (۷۶۳ CIDR)
├── رمزگذاری DNS (DoH)
└── مسدودسازی IPv6
BROWSER LEVEL (کاربر باید پیکربندی کند):
├── جلوگیری از نشت WebRTC
├── فینگرپرینتینگ Canvas/WebGL
├── مدیریت کوکی
└── فینگرپرینتینگ JavaScript
برخی کاربران ممکن است بپرسند آیا روتر MikroTik میتواند همان محافظت را فراهم کند. در حالی که MikroTik سختافزار شبکه عالی است، محدودیتهای حیاتی برای این مورد استفاده حفاظت از حریم خصوصی دارد:
| ویژگی | MikroTik | رزبری پای | برنده |
|---|---|---|---|
| مسدودسازی DNS (بیش از ۱.۶ میلیون دامنه) | ❌ حداکثر ~۱۰۰ هزار | ✅ بیش از ۱.۶ میلیون بدون محدودیت | رزبری پای |
| مسدودسازی دامنه ایرانی (۱۳۱ هزار+) | ❌ منابع ناکافی | ✅ پشتیبانی کامل | رزبری پای |
| DNS-over-HTTPS (DoH) | ✅ کامل (Cloudflared) | رزبری پای | |
| پراکسی VLESS/VMess | ❌ پشتیبانی نمیشود | ✅ Xray با Reality | رزبری پای |
| پروتکل Reality (ضد DPI) | ❌ پشتیبانی نمیشود | ✅ پشتیبانی کامل | رزبری پای |
| WireGuard VPN | ✅ پشتیبانی میشود | ✅ پشتیبانی کامل | مساوی |
| فیلترینگ دوگانه DNS | ❌ پیچیده | ✅ آسان (پای + VPS) | رزبری پای |
| مسدودسازی IP ایرانی (۷۶۳ CIDR) | ✅ پشتیبانی میشود | ✅ پشتیبانی میشود | مساوی |
| مدیریت وب | ✅ WebFig/WinBox | ✅ Pi-hole/3x-UI | مساوی |
| مصرف برق | ✅ ~۵W | MikroTik | |
| هزینه | ~۵۰-۱۰۰ دلار | ~۸۰-۱۲۰ دلار (Pi 5 + کارت SD) | مساوی |
| انعطاف نرمافزار | ✅ لینوکس کامل | رزبری پای |
۱. محدودیت ظرفیت لیست مسدودی DNS
دستگاههای MikroTik دارای محدودیت سختافزاری روی ورودیهای DNS regex هستند:
- مدلهای سطح ورودی: ~۱۰,۰۰۰ ورودی
- مدلهای میانرده: ~۵۰,۰۰۰ ورودی
- مدلهای پیشرفته: ~۱۰۰,۰۰۰ ورودی
مورد استفاده ما نیاز دارد:
- لیستهای مسدودی Pi-hole: بیش از ۱.۶ میلیون دامنه
- دامنههای ایرانی: بیش از ۱۳۱,۵۷۶ دامنه
- کل: نیاز به ظرفیت بیش از ۱.۷ میلیون دامنه
۲. بدون پشتیبانی از پروتکل پراکسی
MikroTik نمیتواند:
- پراکسیهای VLESS/VMess اجرا کند
- پروتکل Reality (ضد DPI) را پیادهسازی کند
- به عنوان نقطه پایانی Xray عمل کند
- مبهمسازی لایه کاربرد فراهم کند
۳. محدودیتهای DoH
- فقط RouterOS v7+ از DoH پشتیبانی میکند
- پیکربندی پیچیدهتر از Cloudflared
- عملکرد کمتر تحت بار سنگین
MikroTik برای موارد زیر عالی است:
- ✅ فیلترینگ ساده DNS (هزاران، نه میلیونها)
- ✅ مسیریابی WireGuard/IPsec
- ✅ مدیریت پهنای باند و QoS
- ✅ شبکههای سازمانی با سوییچینگ پیشرفته
- ✅ پیادهسازیهایی که فقط به مسدودسازی IP نیاز دارند
برای سناریوی خاص ما (حفاظت هویت استارلینک با فیلترینگ DNS جامع، دامنههای ایرانی و مبهمسازی پراکسی)، رزبری پای تنها انتخاب عملی است.
۱. سیفتر - اگر فقط حفاظت DNS با کمترین تنظیمات میخواهید ۲. سینگلتون - اگر WiFi AP با پشتیبانی پراکسی میخواهید ۳. مثلث - اگر حداکثر حفاظت با VPN و kill switch میخواهید
| جزء | حداقل | پیشنهادی |
|---|---|---|
| رزبری پای | Pi 3B+ | Pi 5 (4GB) |
| کارت MicroSD | 16GB Class 10 | 32GB A2 |
| اترنت | 100Mbps | 1Gbps |
| منبع تغذیه | 5V 2.5A | 5V 5A (Pi 5) |
| VPS (فقط مثلث) | 512MB RAM | 1GB+ RAM |
- Raspberry Pi OS (Debian 13 "Trixie" یا جدیدتر)
- Ansible 2.9+ روی ماشین کنترل
- دسترسی SSH به رزبری پای
javid-mask/
├── README.md # این فایل (انگلیسی)
├── README.fa.md # مستندات فارسی
│
├── sifter/ # معماری فقط DNS
│ ├── README.md
│ ├── README.fa.md
│ ├── ansible/
│ └── diagrams/
│
├── singleton/ # معماری WiFi AP + پراکسی
│ ├── README.md
│ ├── README.fa.md
│ ├── ansible/
│ └── diagrams/
│
└── triangle/ # معماری WiFi AP + VPN
├── README.md
├── README.fa.md
├── ansible/
└── diagrams/
تمام معماریها از همان لیستهای مسدودی جامع استفاده میکنند:
| منبع | نوع | تعداد | بروزرسانی |
|---|---|---|---|
| bootmortis/iran-hosted-domains | دامنه | بیش از ۱۳۱,۵۷۶ | هفتگی |
| liketolivefree/iran_domain-ip | دامنه | ~۵۰,۰۰۰ | هفتگی |
| herrbischoff/country-ip-blocks | IP | ۷۶۳ CIDR | روزانه |
حفاظت سطح شبکه اتصالات ایرانی را مسدود میکند، اما تهدیدات سطح مرورگر نیاز به پیکربندی دستی دارند:
تنظیمات about:config:
├── media.peerconnection.enabled → false (غیرفعال WebRTC)
├── privacy.resistFingerprinting → true (ضد فینگرپرینتینگ)
├── network.dns.disableIPv6 → true (غیرفعال DNS IPv6)
├── geo.enabled → false (غیرفعال موقعیتیابی)
└── privacy.trackingprotection.enabled → true
| افزونه | هدف |
|---|---|
| uBlock Origin | مسدودسازی تبلیغ/ردیاب، کنترل WebRTC |
| NoScript | کنترل JavaScript |
| Cookie AutoDelete | پاکسازی خودکار کوکی |
مجوز MIT
حق نسخهبرداری (c) ۲۰۲۶ ایمان سمیعزاده
- Pi-hole: https://pi-hole.net/
- WireGuard: https://www.wireguard.com/
- 3x-UI/Xray: https://github.com/MHSanaei/3x-ui
- Cloudflared: https://developers.cloudflare.com/
- دامنههای ایرانی: https://github.com/bootmortis/iran-hosted-domains
- IPهای ایرانی: https://github.com/herrbischoff/country-ip-blocks
نگهدارنده: ایمان سمیعزاده پروژه: javid-mask (مجموعه حفاظت حریم خصوصی استارلینک)