راه اندازی چیزی مانند Shekan
همانطور که میدانید به علت تحریمها بسیاری از سایتها دسترسی به ایرانیان را مسدود کردند اکثر ایرانیها از سرویسی به نام شکن استفاده میکنند.
نسخه رایگان این سرویس بسیار کند می باشد. و از این رو شما در این آموزش می توانید به راحتی یک DNS Forwarding شخصی راه اندازی کنید. به این سرویس Smart DNS Proxy گفته میشود که درخواستهای DNS را به یک سرور DNS دیگر ارسال میکند.
در ابتدا با مفاهیم اولیه آشنا خواهیم شد.
سیستم DNS یکی از اجزای حیاتی اینترنت است که به کاربران کمک میکند تا به راحتی به وبسایتها و خدمات آنلاین دسترسی پیدا کنند. در ادامه جزئیات بیشتری در مورد نحوه عملکرد و ساختار DNS آورده شده است:
۱. DNS چگونه کار میکند؟
هنگامی که یک کاربر یک آدرس وب (مانند www.example.com) ) را در مرورگر وارد میکند، مراحل زیر طی میشود:
- درخواست DNS (DNS Query)
مرورگر ابتدا یک درخواست DNS ارسال میکند تا نام دامنه وارد شده به آدرس IP متناظر آن تبدیل شود. - جستجوی Recursive
این درخواست به سرور DNS محلی معمولاً توسط ISP یا شبکه محلی کاربر ارسال میشود که به صورت Recursive عمل میکند. اگر سرور DNS محلی آدرس را نداشته باشد، شروع به پرسیدن از سرورهای بالادستی میکند. - سرور ریشه (Root Server)
سرور DNS محلی ابتدا با یکی از سرورهای ریشه تماس میگیرد که میتواند درخواست را به دامنه سطح بالای مربوطه مانند .comیا .org هدایت کند. - سرور دامنه سطح بالا (TLD)
پس از آن، درخواست به سرورهای TLD منتقل میشود که مسئول نگهداری اطلاعات درباره دامنههای سطح دوم هستند مثل example.com - سرور DNS معتبر (Authoritative DNS Server)
در نهایت، درخواست به سرور DNS معتبر میرسد که اطلاعات دقیق مربوط به دامنه مورد نظر را دارد و آدرس IP متناظر را به سرور محلی برمیگرداند. - بازگشت به مرورگر
پس از دریافت آدرس IP، سرور DNS محلی آن را به مرورگر کاربر ارسال میکند و مرورگر با استفاده از این IP، به وبسایت متصل میشود.
۲. انواع سرورهای DNS
- سرورهای Recursive Resolver
این سرورها وظیفه دارند درخواستهای DNS کاربران را دریافت و نتایج را به مرورگرها بازگردانند. - (Root Servers
مجموعه سرور اصلی که اطلاعات مربوط به دامنههای سطح بالای اینترنت مانند .com یا .net را نگه میدارند. - سرورهای TLD (Top-Level Domain)
این سرورها اطلاعات دامنههای سطح دوم مانند example.comرا نگهداری میکنند. - سرورهای معتبر (Authoritative DNS Servers)
این سرورها آدرسهای IP دقیق و اطلاعات مربوط به دامنهها را ارائه میدهند.
۳. کشینگ (Caching)
سرورهای DNS برای افزایش کارایی، نتایج جستجوهای قبلی را برای مدت معینی کش میکنند. این فرآیند باعث میشود درخواستهای مکرر به دامنههای مشابه سریعتر پاسخ داده شوند و فشار روی سرورهای DNS اصلی کاهش یابد.
۴. امنیت DNS
سیستم DNS میتواند هدف حملات مختلفی قرار گیرد، از جمله حملات DNS Spoofing یا DNS Cache Poisoning، که طی آنها مهاجمان سعی میکنند پاسخهای جعلی به درخواستهای DNS ارائه دهند تا کاربران را به وبسایتهای مخرب هدایت کنند. برای مقابله با این تهدیدات، از تکنولوژیهایی مانند DNSSEC (Domain Name System Security Extensions) استفاده میشود که صحت و امنیت درخواستهای DNS را تضمین میکند.
۵. پروتکلهای مرتبط با DNS
- DNS over HTTPS (DoH)
یک پروتکل جدید است که درخواستهای DNS را از طریق پروتکل HTTPS رمزنگاری میکند تا امنیت و حریم خصوصی کاربران را افزایش دهد. - DNS over TLS (DoT)
این پروتکل مشابه DoH است اما از پروتکل TLS برای رمزنگاری استفاده میکند.
سیستم DNS پایه و اساس عملکرد اینترنت است و بدون آن، دسترسی به وبسایتها به شکل کنونی امکانپذیر نمیبود.
چرا DNS به لایههای امنیتی اضافی نیاز دارد؟
DNS دفترچه تلفن اینترنت است؛ مفسرهای DNS نامهای دامنهای که برای انسانها قابلخواندن هستند را به آدرسهای IP که برای ماشینها قابلفهم است، ترجمه میکنند. بهطور پیشفرض، درخواستها و پاسخهای DNS بهصورت متن ساده (از طریق UDP) ارسال میشوند، به این معنا که این اطلاعات میتوانند توسط شبکهها، ارائهدهندگان خدمات اینترنت (ISP)، یا هر کسی که توانایی نظارت بر انتقالات را دارد، مشاهده شوند. حتی اگر یک وبسایت از HTTPS استفاده کند، باز هم درخواست DNS برای دسترسی به آن وبسایت در معرض دید قرار دارد.
این عدم وجود حریم خصوصی تأثیر زیادی بر امنیت دارد و در برخی موارد، بر حقوق بشر نیز تأثیر میگذارد. اگر درخواستهای DNS خصوصی نباشند، دولتها میتوانند با سهولت بیشتری اینترنت را سانسور کنند و مهاجمان میتوانند رفتار آنلاین کاربران را ردیابی کنند.
یک درخواست عادی و رمزنگارینشده DNS را میتوان به یک کارتپستال ارسالشده از طریق پست تشبیه کرد: هر کسی که با این پست سر و کار دارد ممکن است نگاهی به متن نوشتهشده در پشت کارتپستال بیندازد، بنابراین ارسال اطلاعات حساس یا خصوصی روی یک کارتپستال ایده خوبی نیست.
DNS over TLS و DNS over HTTPS دو استانداردی هستند که برای رمزنگاری ترافیک متنی DNS توسعه یافتهاند تا از دسترسی احزاب مخرب، تبلیغکنندگان، ISP ها و دیگران به این دادهها جلوگیری کنند. با ادامه این تشبیه، این استانداردها تلاش میکنند تا برای همه کارتپستالهایی که از طریق پست ارسال میشوند، یک پاکت قرار دهند تا هر کسی بتواند بدون نگرانی از اینکه کسی در حال جاسوسی از کارهای اوست، یک کارتپستال ارسال کند.
DNS over TLS (یا DoT) یک استاندارد برای رمزنگاری درخواستهای DNS است تا آنها را ایمن و خصوصی نگه دارد. DoT از همان پروتکل امنیتی TLS استفاده میکند که وبسایتهای HTTPS برای رمزنگاری و احراز هویت به کار میگیرند. (TLS همچنین به عنوان “SSL” شناخته میشود). DoT به پروتکل UDP که برای درخواستهای DNS استفاده میشود، رمزنگاری TLS را اضافه میکند. علاوه بر این، DoT تضمین میکند که درخواستها و پاسخهای DNS توسط حملات در مسیر (on-path attacks) دستکاری یا جعل نمیشوند.
DNS over HTTPS (DoH) یک جایگزین برای DNS over TLS (DoT) است. در DoH، درخواستها و پاسخهای DNS رمزنگاری میشوند، اما بهجای ارسال مستقیم از طریق UDP، از پروتکلهای HTTP یا HTTP/2 استفاده میشود. مشابه DoT، DoH نیز تضمین میکند که مهاجمان نمیتوانند ترافیک DNS را جعل یا تغییر دهند. از دیدگاه یک مدیر شبکه، ترافیک DoH شبیه به دیگر ترافیکهای HTTPS (مانند تعاملات کاربر با وبسایتها و برنامههای وب) به نظر میرسد.
در فوریه ۲۰۲۰، مرورگر Mozilla Firefox بهصورت پیشفرض DoH را برای کاربران ایالات متحده فعال کرد. درخواستهای DNS از مرورگر Firefox بهصورت رمزنگاریشده از طریق DoH ارسال میشوند و به سرورهای Cloudflare یا NextDNS میروند. چندین مرورگر دیگر نیز از DoH پشتیبانی میکنند، اگرچه بهطور پیشفرض فعال نیست.
آیا HTTPS برای رمزنگاری از TLS استفاده نمیکند؟
بله، HTTPS از پروتکل TLS (که قبلاً به عنوان SSL شناخته میشد) برای رمزنگاری ارتباطات استفاده میکند. در واقع، DoH از همان پروتکلهای HTTP و TLS برای رمزنگاری و ارسال امن درخواستهای DNS استفاده میکند. بنابراین، ترافیک DNS در DoH از طریق HTTPS منتقل میشود که خود از TLS برای امنیت استفاده میکند.
نصب Dnsmasq:
سرویس DNSmasq قابلیتهای زیادی از جمله FTP Server, DHCP server و حتی DNS Forwarder دارد که ما از قابلیت DNS forwarder آن برای سال دیاناس استفاده میکنیم.
در ابتدا یک سرور در خارج از ایران که آی پی آن تحریم نباشد خریداری کرده و dnsmasq روی آن نصب میکنیم.
در بعضی از نسخههای لینوکس مانند اوبونتو سرویسی به نام systemd-resolved به صورت پیش فرض نصب و در حال اجراست. که با دستورات زیر آن را غیر فعال میکنیم.
$ sudo systemctl disable systemd-resolved & sudo systemctl stop systemd-resolved & sudo systemctl mask systemd-resolved
سپس فایل resolv.conf را با استفاده از دستورات زیر حذف با dnsهای گوگل آن را دوباره ایجاد میکنیم.
$ sudo rm /etc/resolv.conf & sudo echo nameserver 8.8.8.8 | tee /etc/resolv.conf
نصب روی اوبونتو یا سیستم عاملهای دبیان بیس
$ sudo apt install dnsmasq -y
نصب روی راکی یا سیستم عاملهای رد هت بیس.
$ sudo yum install dnsmasq -y
فایل تنظیمات dnsmasq در /etc/dnsmasq.conf قرار دارد و هرگونه فایلی در /etc/dnsmasq.d که پسوند .conf داشته باشد فایل تنظیمات اصلی dnsmasq.conf را نادیده میگیرد.
سپس شما میتوانید تنظیمات را یا در داخل فایل dnsmasq.conf قرار دهید و یا برای داشتن محیطی مشخص و تمیز یک فایل با نام دلخواه در مسیر /etc/dnsmasq.d/ با پسوند conf ایجاد کنید. و تنظیمات خود را در آن قرار دهید.
بنابراین ما در این مسیر یک فایلی به نام tahrim.conf با دستور زیر می سازیم
$ sudo touch /etc/dnsmasq.d/tahrim.conf
و سپس با ویرایشگر متنی دلخواه آن را باز میکنیم. که من اینجا از vim استفاده میکنم
$ sudo vim /etc/dnsmasq.d/tahrim.conf
برای هر سایتی که میخواهیم حریمها را برای آن دور بزنیم خط زیر را اضافه میکنیم. به عنوان مثال برای افزودن سایت docker.com عبارت زیر را در این فایل وارد میکنیم.
server=/docker.com/8.8.8.8
که این به این معناست که درخواستها به سایت docker.com از طریق dns های گوگل ارسال خواهد شد. به همین ترتیب میتوانید سایتهای دیگر را اضافه بکنید. برای اضافه کردن سایت های دیگر میتوانید به طور کلی عبارت زیر را اضافه کنید.
server=1.1.1.1
عبارت بالا به این معناست که درخواستها به سایتهای دیگر ز طریق dnsهای cloudflare ارسال خواهد شد.
مچنین میتوانید با اضافه کردن عبارت زیر کش DNS را غیر فعال کنید .
cache-size=0
پس از آن فایل را ذخیره کنید و سرویس dnsmasq را ری استارت و فعال کنید.
$ sudo systemctl restart dnsmasq
$ sudo systemctl enable dnsmasq
به همین راحتی حالا میتوانید از آیپی سرور خود به عنوان DNS سرور روی سیستم عامل خود استفاده کنید. در صورتی که از مک یا ویندوز استفاده میکنید به تنظیمات شبکه بروید و آی پی سرور را در قسمت تنظیمات dns قرار دهید.
در صورتی که سیستم ادمین هستید و قصد دارید روی لینوکس خود سرویسی مثل داکر را نصب کنید. میتوانید آی پی سرور خود را در فایل /etc/resolv.conf قرار دهید.
برای دیدن ادامه این آموزش جذاب به لینک زیر مراجعه کنید: https://youtu.be/dDpFUX9WzvA