ویرگول
ورودثبت نام
سید مرتضی امیرکار
سید مرتضی امیرکارDevOps engineer
سید مرتضی امیرکار
سید مرتضی امیرکار
خواندن ۶ دقیقه·۲ روز پیش

راهنمای جامع ساخت DNS Load Balancer با AdGuard Home برای سرعت و امنیت اینترنت

در این پست می خوام درمورد این صحبت کنم که چطور میتونیم یک Dns Load Balancer رو به ساده ترین و موثر ترین روش ممکن برای استفاده در محیط خانه پیاده سازی کنیم.


دی ان اس چیه؟

کامپیوتر ها توانایی درک ادرس هایی همچون google.com یا virgool.io رو ندارند و صرفا توانایی درک یک IPبرای برقراری ارتباط دارند
اینجا هست که DNS وارد عمل میشه، شما در یک درخواست از DNS server مورد نظر خود میخواهید که مقدارIP اون دامنه رو به شما بده، و پس از اون کامپیوتر شما با کمک اون IP با سرور ارتباط برقرار میکند.


DNS Load Balancer چیه و چرا باید از اون استفاده کند؟

همینطور که گفتم شما هربار میخواهید با یک ادرس ارتباط بر قرار کنید ابتدا کامپیوتر شما با ارسال درخواست DNS به سرور متوجه میشه که باید با چه IP ارتباط برقرار کنه، خب شما فکر کنید که در روز هزاران بار درخواست DNS ارسال میکنید ، البته لازم به ذکر هست که کامپیوتر ها در پس زمینه نیز برای ارتباط های خود نیز از DNS استفاده میکنند.

و اینکه گاهی اوقات ممکنه سرعت ارتباط شما با DNS server بنا به دلایل زیادی کند شود یا اینکه ممکنه بخواهید جواب های DNS رو cache کنید تا اگه در شبکه یک نفر دیگه خواست بپرسه که IP اون دامنه چیه، نره از سرور بپرسه، بلکه از اون مقداری که cache کرده جواب رو بده، این کار باعث افزایش سرعت درخواست های DNS برای شما میشود

همچنین در لحظه ممکنه که یک DNS server سرعت بیشتری داشته باشه و جواب رو زودتر به شما بده

در این جا هست که شما میتوانید از DNS Load Balancer استفاده کنید

شما در ان DNS server ها مورد نظر خودتون رو تعریف میکنید ، و اون هربار که شما درخواست میزنید درخواست رو به همه انها ارسال میکند و اونی که سریع تر جواب بده ، مقدار جواب را cache میکند و درخواست شما را جواب میدهد

همچنین میتواند در یک حالت دیگر هربار درخواست را به یک سرور بفرستید تا بار بین DNS server ها تقسیم شود.

در حالت دیگر میتوانید درخواست را برای همه بفرستید و بعد از دریافت جواب، سرور بررسی میکند که جواب کدام سرور سرعت بیشتری دارد و مقدار IP ان را به شما برمیگرداند، البته که این روش یکم نسبت به باقی راه ها کند تر هست زیرا باید جواب تمام سرور هارو بگیرد و سرعت رسیدن بسته IP هارو بررسی کند و در نهایت به شما پاسخ دهد

حتی میتوانید یک blocklist از ادرس هایی که malware هستند یا برای تبلغات استفاده میشوند را بهش بدهنید که راه رسیدن شما به انها رو ببند که باعث میشود تبلیغات در شبکه شما به همراه دسترسی به سایت های malware کاهش پیدا کند.


چرا AdGuard Home را انتخاب کردیم؟

شاید بپرسید با وجود ابزارهای متعدد و قدرتمندی مثل Blocky، dnscrypt-proxy یا حتی Bind برای مدیریت DNS، چرا سراغ AdGuard Home رفتیم؟ انتخاب این ابزار برای پیاده‌سازی DNS Load Balancer دلایل فنی و کاربردی متعددی دارد که آن را به گزینه‌ای ایده‌آل برای استفاده در محیط خانه یا شبکه‌های کوچک تبدیل می‌کند:

۱. همه‌کاره بودن (All-in-One Solution)

۲. رابط کاربری گرافیکی (Dashboard) آسان و کاربرپسند

۳. پشتیبانی داخلی از روش‌های مختلف

۴. قابلیت شخصی‌سازی و DNSCrypt

توجه داشته باشید که AdGuard Home برای استفاده خانگی و شبکه‌های کوچک عالیه، اما Load Balancer واقعی به معنی Enterprise یا Health Check حرفه‌ای نیست. برای شبکه‌های بزرگ بهتره از ابزارهایی مثل Unbound یا dnsdist استفاده کنید.


پیاده سازی AdGaurd Home

خب بریم برای پیاده سازی یک DNS Load Balancer ، ما از ابزار AdGaurd Home استفاده میکنیم و اون رو به صورت یک container با کمک docker پیاده سازی میکنیم

در ابتدا نیاز است تا شما docker رو بر روی سیستم عامل یا سرور خود نصب داشته باشید، اگه نصب ندارید با داکیومنت میتوانید ان را بر روی سیستم عامل خود نصب کنید

