ساخت DNS تحریم شکن ایرانی: آموزش ساده و جامع برای مبتدیان
مقدمه: چرا به DNS تحریم شکن ایرانی نیاز داریم؟
با افزایش تحریم های اینترنتی در ایران، دسترسی به بسیاری از وب سایت ها و خدمات آنلاین به دلیل فیلترینگ مبتنی بر DNS (Domain Name System) دشوار شده است. سرورهای DNS محلی در ایران ممکن است آدرس های IP صحیح سایت های تحریم شده را ارائه ندهند یا آن ها را مسدود کنند، که باعث می شود کاربران نتوانند به این سایت ها دسترسی پیدا کنند. این آموزش مرحله به مرحله به شما نشان می دهد چگونه یک DNS تحریم شکن ایرانی بسازید که این محدودیت ها را دور بزند. ایده اصلی استفاده از یک سرور مجازی ایران (با IP نمونه 10.10.10.10
) به عنوان نقطه ورود محلی و فوروارد کردن درخواست های DNS به یک سرور مجازی آلمان (با IP نمونه 20.20.20.20
) است. این متود باعث می شود فرآیند resolve (تبدیل نام دامنه به IP) از طریق IP آلمانی انجام شود، که معمولاً تحت تأثیر تحریم های اعمال شده روی IPهای ایرانی نیست.
این DNS تحریم شکن به شما کمک می کند تا حداقل در مرحله resolve DNS، بدون نیاز به ابزارهای پیچیده مانند VPN، محدودیت ها را دور بزنید. برای مثال، اگر سایتی مانند themeforest.net در ایران به دلیل DNS مسدود است، این روش می تواند IP صحیح آن را دریافت کند. با این حال، برای بارگذاری کامل صفحات وب یا دسترسی به محتوای تحریم شده، ممکن است همچنان به پروکسی یا VPN نیاز داشته باشید، زیرا ترافیک داده ها از IP ایرانی شما عبور می کند.
توجه مهم: این آموزش صرفاً برای اهداف آموزشی و تحقیقاتی است. دور زدن تحریم ها ممکن است در برخی کشورها یا شرایط، خلاف قوانین باشد. مسئولیت قانونی و اخلاقی استفاده از این روش بر عهده شماست. همچنین، برای استفاده حرفه ای، باید اقدامات امنیتی بیشتری اعمال کنید.
همچنین بخوانید: آموزش ساخت DNS گیمینگ برای کاهش پینگ در 2025
این آموزش با زبانی ساده برای کاربران مبتدی طراحی شده است. حتی اگر تجربه کمی با لینوکس دارید، با دنبال کردن مراحل و کپی کردن دستورات، می توانید یک DNS تحریم شکن راه اندازی کنید.

