میخوایم در مورد DNS حرف بزنیم. فکر کن اینترنت یه شهر خیلی بزرگه و تو میخوای بری خونه دوستت. آدرس خونه دوستت رو بلدی، مثلا «خیابون آزادی، کوچه شماره ۵، پلاک ۱۰». این میشه اسم دامنه، مثل www.example.com
. ولی پستچی برای رسوندن نامه به این آدرس نوشتاری یه چیزی کم داره، اون به یه کد پستی دقیق احتیاج داره، یه سری عدد مثل 192.168.1.1
. این عددها همون آدرسهای IP هستن.
حالا DNS دقیقا کار همون اداره پستی رو میکنه که آدرسهای نوشتاری رو به کد پستیهای عددی تبدیل میکنه. DNS مخفف Domain Name System یا سیستم نام دامنه است. به زبان ساده، دفترچه تلفن کل اینترنته. ما آدمها با اسمها راحتتریم، مثل nytimes.com
یا espn.com
، ولی کامپیوترها و مرورگرها با عددها، یعنی آدرسهای IP، کار میکنن. DNS میاد این وسط و اسمها رو به عددها ترجمه میکنه تا مرورگر بتونه بفهمه باید به کجا وصل بشه و صفحه مورد نظر ما رو بیاره بالا.
هر دستگاهی که به اینترنت وصل میشه، از گوشی هوشمندت گرفته تا لپتاپ و سرورهای غولپیکر سایتهای فروشگاهی، یه آدرس IP منحصر به فرد داره. این آدرس برای پیدا کردن اون دستگاه تو شبکه جهانی لازمه. بدون DNS، ما مجبور بودیم یه عالمه عدد مثل 192.168.1.1
(که مربوط به پروتکل IPv4 هست) یا حتی رشتههای پیچیدهتر جدید مثل 2400:cb00:2048:1::c629:d7a2
(مربوط به IPv6) رو حفظ کنیم. واقعا کار سختی میشد، نه؟ پس DNS این زحمت رو از دوش ما برداشته.
وقتی تو آدرس یه سایت رو توی مرورگرت تایپ میکنی، یه فرایندی به اسم «تفکیک DNS» یا DNS resolution اتفاق میفته. این فرایند، اسم میزبان (hostname) مثل www.example.com
رو به یه آدرس IP قابل فهم برای کامپیوتر، مثل 192.168.1.1
، تبدیل میکنه. کل این ماجرا پشت صحنه اتفاق میفته و تو به عنوان کاربر، به جز وارد کردن آدرس سایت، کار دیگهای انجام نمیدی.
سفر یک درخواست DNS: از کامپیوتر تو تا قلب اینترنت
برای اینکه بفهمیم این ترجمه چطوری انجام میشه، باید با بازیگرای اصلی این صحنه آشنا بشیم. چند نوع سرور مختلف دست به دست هم میدن تا این کار انجام بشه. بیا با هم سفر یه درخواست DNS رو مرحله به مرحله دنبال کنیم. فرض میکنیم که هیچ اطلاعاتی از قبل روی کامپیوتر یا توی شبکه ذخیره نشده (کش نشده) تا تمام مراحل رو ببینیم. معمولا این فرایند ۸ مرحله داره:
- شروع ماجرا از مرورگر تو: تو آدرس
example.com
رو توی مرورگرت میزنی و اینتر رو فشار میدی. این درخواست اول از همه به سمت یه سرور خاص به اسم DNS Recursive Resolver میره. این ریزالور معمولا توسط شرکت خدمات اینترنتی تو (ISP) فراهم میشه. - صحبت ریزالور با سرور ریشه (Root Server): ریزالور مثل یه کارآگاه عمل میکنه. اول از همه میره سراغ سرور ریشه یا Root Nameserver. این سرورهای ریشه، پدر بزرگهای کل سیستم DNS هستن و بالای هرم قرار دارن. سرور ریشه آدرس کامل
example.com
رو نمیدونه، ولی میتونه کارآگاه ما رو راهنمایی کنه. بهش میگه: «من نمیدونمexample.com
کجاست، ولی میدونم سرورهایی که دامنههای.com
رو مدیریت میکنن کجان. برو از اونا بپرس». و آدرس سرور TLD مربوط به.com
رو بهش میده. - مراجعه به سرور دامنه سطح بالا (TLD Server): حالا ریزالور میره سراغ سرور دامنه سطح بالا یا Top-Level Domain (TLD) Nameserver. این سرورها مسئول دامنههایی مثل
.com
،.org
،.net
و غیره هستن. ریزالور از سرور.com
میپرسه: «آدرسexample.com
رو داری؟» سرور TLD هم جواب میده: «نه دقیقا، ولی میدونم کدوم سرور مسئول اصلی دامنههایexample.com
هست. این آدرسش، برو از خودش بپرس». این سرور مسئول، همون سرور نام معتبر یا Authoritative Nameserver هست. - رسیدن به منبع اصلی؛ سرور نام معتبر (Authoritative Nameserver): بالاخره ریزالور به آخرین ایستگاه میرسه. سرور نام معتبر، سروریه که تمام اطلاعات و رکوردهای مربوط به دامنه
example.com
رو توی خودش ذخیره کرده. این سرور دیگه کسی رو پاس نمیده و جواب نهایی رو داره. ریزالور ازش آدرس IP دامنهexample.com
رو میپرسه و این سرور، آدرس IP دقیق، مثلا93.184.216.34
، رو به ریزالور میده. - بازگشت پاسخ به ریزالور: حالا که ریزالور جواب رو پیدا کرده، یعنی آدرس IP رو به دست آورده، اون رو به کامپیوتر تو برمیگردونه.
- تحویل آدرس IP به مرورگر: کامپیوتر تو (به طور دقیقتر، سیستم عاملت) این آدرس IP رو از ریزالور میگیره و به مرورگری که درخواست رو شروع کرده بود، تحویل میده.
- ارسال درخواست HTTP به سرور سایت: حالا مرورگر دیگه اسم دامنه رو بیخیال شده و آدرس IP رو داره. یه درخواست HTTP مستقیم به اون آدرس IP میفرسته و میگه: «سلام، لطفا محتوای صفحه
example.com
رو برای من بفرست». - دریافت محتوای سایت: سروری که سایت
example.com
روی اون قرار داره (و حالا ما با آدرس IP بهش وصلیم)، محتوای صفحه وب رو برای مرورگر تو میفرسته و تو میتونی سایت رو ببینی.
این هشت مرحله در کسری از ثانیه اتفاق میفته. البته اگه اطلاعات کش شده باشن، خیلی از این مراحل حذف میشن و سرعت کار بالاتر میره که در ادامه در موردش حرف میزنیم.
بازیگران اصلی صحنه DNS چه کسانی هستن؟
توی سفر بالا با چند تا اسم آشنا شدیم. بیا یه بار دیگه دقیقتر ببینیم هر کدوم چیکار میکنن. چهار نوع سرور اصلی توی این فرایند دخیل هستن:
- DNS Recursive Resolver (تفکیک کننده بازگشتی): این اولین ایستگاه درخواست توئه. کارش اینه که درخواست رو از کلاینت (کامپیوتر تو) بگیره و مثل یه کارآگاه سمج، اینقدر بگرده تا جواب نهایی (آدرس IP) رو پیدا کنه. این سرور خودش جواب رو نمیدونه، ولی بلده از کی بپرسه. معمولا ISP تو این سرور رو در اختیارت میذاره.
- Root Nameserver (سرور نام ریشه): این سرورها در راس هرم DNS قرار دارن. کارشون اینه که درخواستها رو به سمت سرور TLD درست هدایت کنن. در کل دنیا ۱۳ گروه سرور ریشه وجود داره که برای پایداری اینترنت حیاتی هستن.
- TLD Nameserver (سرور نام دامنه سطح بالا): این سرورها مسئول یه بخش خاص از دامنهها هستن. مثلا یه سرور TLD برای همه دامنههای
.com
وجود داره، یکی برای همه دامنههای.org
و همینطور الی آخر. کار این سرورها اینه که درخواست رو به سمت سرور نام معتبر (Authoritative) دامنه مورد نظر هدایت کنن. - Authoritative Nameserver (سرور نام معتبر): این آخرین حلقه زنجیره است. این سرور اطلاعات کامل و نهایی رکوردهای DNS یه دامنه خاص رو داره. وقتی درخواست به اینجا میرسه، جواب قطعی پیدا میشه. این سرور دیگه نیاز نداره از کس دیگهای سوال بپرسه و خودش «منبع حقیقت» برای اون دامنه است.
یه نکته مهم: گاهی اوقات ما دنبال آدرس یه زیر دامنه هستیم، مثلا blog.cloudflare.com
. در این حالت، یه سرور نام دیگه هم به این زنجیره اضافه میشه که بعد از سرور نام معتبر اصلی قرار میگیره و مسئول ذخیره رکوردهای اون زیر دامنه خاص (مثلا رکورد CNAME) هست.
تفاوت بین سرویسهای DNS
شاید اسمهایی مثل Google DNS یا OpenDNS به گوشت خورده باشه. اینها سرویسهای DNS Recursive Resolver عمومی هستن. یعنی شرکتهایی مثل گوگل یا سیسکو (صاحب OpenDNS) یه سری سرور ریزالور قدرتمند و سریع در سراسر دنیا راه انداختن که هر کسی میتونه ازشون استفاده کنه. مثلا آدرس DNS گوگل 8.8.8.8
هست. تو میتونی تنظیمات شبکه کامپیوترت رو طوری تغییر بدی که به جای استفاده از ریزالور ISP، از این سرویسها استفاده کنی.
اما این سرویسها با کاری که شرکتی مثل Cloudflare انجام میده، یه فرق اساسی دارن. کلادفلر علاوه بر ارائه ریزالور عمومی، خودش میزبان بخشی از زیرساختهای اصلی اینترنت هم هست. مثلا کلادفلر در میزبانی شبکه F-root که یکی از همون سرورهای ریشه اصلی اینترنه، نقش داره. این سرورهای ریشه روزانه میلیاردها درخواست اینترنتی رو مدیریت میکنن.
انواع درخواستها (Query) در دنیای DNS
توی فرایند پیدا کردن آدرس IP، سه نوع درخواست مختلف ممکنه رد و بدل بشه:
- Recursive Query (درخواست بازگشتی): این همون درخواستیه که کامپیوتر تو به ریزالور میفرسته. معنیش اینه: «لطفا این آدرس رو برام پیدا کن و جواب کامل رو بهم بده. یا بگو همچین آدرسی وجود نداره. خودت همه کارها رو بکن و من منتظر جواب نهایی میمونم».
- Iterative Query (درخواست تکراری): این نوع درخواست بین سرورهای DNS رد و بدل میشه. مثلا وقتی ریزالور از سرور ریشه سوال میپرسه، یه درخواست تکراری میفرسته. سرور ریشه با بهترین جوابی که داره (آدرس سرور TLD) پاسخ میده و میگه: «من جواب کامل رو ندارم، ولی برو از این یکی بپرس». ریزالور این فرایند رو اینقدر تکرار میکنه تا به جواب برسه.
- Non-Recursive Query (درخواست غیر بازگشتی): این درخواست زمانی اتفاق میفته که سرور DNS جواب رو از قبل توی حافظه خودش (کش) داشته باشه. در این حالت دیگه نیازی به پرس و جو از بقیه سرورها نیست و مستقیم جواب رو میده.
کش کردن (Caching): راز سرعت بالای DNS
همونطور که گفتیم، اگه قرار بود برای هر بار باز کردن یه سایت، تمام اون ۸ مرحله طی بشه، سرعت اینترنت خیلی پایین میومد. اینجا مفهومی به اسم کش کردن وارد بازی میشه. کش کردن یعنی ذخیره موقت دادهها در یه جای نزدیکتر به کاربر تا دفعه بعدی که به اون دادهها نیاز بود، سریعتر بهشون دسترسی پیدا کنیم. اطلاعات DNS در چند جا میتونن کش بشن:
- کش مرورگر (Browser Caching): مرورگرهای مدرن، خودشون یه حافظه پنهان برای رکوردهای DNS دارن. وقتی یه آدرس رو وارد میکنی، مرورگر اول کش خودش رو نگاه میکنه. اگه آدرس IP اونجا بود، دیگه هیچ درخواستی به بیرون نمیفرسته و مستقیم به همون IP وصل میشه. این سریعترین حالت ممکنه. مثلا در مرورگر کروم میتونی با رفتن به آدرس
chrome://net-internals/#dns
وضعیت کش DNS مرورگرت رو ببینی. - کش سیستم عامل (Operating System Caching): اگه جواب توی کش مرورگر نبود، درخواست به سیستم عامل (مثلا ویندوز یا مک) میرسه. سیستم عامل هم برای خودش یه کش DNS داره که بهش میگن Stub Resolver یا DNS Client. اونجا رو هم چک میکنه. اگه جواب بود، به مرورگر برمیگردونه.
- کش ریزالور (Recursive Resolver Caching): اگه توی کامپیوتر تو هم جوابی پیدا نشد، درخواست به سرور Recursive Resolver (همونی که معمولا مال ISP هست) فرستاده میشه. این سرور هم یه کش خیلی بزرگ و قدرتمند داره. وقتی یه بار آدرس
example.com
رو پیدا میکنه، اون رو توی کش خودش ذخیره میکنه. دفعه بعدی که تو یا هر کس دیگهای که از همون ISP سرویس میگیره، این آدرس رو درخواست کنه، ریزالور جواب رو از کش خودش میده و دیگه نیازی به پرس و جو از سرورهای ریشه و TLD نیست.
مدت زمان اعتبار کش چقدره؟
هر رکورد DNS یه مقداری به اسم TTL یا Time-to-Live داره. این مقدار که به ثانیه است، مشخص میکنه که اطلاعات اون رکورد تا چه مدت میتونه توی کش بمونه. مثلا اگه TTL یه رکورد ۳۶۰۰ ثانیه باشه، یعنی بعد از یک ساعت، کش منقضی میشه و دفعه بعدی که اون آدرس درخواست بشه، سرورها باید دوباره کل فرایند پرس و جو رو از اول انجام بدن تا اطلاعات بهروز رو بگیرن. این TTL توسط مدیر اون دامنه تنظیم میشه.
نگاهی عمیقتر به تاریخچه و ساختار DNS
ایده استفاده از یه اسم ساده به جای آدرس عددی، به دوران آرپانت (ARPANET)، یعنی جد بزرگ اینترنت امروزی، برمیگرده. اون موقع موسسه تحقیقاتی استنفورد (SRI) یه فایل متنی به اسم HOSTS.TXT
داشت که اسمها رو به آدرسهای عددی کامپیوترهای شبکه نگاشت میکرد. این کار به صورت دستی انجام میشد. یعنی هر وقت یه کامپیوتر جدید به شبکه اضافه میشد، باید با مرکز اطلاعات شبکه (NIC) که توسط الیزابت فینلر مدیریت میشد، تماس میگرفتن تا اسم و آدرسش رو به صورت دستی به این فایل اضافه کنن.
با بزرگ شدن شبکه در اوایل دهه ۱۹۸۰، مدیریت این فایل متمرکز خیلی کند و سخت شد. اینجا بود که نیاز به یه سیستم خودکار احساس شد. پل موکاپتریس (Paul Mockapetris) در سال ۱۹۸۳ در دانشگاه کالیفرниای جنوبی، سیستم نام دامنه یا DNS رو ابداع کرد. مشخصات اولیه این سیستم در نوامبر ۱۹۸۳ در مستندهایی به اسم RFC 882 و RFC 883 منتشر شد و بعدا در نوامبر ۱۹۸۷ با RFC 1034 و RFC 1035 جایگزین و تکمیل شد. این سیستم از همون ابتدا یعنی سال ۱۹۸۵، یکی از اجزای حیاتی اینترنت بوده.
اولین پیادهسازی سرور نام روی سیستم عامل یونیکس هم توسط چهار تا دانشجو از دانشگاه برکلی در سال ۱۹۸۴ نوشته شد که به BIND (Berkeley Internet Name Domain) معروف شد. BIND هنوز هم یکی از پراستفادهترین نرمافزارهای سرور DNS در دنیاست.
ساختار درختی و سلسله مراتبی DNS
فضای نام دامنه یه ساختار درختی داره. هر گره یا برگ توی این درخت یه «برچسب» (Label) و صفر یا چند «رکورد منبع» (Resource Record) داره. اسم کامل دامنه از به هم چسبیدن این برچسبها با نقطه به دست میاد.
- ریشه (Root): بالای این درخت یه ریشه نامرئی وجود داره که با یه نقطه خالی «.» نشون داده میشه.
- دامنههای سطح بالا (TLDs): اولین سطح زیر ریشه، TLD ها هستن مثل
com
،org
،ir
و… . - دامنههای سطح دوم: اینها دامنههایی هستن که ما ثبت میکنیم، مثل
example
درexample.com
. - زیردامنهها (Subdomains): هر چیزی که سمت چپ دامنه سطح دوم بیاد، زیردامنه حساب میشه. مثلا
www
درwww.example.com
یه زیردامنه ازexample.com
هست. این ساختار درختی میتونه تا ۱۲۷ سطح عمق داشته باشه.
قوانین نامگذاری دامنهها:
- هر برچسب (قسمت بین دو نقطه) میتونه بین ۰ تا ۶۳ کاراکتر داشته باشه.
- اسم کامل دامنه نباید از ۲۵۳ کاراکتر بیشتر بشه.
- کاراکترهای مجاز در اسم دامنهها زیرمجموعهای از کاراکترهای ASCII هستن: حروف a تا z (کوچک و بزرگ)، اعداد ۰ تا ۹ و خط تیره (-). به این قانون LDH (Letters, Digits, Hyphen) هم میگن.
- اسم دامنهها به حروف کوچک و بزرگ حساس نیستن (case-insensitive).
- برچسبها نمیتونن با خط تیره شروع یا تموم بشن.
- برای پشتیبانی از زبانهای دیگه مثل فارسی، سیستمی به اسم IDNA (Internationalizing Domain Names in Applications) به وجود اومد که رشتههای یونیکد رو با استفاده از الگوریتمی به اسم Punycode به کاراکترهای مجاز DNS تبدیل میکنه.
انواع رکوردهای DNS
پایگاه داده DNS انواع مختلفی از رکوردها رو ذخیره میکنه که هر کدوم کاربرد خاص خودشون رو دارن. مهمترینهاشون اینها هستن:
نوع رکورد | نام کامل | کاربرد |
---|---|---|
A | Address Record | یه اسم دامنه رو به یه آدرس IPv4 وصل میکنه. |
AAAA | IPv6 Address Record | یه اسم دامنه رو به یه آدرس IPv6 وصل میکنه. |
CNAME | Canonical Name Record | یه اسم دامنه رو به یه اسم دامنه دیگه ارجاع میده (مثل یه اسم مستعار). |
MX | Mail Exchange Record | مشخص میکنه کدوم سرور ایمیل مسئول دریافت ایمیلهای یه دامنه است. |
NS | Name Server Record | سرورهای نام معتبر (Authoritative) یه دامنه رو مشخص میکنه. |
TXT | Text Record | اجازه میده یه متن دلخواه رو به دامنه مرتبط کنی. برای کارهای تاییدی و امنیتی زیاد استفاده میشه. |
SOA | Start of Authority Record | اطلاعات مهم مدیریتی در مورد یه ناحیه (Zone) DNS رو نگهداری میکنه. |
SRV | Service Record | اطلاعات مربوط به یه سرویس خاص (مثل پروتکلهای چت) رو در یه دامنه مشخص میکنه. |
PTR | Pointer Record | برعکس رکورد A کار میکنه. یه آدرس IP رو به یه اسم دامنه وصل میکنه. برای Reverse DNS Lookup استفاده میشه. |
CAA | Certification Authority Authorization | مشخص میکنه کدوم مرکز صدور گواهی (CA) مجازه برای یه دامنه گواهی SSL صادر کنه. |
وقتی توی یه فایل تنظیمات DNS (که بهش Zone File میگن) علامتی مثل @
میبینی، معمولا به معنی خود دامنه اصلی (Origin) هست. مثلا اگه فایل برای mydomain.com
باشه، @
همون mydomain.com
رو نمایندگی میکنه.
DNS Propagation یا انتشار DNS چیست؟
این اصطلاحیه که وقتی تغییراتی توی رکوردهای DNS دامنه خودت میدی، زیاد میشنوی. DNS Propagation به زمانی گفته میشه که طول میکشه تا تغییرات جدیدی که اعمال کردی، در تمام سرورهای DNS در سراسر جهان منتشر و بهروز بشه.
در واقع از نظر فنی، DNS «منتشر» نمیشه. چیزی که اتفاق میفته اینه که سرورهای DNS در سراسر دنیا، اطلاعات قدیمی رو تا زمانی که TTL اونها تموم نشده، توی کش خودشون نگه میدارن. پس وقتی تو یه تغییری میدی، باید صبر کنی تا کش سرورهای مختلف در سراسر دنیا منقضی بشه و اطلاعات جدید رو از سرور معتبر تو دریافت کنن. این فرایند میتونه از چند دقیقه تا ۴۸ یا حتی ۷۲ ساعت طول بکشه.
چرا انتشار DNS اینقدر طول میکشه؟
- تنظیمات TTL: اگه TTL رکوردهات رو بالا تنظیم کرده باشی (مثلا ۲۴ ساعت)، سرورها تا ۲۴ ساعت اطلاعات قدیمی رو نگه میدارن و تغییراتت دیرتر دیده میشه. یه راه برای سریعتر کردن این فرایند اینه که چند روز قبل از اعمال تغییرات مهم، TTL رو به یه مقدار خیلی کم (مثلا ۵ دقیقه) کاهش بدی.
- کش کردن ISP ها: شرکتهای اینترنتی (ISP) هم برای افزایش سرعت، نتایج DNS رو به شدت کش میکنن. گاهی اوقات بعضی از ISP ها حتی به TTL تعیین شده توسط تو هم احترام نمیذارن و اطلاعات رو بیشتر از زمان مشخص شده نگه میدارن.
- ثبتکننده دامنه (Registrar): اگه بخوای سرورهای نام (NS) دامنه خودت رو عوض کنی (مثلا وقتی هاستت رو عوض میکنی)، این تغییر باید در سطح سرور TLD (مثلا سرور
.com
) هم اعمال بشه که این خودش میتونه باعث تاخیر بشه.
برای چک کردن وضعیت انتشار DNS دامنه خودت، میتونی از ابزارهای آنلاینی مثل whatsmydns.net
استفاده کنی. این سایتها از سرورهای مختلفی در سراسر دنیا به دامنه تو درخواست میفرستن و نشون میدن که هر منطقه جغرافیایی، کدوم آدرس IP رو برای دامنه تو میبینه.
امنیت و حریم خصوصی در DNS
سیستم DNS در ابتدا بدون در نظر گرفتن مسائل امنیتی طراحی شده بود. چون اینترنت اولیه یه شبکه کوچیک و قابل اعتماد بود. اما با عمومی شدن اینترنت، مشکلات امنیتی هم خودشون رو نشون دادن.
حملات رایج در DNS
- DNS Cache Poisoning (مسموم کردن کش DNS): در این حمله، هکر دادههای جعلی رو به کش یه سرور Recursive Resolver تزریق میکنه. مثلا آدرس IP سایت بانک رو با آدرس IP سرور خودش عوض میکنه. در نتیجه، کاربرانی که از اون ریزالور استفاده میکنن، وقتی آدرس سایت بانک رو وارد میکنن، به یه سایت جعلی هدایت میشن.
- DNS Hijacking (ربودن DNS): در این حمله، هکر تنظیمات DNS کاربر رو تغییر میده تا درخواستهای DNS به جای سرورهای معتبر، به سرورهای مخرب تحت کنترل هکر ارسال بشن.
- DNS Tunneling (تونلزنی DNS): این یه تکنیک پیشرفته است که در اون، هکرها از پروتکل DNS برای انتقال دادههای دیگه (که ربطی به DNS ندارن) استفاده میکنن. چون ترافیک DNS معمولا توسط فایروالها و سیستمهای امنیتی به عنوان ترافیک مجاز شناخته میشه، هکرها میتونن از این کانال برای فرمان دادن به بدافزارها در یه شبکه داخلی یا خارج کردن اطلاعات حساس (Data Exfiltration) استفاده کنن.
راهکارهای افزایش امنیت و حریم خصوصی
برای مقابله با این تهدیدات، راهکارهای مختلفی توسعه داده شده:
- DNSSEC (Domain Name System Security Extensions): این یه افزونه برای DNS هست که با استفاده از امضای دیجیتال، از صحت و تمامیت دادههای DNS محافظت میکنه. DNSSEC مطمئن میشه که جوابی که از سرور DNS میگیری، در مسیر دستکاری نشده و واقعا از طرف منبع معتبر ارسال شده.
- DNS over TLS (DoT): در این روش، ارتباط بین کامپیوتر تو و سرور DNS با استفاده از پروتکل TLS (همون پروتکلی که برای HTTPS استفاده میشه) رمزنگاری میشه. این کار جلوی شنود و دستکاری درخواستها و پاسخهای DNS رو میگیره. سرورهای DoT معمولا روی پورت ۸۵۳ کار میکنن.
- DNS over HTTPS (DoH): این روش هم مثل DoT، ترافیک DNS رو رمزنگاری میکنه، با این تفاوت که درخواستهای DNS رو در قالب ترافیک HTTPS قرار میده و از پورت ۴۴۳ استفاده میکنه. چون ترافیک HTTPS خیلی رایجه، تشخیص و مسدود کردن ترافیک DoH برای مدیران شبکه سختتره.
- DNSCrypt: این هم یه پروتکل دیگه برای رمزنگاری ترافیک DNS هست که قبل از DoT و DoH وجود داشت.
استفاده از این پروتکلهای رمزنگاری شده، حریم خصوصی تو رو بالا میبره. چون ISP یا هر کسی که در مسیر شبکه تو قرار داره، دیگه نمیتونه ببینه که تو در حال بازدید از چه سایتهایی هستی (البته فقط درخواست DNS رو نمیبینن، نه خود ترافیک سایت رو).
یه نکته جالب: وقتی DNS معنی دیگهای میده!
حواست باشه که مخفف DNS فقط برای سیستم نام دامنه استفاده نمیشه. در دنیای پزشکی و توانبخشی، DNS مخفف Dynamic Neuromuscular Stabilization یا تثبیت دینامیک عصبی-عضلانی هم هست. این یه رویکرد درمانی و توانبخشیه که بر اساس حرکتشناسی تکاملی، یعنی جنبههای عصبی و فیزیولوژیکی رشد کودک، بنا شده. هدفش اینه که الگوهای حرکتی بهینه و تکاملی رو در بدن بازسازی کنه تا فشار روی بافتها کم و عملکرد به حداکثر برسه. پس اگه جایی این مخفف رو دیدی، حواست باشه که ممکنه منظورشون اینترنت و دامنه نباشه!
پرسش و پاسخهای متداول
اینجا به چند تا سوال رایج که ممکنه برات پیش اومده باشه جواب میدیم.
سوال: DNS دقیقا چیه و چیکار میکنه؟ اگه DNS من روی ISP تنظیم شده باشه، یعنی ISP میتونه ببینه من به چه سایتهایی میرم؟
جواب: همونطور که گفتیم، DNS مثل دفترچه تلفن اینترنته و اسم سایتها رو به آدرس عددی (IP) تبدیل میکنه. بله، وقتی از سرور DNS پیشفرض ISP خودت استفاده میکنی، اونها میتونن تمام درخواستهای DNS تو رو ببینن. این یعنی میدونن که تو تلاش کردی به چه دامنههایی دسترسی پیدا کنی.
سوال: اگه DNS رو به چیزی غیر از ISP تغییر بدم، آیا ISP دیگه نمیتونه فعالیتهای من رو ببینه؟
جواب: اگه DNS خودت رو مثلا به Google DNS (8.8.8.8
) یا Cloudflare DNS (1.1.1.1
) تغییر بدی، ISP تو دیگه نمیتونه لیست درخواستهای DNS تو رو ببینه. به جای ISP، حالا اون شرکت ارائهدهنده DNS (مثلا گوگل یا کلادفلر) میتونه این درخواستها رو ببینه. البته این کار باعث نمیشه کل فعالیت اینترنتی تو از دید ISP مخفی بشه. اونها هنوز هم میتونن ببینن که تو به کدوم آدرسهای IP متصل میشی، حتی اگه ندونن اون IP ها مال چه دامنهای هستن (البته فهمیدنش کار سختی نیست). برای رمزنگاری کامل ترافیک، باید از سرویسهایی مثل VPN استفاده کنی.
سوال: بهترین DNS برای حفظ حریم خصوصی و ناشناس بودن کدومه؟
جواب: این سوال جواب قطعی نداره و به تعریف تو از «بهترین» بستگی داره. سرویسهایی وجود دارن که تمرکزشون روی حریم خصوصیه و ادعا میکنن که هیچ لاگی از درخواستهای تو ذخیره نمیکنن. خیلی از این سرویسها از پروتکلهای رمزنگاری شده مثل DoH و DoT هم پشتیبانی میکنن. موقع انتخاب، باید به سیاستهای حفظ حریم خصوصی (Privacy Policy) اون سرویس دقت کنی. سرویسهایی مثل کلادفلر (1.1.1.1
) و Quad9 (9.9.9.9
) به عنوان گزینههای متمرکز بر حریم خصوصی شناخته میشن.
سوال: آیا تغییر دادن DNS خطرناکه؟
جواب: نه، تغییر دادن DNS به خودی خود هیچ خطر ذاتی نداره. فقط باید مطمئن بشی که از یه ارائهدهنده DNS معتبر و قابل اعتماد استفاده میکنی. استفاده از یه سرور DNS نامعتبر میتونه تو رو در معرض حملاتی مثل هدایت شدن به سایتهای مخرب قرار بده.
سوال: DNS خصوصی (Private DNS) امنیت بیشتری داره؟
جواب: بله، DNS خصوصی میتونه امنیت بیشتری نسبت به گزینههای دیگه ارائه بده. گزینههایی مثل DNS over TLS یا DNS over HTTPS که در تنظیمات گوشیهای اندرویدی جدید به اسم «Private DNS» وجود دارن، با رمزنگاری کردن درخواستهای تو، امنیت و حریم خصوصی رو افزایش میدن.
سوال: سرویس DNS روی گوشی من (مثلا آیفون) حجم زیادی از اینترنت مصرف کرده، چرا؟
جواب: مصرف بالای داده توسط DNS Services میتونه دلایل مختلفی داشته باشه. ممکنه یکی از اپلیکیشنهای روی گوشیت در پسزمینه به طور مداوم در حال ارسال تعداد زیادی درخواست DNS باشه. این میتونه نشانه فعالیت یه برنامه مخرب، یه برنامه با تنظیمات اشتباه یا حتی یه باگ باشه. بررسی برنامههایی که اخیرا نصب کردی و کنترل دسترسی اونها به اینترنت در پسزمینه میتونه کمککننده باشه.
سوال: چطوری میتونم DNS کامپیوتر خودم رو پیدا کنم؟
جواب: روی ویندوز، میتونی Command Prompt رو باز کنی، دستور ipconfig /all
رو تایپ کنی و اینتر بزنی. در خروجی، جلوی عبارت DNS Servers میتونی آدرس سرور یا سرورهایی که کامپیوترت ازشون استفاده میکنه رو ببینی.
منابع
- [2] DNS Propagation Checker – Global DNS Testing Tool
- [4] domain name system – What’s the meaning of ‘@’ in a DNS zone file? – Server Fault
- [6] What is DNS Services and why does it use … – Apple Community
- [8] What Is DNS Tunneling? [+ Examples & Protection Tips] – Palo Alto Networks
- [10] What is DNS? – Columbus Chiropractor & Rehabilitation Center
دیدگاهتان را بنویسید