داستان dns و فیلترینگ
اول از همه باید ببینیم dns چیه؟
این dns یک سرویس شبکس و مثل هر سرویس دیگهای از یکسری پروتکلها، فرمتها، استانداردها و پیشفرضها تشکیل میشه، dns مهمترین وظیفش اینه که دامین رو به ip تبدیل کنه مثلا میگید ایپی چیه بهتون میگه 8.8.8.8google.com
به dns امالسرویس هم میگن، یعنی هر سرویس شبکه(پروتکل نه سرویس، یعنی چیزی که کاربر باهاش سر و کله میزنه) بالاخره یجوری با این dns سروکار داره، درواقع dns یجورایی یه database کلید، مقدار هست که شما میتونی توش هرچیزی ذخیرهکنی ولی مهمترین کاربردش تبدیل دامنه(بعنوان کلید) به
آدرس ip بعنوان مقدار هست ولی شما عملا مثل هر دیتابیس دیگهای هرچیزی میتونی تو dns بذاری، پروتکل dns مثل دیتابیسهای دیگه فیلدهاش(کلیدها و مقادیر) میتونن نوع داشته باشن مثلا میتونن نوع txt که یه string هست داشته باشن، نوعهای مرسوم و مهم که رکوردهای dns میتونن داشته باشن
عبارتند از 1- نوع A
اگه بخواید کلید رو دامنه و مقدار رو ip نسخه چهار بذارید ازین نوع استفاده میکنید 2- نوع AAAA
همون قبلی ولی نوع ip اگه 6 باشه بجای یه A چهارتا میذارن هر A یعنی 32 بیت و ip6 هم که 128 بیت قبول میکنه 3- نوع cname
بخواید یه دامنه رو به یه دامنه دیگه تبدیل کنید
4- نوع ptr
دقیقا برعکس A هست و ip رو به دامنه تبدیل میکنه، فرمت ptr به اینصورته که شما ip(رنجت) رو برعکس مینویسی و تهش اگه ip ت نسخه 4 هست مینویسی و اگه نسخه 6 هست مینویسی این کلمه arpa اسم پدربزرگ اینترنت فعلیه که بهش میگفتنadda.arpa ip6.arpa
آرپانت و مراکز نظامی و تحقیقاتی ایالات متحده رو به همدیگه وصل میکرد 5- نوع mx
این رکورد برای مشخص کردن سرورای ایمیل یه دامنه و اولویت این سرورا استفاده میشه 6- نوع txt
که دیگه هرچی عشقت بکشه توش میتونی بذاری ولی معمولا برای پارامترای امنیتی مثل
احراز هویت مالکیت دامنه برای گرفتن سرتیفیکیت های ssl و tls یا نگهداری کلید عمومی و سایرپارامترای امنیتی دامنهها ازش استفاده میشه.
خوب گفتیم dns یه سرویس تحت شبکس که یه سیستم مدیریت نام دامنه یا domain name system ارائه میده، این سرویس شبکه رو مثل تمام سرویسهای دیگه که
به شبکه و اینترنت و اینا مربوط هستن ietf یا نیروی مهندسی اینترنت ارتش ایالات متحده کار استانداردسازی و نگهداریشو به عهده داره که اگه خواستید میتونید ر.ک.ب rfc 1035
سرویس dns هم مثل سایر سرویسهای دیگه با استاندارد که قابل استفاده نیست یه کسی باید بیاد باتوجه به
استانداردهای جهانی براش کد بنویسه و با سایر استانداردها و پروتکلها ترکیبش کنه که قابل استفاده بشه در قدم اول اونکسی که میخواد سرویس dns رو پیاده کنه باید ببینه کلاینت و سرور چجوری باید بهم وصل بشن و دستورات کوئری گرفتن از پایگاه داده dns چجوری باید باشه
که خوب افراد مختلفی بنابر نیازهای مختلف این سرویس رو روی انواع اقیام پروتکلهای شبکه پیاده کردن که دم دستترینش dns over udp هست، یعنی کلاینت و سرور میان بصورت خیاری و روی udp و رمزنگاری نشده باهم حرف میزنن که فیلترچی اون وسط نشسته پکتها رو نگاه میکنه میبینه عه این داوشمون
میخواد وصل شه یوتوب و برای اینکه ارتباط شمارو مختل کنه و نذاره ip یوتوب رو بفهمید چیه میاد خودش بجای سرور dns مدنظر شما جواب میده و میگه میخوای وصل شی به یوتوب بیا این ip ش 10.10.34.34 هست که درنتیجه شما بجای اینکه وصل بشید به یوتوب وصل میشید به صفحه پیوندها
چون میدونید که کامپیوترها عملا درکی ندارن شما الان میخوای به گوگل وصل شی یا به جای دیگه و اصلا نمیفهمن دامنه چیه و سر همینم اصلا dns وجود داره که شما از یجای مطمئنی ادرس ip های دامنههای مختلفو بپرسی، شاید براتون سوال پیش بیاد که سرور dns چجوری ادرس همه دامنه
های ممکن اینترنت رو داره خوب این همههه دامنه این همه ip، در جواب عملا ما دوجور سرور dns داریم یه سرور dns داریم که برای یه دامنه مشخص راهاندازی میشه و وقتی شما مثلا سایتتون رو میخواید راه بندازید باید خودتون یا حالا اونجایی که ازش سرور و هاست میخرید براتون راه بندازن
مثلا کلاودفلر و ابرآروان یکی از وظایفشون همینه که برای شما dns سرور این مدلی درست بکنن به این نوع سرور dns میگن authoritative ولی خوب شما که نمیتونید ip همه این dns هارو تو سیستمتون نگهدارید شما مثلا میخواید 8.8.8.8 رو بعنوان dns بدید و بیخیال بشید که خوب به امثال
این 8.8.8.8 میگن public recursive dns server که به نیابت از شما به سرورای اصلی dns وصل میشه و ازش سوالات شمارو میپرسه، برای اینکه به این public dns های بازگشتی یه نظمی بدن و یکم قضیه رو بهینه تر بکنن اینام مستقیما از همون اول نمیرن از خود سرور شما کوئری بگیرن بلکه
دوستان اومدن یکسری root dns server درست کردن که ادرس سرور dns شمارو اون dns عمومی میره ازین root ها میپرسه مثلا یه روت سرور برای com داریم یدونه برای ir و غیره که درواقع خود این com و ir هم یجور دامنه هستن که بهشون TLD هم میگن بنابراین داستان dns یکم تو درتو و پیچیدس
و صرف نمیکنه که همه این مراحل از اول طی بشه لذا اون کسی که داره دامین و هاستاشو تو سرور dns خودش ثبت میکنه میاد یه پارامتری به اسم ttl ست میکنه که بر حسب ثانیست و به شما میگه مثلا این ip ای که بهت دادم حداقل برای 200 ثانیه تغییر نمیکنه و مزاحم من نشو دیگه و شمام
میای برای خودت cache میکنی که اره ip گوگل اینه و دفعه بعد خواستم وصل بشم با همین وصل میشم مگه اینکه دیگه خیلی گذشته بود که دوباره میرم میپرسم از سرور عمومی.
خوب گفتیم که مرسومترین مدل dns اینه که کوئریها و جواباشو رو udp و رمزنگاری نشده میفرستن و فیلترچی هم
مثل غرقی نشسته نگاه میکنه کی به کجا وصل میشه که بیاد برینه تو کوئری شما بهتون 10.10.34.34 بده، خوب چیکار میشه کرد؟ سادهترین راهش اینه که شما بری دستی ip سایت مدنظرتو پیدا کنی و به سیستمعاملت بگی هر موقع خواستم به فلان دامنه وصل بشم همیشه همین ip رو بهم بده
که اینکارو با hosts file انجام میدی(فیلترینگ چندین لایه داره و ما فقط اینجا داریم بایه dns رو بررسی میکنیم و معمولا فیلترچی dpi و sni checking هم داره که شما با یه تغییر dns نتونی دورش بزنی ولی اونو بعدا توضیح میدیم) خوب ولی این hosts file خیلی راهحل خوبی نیست
چون اینا نصف بیشتر اینترنت و فیلترکردن، راه بهتر چی داریم؟ خوب این مشکلو بجز ما بقیه جوامع بشری هم داشتم و بجز فیلترچی ننه حرمله یسری هکر هم ازین روش که بهش مسموم کردن پاسخ dns هم میگن برای فیشینگ زدن استفاده میکردن، که خوب برای حل این مشکل علما گفتن
اقا رمزنگاریش کنیم بیاریمش روی tls که شد اسمش dot یکی دیگه گفت شما که tls ش کردید یهو کلا بیاریدش رو https که اسمش شد doh بعد ملت گفتن بابا اون udp برای dns خیلی خوب بود چون جفنگیات tcp رو نداشت فقط یه رمزنگاری کم داشت که گفتن اوکی بذاریمش رو quic که هم udp باشه هم
رمز بشه که اسمش شد doq، افراد مختلفی اومدن dot و doh و غیره رو پیاده کردن و بعضا اسمشو عوض کردن و یکمم توش دستبردن که کلا شد یه پروتکل جدید، مثلا dnscrypt v2 همینجوری ساخته شد. منتها داستانی که وجود داره اینه که طبق معمول سیستمعاملها دوسدارن از پروتکلهای درب و داغون
و قدیمی استفاده بکنن که سر همینم هنوز که هنوزه پیشفرض dns روی ویندوز مثلا همون udp هست، که شما مجبوری بری دستی براش doh و اینا ست کنی
سوال؟ این dns leak که میگن چیه؟
سوال بسیار خوبیه، یسری از سایتا که خیلی دیگه فاز خایهمالی برمیدارن و میخوان هرجوری شده به ما
ایرانیا سرویس ندن میان تله میذارن برامون اینجوری که اگه ترافیک dns شما از پروکسیتون رد نشه و با ایران به سرور dns شون وصل بشید یه ip ای برمیگردونن که مختص کاربرای ایرانی باشه و بعد چک میکنن هرکسی با اون ip اومدن بنابراین ایرانیه و احتمالا فیلترشکن زده
سوال؟ چرا وقتی فیلترشکن میزنم بازم تا یه مدت بعضی سایتا باز نمیشه؟
دقیقا بخاطر cache dns هست دیگه شما میخواستی وصل شی یوتوب منتها فیلترچی ریده به dns ت و ip 10.10.34.34 رو با یه ttl گنده برگردونده و شما الان که اومدی vpn زدی سیستمت نمیره دوباره کوئری بگیره از سرور اصلی و همون
آدرس 10.10.34.34 رو برمیگردونه که خوب شما باید cache dns سیستم یا گوشیتو یجوری پاک کنی مثلا تو ویندوز میزنی
ipconfig /flushdns
یا تو لینوکس و اندروید میری تو حالت هواپیما و درمیای یا میزنی
resolvectl flush-caches
که از شر گوهکاری فیلترچی خلاص بشی
• • •
Missing some Tweet in this thread? You can try to
force a refresh
همونطور که قبلا گفتیم شبکه از چندلایه تشکیل میشه که این لایهها رو همدیگه سوارن لذا فیلترچی هم برای اینکه فیلترینگ رو موثرتر کنه میاد و تو لایههای مختلف دسترسی آزاد شما به اینترنت رو مختل میکنه، قبلا درباره فیلترینگ dns صحبت کرده بودیم
الان میخوایم درباره فیلترینگ tcp/ip و udp صحبت کنیم، همونطور که میدونید ip، ادرس کامپیوتر شما تو یه شبکس و مثل محیط واقعی شما اگه بخواید به کسی بگید چیزی براتون بفرسته باید بگید اونو به آدرس محل سکونتتون ارسال کنه، البته شکل آدرس دهیتون تو محلتون مثلا به سوپری
سر کوچه با شکل آدرسدهیتون به کسی که قراره از یه محل دیگه، یه شهر دیگه یا کشور دیگه براتون بسته ارسال کنه کاملا متفاوت میشه. مثلا میرید بقالی میگید لطفا بسته من رو بفرستید دو تا کوچه بالاتر از کوچه شهید x و پلاک مثلا 2 واحد فلان، ولی خوب مثلا دوستتون اگه ازونور شهر
تو این رشتو میخوام توضیح بدم ساکس پروکسی سرور چیه و چجوری کار میکنه؟
ساکس پروکسی دوتا(و نصفی) ورژن مهم و پرکاربرد داره که عبارتند از
یک1- socks4 که نسخه قدیمیتره و از udp پشتیبانی نمیکنه، بصورت خلاصه ساکس 4 میتونه دونوع درخواست connect و bind رو مدیریت کنه که در ادامه توضیح میدم
یکونیم1.5- socks4a هست که عینا همهچیزش مثل socks4 هست با این تفاوت که که علاوه بر پروکسی کردن ipv4 میتونه hostname(همون دامین یا fqdn) هم پشتیبانی کنه(دقت کنید socks4/a کلا توانایی کارکردن با ip6 رو نداره)
دو2- socks5 هست که تقریبا همه مشکلات ساکس 4 و 4a رو حل میکنه یعنی علاوه بر connect و bind از نوع دستوری associate هم برای پراکسی کردن udp پشتیبانی میکنه که در ادامه نحوه کار این دستورهارو توضیح میدم. فقط ممکنه بعضا عبارت socks5h رو هم بشنوید که یعنی تو socks5 اومدن dns گذاشتن