پیش نیازها برای ساخت DNS تحریم شکن
قبل از شروع، باید موارد زیر را آماده کنید تا فرآیند راه اندازی روان و بدون مشکل پیش برود:
- سرور مجازی ایران: یک VPS با سیستم عامل Ubuntu 22.04 LTS یا جدیدتر. حداقل مشخصات پیشنهادی: 1 گیگابایت RAM، 1 هسته CPU، و 20 گیگابایت فضای ذخیره سازی. دسترسی root از طریق SSH ضروری است. می توانید از ارائه دهندگان معتبر ایرانی مانند ابرآروان، آسیاتک، پارس پک یا هاست ایران استفاده کنید. هزینه تقریبی: 100 تا 300 هزار تومان ماهانه. IP نمونه برای این آموزش:
10.10.10.10
. - سرور مجازی آلمان: یک VPS ساده در آلمان با Ubuntu 22.04 LTS. مشخصات مشابه سرور ایران کافی است. ارائه دهندگان معتبر مانند Hetzner، Contabo، OVH یا DigitalOcean مناسب هستند. این سرور باید IP عمومی داشته باشد و از اینترنت آزاد (خارج ایران) قابل دسترسی باشد. هزینه تقریبی: 5 تا 12 یورو ماهانه. IP نمونه:
20.20.20.20
. - دسترسی SSH: از نرم افزاری مانند PuTTY (برای ویندوز) یا Terminal (برای مک/لینوکس) برای اتصال به سرورها استفاده کنید. اگر با SSH آشنا نیستید، نگران نباشید؛ کافی است دستورات را کپی و اجرا کنید.
- دانش پایه لینوکس: نیازی به تخصص نیست، اما آشنایی با دستورات ساده مانند نصب پکیج ها (
apt
) یا ویرایش فایل ها با ویرایشگرnano
مفید است. ما هر دستور را با جزئیات توضیح می دهیم. - دامنه اختیاری: اگر قصد دارید DNS را برای استفاده عمومی (مثلاً برای دوستان یا مشتریان) تنظیم کنید، یک دامنه مانند example.ir بخرید و بعداً آن را به IP سرور ایران متصل کنید. برای تست محلی، دامنه لازم نیست.
- ابزارها: یک کامپیوتر با دسترسی به اینترنت و یک ترمینال برای اجرای دستورات SSH.
زمان تقریبی: حدود 45 تا 90 دقیقه، بسته به سرعت اینترنت و تجربه شما.
اگر هنوز سرورها را تهیه نکرده اید، ابتدا آن ها را از ارائه دهندگان ذکرشده اجاره کنید. مطمئن شوید که اطلاعات ورود (IP، نام کاربری root، و رمز عبور یا کلید SSH) را دارید. برای راهنمایی بیشتر در انتخاب VPS، به راهنمای انتخاب سرور مجازی مراجعه کنید.
گام 1: تنظیم سرور مجازی آلمان برای DNS تحریم شکن
سرور آلمان نقش یک DNS resolver upstream را ایفا می کند، یعنی درخواست های DNS را از سرور ایران دریافت کرده و به یک سرور DNS عمومی معتبر مانند Google DNS (8.8.8.8) فوروارد می کند. از آنجا که IP این سرور در آلمان است و تحت تحریم های ایران نیست، resolve نام دامنه ها بدون محدودیت انجام می شود. ما از نرم افزار Unbound استفاده می کنیم، یک DNS resolver سبک، امن و متن باز که به راحتی قابل تنظیم است.
مراحل تنظیم سرور آلمان
- اتصال به سرور آلمان: با SSH به سرور متصل شوید:
ssh root@20.20.20.20
توضیح: این دستور شما را از طریق پروتکل SSH به سرور آلمان متصل می کند. اگر اولین بار است، ممکن است پیامی برای تأیید کلید SSH ببینید (کلمه
yes
را تایپ کنید و Enter بزنید). سپس رمز عبور root را وارد کنید یا اگر از کلید SSH استفاده می کنید، آن را قبلاً تنظیم کرده باشید. - بروزرسانی سیستم: سیستم عامل را بروز کنید تا از آخرین نسخه های نرم افزاری و وصله های امنیتی استفاده کنید:
apt update && apt upgrade -y
توضیح: دستور
apt update
لیست پکیج های موجود را از مخازن اوبونتو بروز می کند. دستورapt upgrade -y
همه پکیج های نصب شده را به آخرین نسخه ارتقا می دهد. پرچم-y
تأیید خودکار را فعال می کند تا نیازی به تایپ دستیyes
نباشد. - نصب Unbound: نرم افزار Unbound را نصب کنید:
apt install unbound -y
توضیح: Unbound یک سرور DNS resolver است که درخواست های DNS را پردازش کرده و به سرورهای دیگر (مانند Google DNS) فوروارد می کند. این نرم افزار سبک و ایده آل برای پروژه ما است.
- پیکربندی Unbound: فایل پیکربندی Unbound را با ویرایشگر
nano
باز کنید:nano /etc/unbound/unbound.conf
توضیح:
nano
یک ویرایشگر متن ساده در ترمینال است که کار با آن برای مبتدیان آسان است. فایلunbound.conf
تنظیمات اصلی Unbound را نگه می دارد. محتوای فعلی فایل را پاک کنید و کد زیر را جایگذاری کنید:server: # گوش دادن روی همه IPهای سرور (0.0.0.0 به معنای همه اینترفیس ها) interface: 0.0.0.0 # اجازه دسترسی از همه IPها (برای تست؛ بعداً محدود می کنیم) access-control: 0.0.0.0/0 allow # فعال کردن IPv4 و غیرفعال کردن IPv6 برای سادگی do-ip4: yes do-ip6: no # فعال کردن پروتکل های UDP و TCP برای DNS do-udp: yes do-tcp: yes # سطح لاگ (1 برای لاگ های پایه کافی است) verbosity: 1 # فوروارد کردن همه درخواست ها به Google DNS forward-zone: name: "." forward-addr: 8.8.8.8 # سرور DNS اصلی گوگل forward-addr: 8.8.4.4 # سرور DNS پشتیبان گوگل
توضیح کد:
interface: 0.0.0.0
: Unbound روی همه آدرس های IP سرور گوش می دهد تا درخواست های DNS را دریافت کند.access-control: 0.0.0.0/0 allow
: برای تست اولیه، به همه IPها اجازه می دهد به سرور متصل شوند. در گام های بعدی، این را به IP سرور ایران محدود می کنیم.do-ip4: yes
وdo-ip6: no
: فقط از IPv4 استفاده می کنیم تا تنظیمات ساده تر باشد.do-udp: yes
وdo-tcp: yes
: DNS معمولاً از UDP استفاده می کند، اما TCP برای درخواست های بزرگ تر (مثل DNSSEC) فعال است.verbosity: 1
: لاگ های پایه را فعال می کند تا در صورت بروز مشکل، عیب یابی راحت تر باشد.forward-zone
: این بخش مشخص می کند که همه درخواست های DNS (برای همه دامنه ها، با"."
) به سرورهای Google DNS (8.8.8.8 و 8.8.4.4) فوروارد شوند.
برای ذخیره فایل در
nano
: کلیدهایCtrl+O
را فشار دهید، Enter بزنید، سپسCtrl+X
را برای خروج فشار دهید. - ری استارت Unbound: برای اعمال تغییرات:
systemctl restart unbound
توضیح: این دستور سرویس Unbound را دوباره راه اندازی می کند تا تنظیمات جدید بارگذاری شوند.
- تست اولیه: ابزار
dnsutils
را نصب کنید تا بتوانید DNS را تست کنید:apt install dnsutils -y
سپس تست کنید:
dig example.com @localhost
توضیح: دستور
dig
یک ابزار استاندارد برای تست DNS است.@localhost
یعنی از Unbound روی همین سرور استفاده کن. اگر خروجی شامل آدرس IP سایتexample.com
(مثلاً 93.184.216.34) باشد و خطایی ندیدید، سرور آلمان به درستی کار می کند.
IP سرور آلمان (20.20.20.20
) را یادداشت کنید، چون در گام بعدی به آن نیاز دارید.
گام 2: تنظیم سرور مجازی ایران برای DNS محلی
سرور ایران به عنوان یک DNS resolver محلی عمل می کند که کاربران ایرانی به آن متصل می شوند. این سرور درخواست های DNS را دریافت کرده و به سرور آلمان فوروارد می کند. این روش سرعت دسترسی کاربران را به دلیل نزدیکی سرور ایران افزایش می دهد، اما resolve واقعی با IP آلمانی انجام می شود که تحریم ها را دور می زند.
مراحل تنظیم سرور ایران
-
- اتصال به سرور ایران: با SSH به سرور متصل شوید:
ssh root@10.10.10.10
توضیح: این دستور شما را به سرور ایران متصل می کند. مشابه گام قبل، رمز عبور یا کلید SSH را وارد کنید.
- بروزرسانی سیستم:
apt update && apt upgrade -y
توضیح: این دستور اطمینان می دهد که سرور شما از آخرین پکیج ها و وصله های امنیتی استفاده می کند.
- نصب Unbound:
apt install unbound -y
توضیح: Unbound را روی سرور ایران نصب می کنیم، اما این بار به جای Google DNS، درخواست ها به سرور آلمان فوروارد می شوند.
- پیکربندی Unbound:
nano /etc/unbound/unbound.conf
محتوای زیر را جایگذاری کنید (جای
20.20.20.20
را با IP واقعی سرور آلمان جایگزین کنید):server: # گوش دادن روی همه IPها interface: 0.0.0.0 # اجازه دسترسی از همه IPها (برای تست) access-control: 0.0.0.0/0 allow do-ip4: yes do-ip6: no do-udp: yes do-tcp: yes verbosity: 1 # فوروارد به سرور آلمان forward-zone: name: "." forward-addr: 20.20.20.20
توضیح کد:
interface: 0.0.0.0
: Unbound روی همه آدرس های IP سرور گوش می دهد.access-control: 0.0.0.0/0 allow
: برای تست، همه IPها می توانند متصل شوند.do-ip4: yes
وdo-ip6: no
: فقط از IPv4 استفاده می کنیم.do-udp: yes
وdo-tcp: yes
: پروتکل های DNS فعال هستند.verbosity: 1
: لاگ های پایه برای عیب یابی.forward-addr: 20.20.20.20
: درخواست ها به سرور آلمان فوروارد می شوند.
برای ذخیره:
Ctrl+O
، Enter، سپسCtrl+X
.
- اتصال به سرور ایران: با SSH به سرور متصل شوید:
- ری استارت Unbound:
systemctl restart unbound
توضیح: این دستور تنظیمات جدید را اعمال می کند.
- تست محلی:
apt install dnsutils -y dig example.com @localhost
توضیح: این تست بررسی می کند که سرور ایران درخواست ها را به درستی به آلمان فوروارد می کند. اگر خروجی شامل IP سایت باشد و زمان پاسخ (QUERY TIME) منطقی (زیر 200 میلی ثانیه) باشد، تنظیمات درست است.
گام 3: تنظیم فایروال برای امنیت DNS
برای محافظت از سرورها در برابر دسترسی های غیرمجاز، باید فایروال را تنظیم کنیم. ما از ufw (Uncomplicated Firewall) استفاده می کنیم که ابزاری ساده برای مدیریت فایروال در اوبونتو است.
مراحل تنظیم فایروال
- نصب و تنظیم UFW: روی هر دو سرور (ایران و آلمان):
apt install ufw -y ufw allow ssh ufw allow 53/udp ufw allow 53/tcp ufw enable
توضیح:
apt install ufw -y
: فایروال UFW را نصب می کند.ufw allow ssh
: پورت 22 (SSH) را برای مدیریت سرور باز نگه می دارد.ufw allow 53/udp
وufw allow 53/tcp
: پورت 53 برای DNS (UDP برای درخواست های معمولی و TCP برای درخواست های بزرگ تر) باز می شود.ufw enable
: فایروال را فعال می کند. اگر پیغام تأیید دیدید،y
را وارد کنید.
- محدود کردن دسترسی در سرور آلمان: فایل
/etc/unbound/unbound.conf
را در سرور آلمان ویرایش کنید و این خط را به بخشserver
اضافه کنید:access-control: 10.10.10.10/32 allow
توضیح: این خط دسترسی را فقط به IP سرور ایران (
10.10.10.10
) محدود می کند./32
یعنی فقط این IP خاص اجازه دارد. سپس Unbound را ری استارت کنید:systemctl restart unbound
برای سرور ایران، اگر می خواهید فقط IPهای خاصی (مثلاً شبکه خانگی شما) به DNS متصل شوند، می توانید access-control
مشابهی تنظیم کنید، اما برای تست اولیه، آن را باز نگه دارید.
گام 4: استفاده از DNS تحریم شکن ایرانی
پس از تنظیم سرورها، کاربران باید DNS دستگاه خود را به IP سرور ایران (10.10.10.10
) تغییر دهند تا از DNS تحریم شکن استفاده کنند. این کار ساده است:
- ویندوز: به Control Panel > Network and Sharing Center > Change adapter settings بروید. روی اتصال فعال (Wi-Fi یا Ethernet) راست کلیک کنید > Properties > Internet Protocol Version 4 (TCP/IPv4) > Properties > گزینه “Use the following DNS server addresses” را انتخاب کنید و
10.10.10.10
را در Preferred DNS Server وارد کنید. - اندروید: به Settings > Network & internet > Wi-Fi بروید. روی شبکه فعال ضربه بزنید و نگه دارید > Modify network > Show advanced options > IP settings را به Static تغییر دهید > DNS 1 را به
10.10.10.10
تنظیم کنید. - iOS: به Settings > Wi-Fi بروید. روی i کنار شبکه فعال ضربه بزنید > به بخش DNS بروید > Manual را انتخاب کنید > Add Server و
10.10.10.10
را اضافه کنید.
بعد از تنظیم DNS، سایت هایی که به دلیل فیلترینگ DNS در ایران resolve نمی شدند (مثل twitter.com)، باید آدرس IP صحیح را دریافت کنند. مرورگر خود را باز کنید و یک سایت تحریم شده را تست کنید.
گام 5: تست و عیب یابی DNS تحریم شکن
برای اطمینان از عملکرد صحیح DNS تحریم شکن ایرانی، تست زیر را انجام دهید:
dig blocked-site.com @10.10.10.10
توضیح: اگر ابزار dig
روی دستگاه شما نیست، از ابزارهای آنلاین DNS checker (مانند dnschecker.org) استفاده کنید یا تنظیمات DNS را در مرورگر تست کنید. اگر IP صحیح سایت برگردانده شد، DNS شما کار می کند.
دستورات عیب یابی
اگر مشکلی پیش آمد، این دستورات به شما کمک می کنند:
- چک وضعیت Unbound:
systemctl status unbound
توضیح: بررسی می کند که سرویس Unbound فعال است. اگر غیرفعال است، با
systemctl start unbound
آن را فعال کنید. - بررسی لاگ ها:
journalctl -u unbound -xe
توضیح: لاگ های اخیر Unbound را نشان می دهد. خطاهایی مانند مشکلات اتصال یا پیکربندی را بررسی کنید.
- تست پورت 53:
telnet 10.10.10.10 53
توضیح: بررسی می کند که پورت DNS باز است. اگر خطای “connection refused” دیدید، فایروال یا تنظیمات شبکه را چک کنید. ابتدا
apt install telnet -y
را اجرا کنید اگر telnet نصب نیست. - چک اتصال بین سرورها: از سرور ایران:
dig example.com @20.20.20.20
توضیح: بررسی می کند که سرور ایران به آلمان متصل است.
- تست اینترنت سرور آلمان:
ping 8.8.8.8
توضیح: اگر پینگ کار نکرد، ممکن است سرور آلمان به اینترنت دسترسی نداشته باشد. با ارائه دهنده VPS تماس بگیرید.
- ریست فایروال:
ufw reset
توضیح: فایروال را ریست می کند تا بتوانید دوباره تنظیم کنید.
- تست مستقیم Google DNS: برای تشخیص مشکل، موقتاً
forward-addr
در سرور ایران را به8.8.8.8
تغییر دهید و تست کنید.
نکات پیشرفته برای بهبود DNS تحریم شکن
برای حرفه ای تر کردن DNS تحریم شکن ایرانی، این نکات را در نظر بگیرید:
- DNS over TLS: برای رمزنگاری درخواست ها و افزایش امنیت، در فایل
unbound.conf
سرور آلمان، این خطوط را اضافه کنید:forward-tls-upstream: yes forward-addr: 8.8.8.8@853
توضیح: این تنظیم درخواست ها را از طریق پروتکل TLS رمزنگاری می کند.
- دامنه عمومی: یک دامنه بخرید و رکورد A را به
10.10.10.10
تنظیم کنید تا کاربران بدون نیاز به IP از DNS استفاده کنند. - ترکیب با VPN: برای دور زدن کامل تحریم ها، این DNS را با یک VPN یا پروکسی ترکیب کنید.
- بهینه سازی سرعت: به جای Google DNS، از Cloudflare DNS (1.1.1.1) استفاده کنید که معمولاً سریع تر است.
جمع بندی و فراخوان به اقدام
این آموزش جامع شما را برای ساخت یک DNS تحریم شکن ایرانی با استفاده از سرور مجازی ایران و سرور مجازی آلمان هدایت می کند. با دنبال کردن مراحل و دستورات عیب یابی، می توانید یک DNS محلی سریع و کارآمد راه اندازی کنید. آیا این آموزش برای شما مفید بود؟ نظرات خود را در بخش کامنت ها بنویسید یا برای آموزش های بیشتر درباره لینوکس و شبکه، به سایت ما سر بزنید!