سپس یک فایل متنی با نام docker-compose.yml میسازیم و مقدار زیر را در ان قرار میدهیم.


version: '3.3'

services:

adguardhome:

container_name: adguard-home

image: adguard/adguardhome

volumes:

- work:/opt/adguardhome/work

- conf:/opt/adguardhome/conf

ports:

- 53:53

- 3002:3000

- 80:80/tcp

- 443:443/tcp

- 443:443/udp

restart: unless-stopped

volumes:

work:

conf:


سپس دستور زیر را وارد کنید تا سرویس مورد نظر اجرا شود

docker compose up -d

بعد رفتن به ادرس

http://127.0.0.1:3002

میتوانید وارد بخش تنظیمات اولیه شوید.

در صفحه اولیه تمامی مقادیر رو روی مقدار پیش فرض بزارید و در نهایت پس از تعریف کردن نام کاربری و رمز عبور میتوانید از طریق ادرس

http://127.0.0.1/

وارد پنل خود شوید.


تنظیم DNS در AdGuard Home

در مرحله اخر ما نیاز داریم تا DNS server ها مورد نظر خود را به AdGuard بدیم تا بین اونها ترافیک رو پخش کنه

در این مثال من از دی ان اس شکن، بگذر و الکترو استفاده میکنم،البته شما میتوانید از هرنوع DNS از هر ارائه دهنده ای استفاده کنید.

برای تنظیم DNS ها ، پس از لاگین به پنل ادمین، از طریق نوار بالا روی گزینه Settings نگه میداریم و روی قسمت DNS Settings کیلیک میکنیم.

سپس DNS سرور های مورد نظر خود را توی لیست Upstream DNS servers قرار دهید، برای مثال:

در ادامه، در بعدی توی قسمت Upstream DNS servers ما میتوانیم به سه شکل از این سرویس استفاده کنیم که شامل:


  • Load-balancing

    :

توی این حالت درخواست های شما هربار به صورت رندوم به یکی از DNS server ها ارسال میشود و بار بین انها تقسیم میشود.

  • Parallel requests:

در این حالت درخواست به تمامی سرور ها به صورت همزمان ارسال میشود و هر سروری سریع تر پاسخ بدهد، مقدار جواب ان برای شما ارسال میشود.

  • Fastest IP Address

در این حالت درخواست شما به تمامی سرور ها ارسال میشود و زمانی که همگی پاسخ دادند، AdGuard بررسی میکند که کدام از IP های پاسخ سریع تر هست و در نهایت جواب رو برای شما ارسال میکند.

این روش به دلیل مکانیزمی که دارد باعث میشود تا درخواست های DNS شما کند شود.


پیشنهاد من استفاده از حالت اول و دوم هست، که بنا به نیاز خود میتوانید بین این حالت ها انتخاب کنید.

توی این اموزش حالت Load-balancing را انتخاب میکنیم و در نهایت در انتهای این لیست بر روی گزینه Apply کلیک کنید تا تغییرات شما دخیره شود.


نحوه استفاده از DNS ساخته شده

در این قسمت نحوه تست کردن DNS سروری که ساختید توضیح داده میشود و اینکه چطور میتوانید در سیستم خود از ان استفاده کنید.


تست DNS server با کمک دستور dig

این روش برای استفاده در سیستم عامل های لینوکسی هست، اگر از MacOs استفاده میکنید این دستور به صورت پیش فرض نصب هست.

برای نصب dig در سیستم عامل های debian base مثل ubuntu یا debian ، دستور زیر را اجرا کنید

sudo apt-get install dnsutils

پس از نصب با اجرا دستور زیر میتوانید dns سرور خود را تست کنید

dig google.com @127.0.0.1

در بخش اول میگیم که میخوایم IP دامنه google.com را با کمک سرور 127.0.0.1 دریافت کنید.

اگر این دستور را داخل یک سیستم دیگر اجرا میکنید باید بجای 127.0.0.1 ،IP مربوط به سیستمی که در ان سرویس خود را اجرا کرده اید وارد کنید

برای مثال اگه IP مربوط به DNS server شما برابر با 192.168.1.27 هست باید به این شکل دستور را وارد کنید:

dig google.com @192.168.1.27


استفاده از DNS server در سیستم های مختلف

برای استفاده از DNS server متوانید به صورت دستی در تمامی دستگاه هایی که دارید ، ادرس سرور خود را به عنوان DNS server وارد کنید ، یا اینکه برای تنظیم خودکار بر روی تمامی دستگاه های شبکه نیاز است تا بر روی روتر خود ادرس DNS server را برابر با IP سرور خود قرار دهید.

نحوه تغییر DNS در ویندوز، مک، گوشی و پلی استیشن ۵

dnsدی ان اسشبکه خانگیامنیت اینترنت
۳
۰
سید مرتضی امیرکار
سید مرتضی امیرکار
DevOps engineer
شاید از این پست‌ها خوشتان بیاید