AdGuard Home روی VPS: نصب و مسدود کردن تبلیغات

2 دقیقه خواندن
Tropic
AdGuard Home روی VPS: نصب و مسدود کردن تبلیغات

H1: چگونه AdGuard Home را روی VPS نصب و پیکربندی کنیم

AdGuard Home یک سرور DNS رایگان است که درخواست‌های مربوط به دامنه‌های تبلیغاتی، ردیاب‌ها و منابع ناخواسته دیگر را مسدود می‌کند. می‌توانید درخواست‌های DNS رایانه‌ها، تلفن‌ها، تلویزیون‌ها و دستگاه‌های دیگر را از طریق آن عبور دهید و فیلترها را از یک داشبورد مرکزی مدیریت کنید. در ادامه نصب روی VPS اوبونتو یا دبیان، پیکربندی اولیه، اتصال کلاینت‌ها و محافظت از یک سرور عمومی را بررسی می‌کنیم.

آنچه نیاز دارید

برای استفاده شخصی، معمولاً 1 هسته مجازی، 512 مگابایت تا 1 گیگابایت RAM و چند گیگابایت فضای ذخیره‌سازی آزاد کافی است. همچنین به یک IP ثابت، دسترسی SSH و مجوزهای root یا sudo نیاز دارید.

AdGuard Home از پورت‌های زیر استفاده می‌کند:

  • 3000/TCP برای جادوگر راه‌اندازی اولیه؛
  • 53/UDP و 53/TCP برای DNS معمولی؛
  • پورتی که خودتان انتخاب می‌کنید برای دسترسی دائمی به داشبورد.

پورت 53 نباید بدون محدودیت برای تمام اینترنت باز شود. در بخش جداگانه‌ای پیکربندی امن را بررسی می‌کنیم.

نصب AdGuard Home روی اوبونتو یا دبیان

از طریق SSH به VPS متصل شوید و curl را نصب کنید:

sudo apt update
sudo apt install -y curl

اسکریپت رسمی نصب را اجرا کنید:

curl -s -S -L https://raw.githubusercontent.com/AdguardTeam/AdGuardHome/master/scripts/install.sh | sudo sh -s -- -v

اسکریپت معماری سرور را تشخیص می‌دهد، نسخه پایدار را دانلود می‌کند، آن را در /opt/AdGuardHome نصب می‌کند و یک سرویس سیستمی می‌سازد. وضعیت سرویس را با دستور زیر بررسی کنید:

sudo /opt/AdGuardHome/AdGuardHome -s status

سپس نشانی زیر را در مرورگر باز کنید:

http://SERVER_IP:3000

اگر صفحه در دسترس نیست، فایروال سیستم و قوانین موجود در پنل مدیریت ارائه‌دهنده هاستینگ را بررسی کنید.

پیکربندی اولیه

در جادوگر راه‌اندازی باید نشانی‌ها و پورت‌های داشبورد مدیریت و سرور DNS را انتخاب کنید.

برای داشبورد می‌توانید پورت 3000 را نگه دارید و IP مربوط به VPS را به‌عنوان رابط شبکه انتخاب کنید. یک نام کاربری جداگانه و گذرواژه‌ای قوی بسازید؛ داشبورد به گزارش درخواست‌ها، فیلترها و تنظیمات کلاینت‌ها دسترسی می‌دهد.

برای DNS، IP سرور و پورت استاندارد 53 را انتخاب کنید. اگر این پورت از قبل استفاده می‌شود، آن را با یک پورت تصادفی جایگزین نکنید؛ بیشتر دستگاه‌ها انتظار دارند DNS روی پورت 53 در دسترس باشد. راه‌حل این تداخل در ادامه آمده است.

پس از پایان جادوگر، صفحه اصلی آمار درخواست‌ها، تعداد درخواست‌های مسدودشده، کلاینت‌های فعال و دامنه‌های پرکاربرد را نشان می‌دهد.

فیلتر DNS چگونه کار می‌کند

پیش از اتصال به یک وب‌سایت یا سرویس، دستگاه IP دامنه را درخواست می‌کند. AdGuard Home دامنه را با فهرست قوانین خود مقایسه می‌کند. درخواست شبکه تبلیغاتی یا ردیاب مسدود می‌شود و درخواست مجاز به سرور DNS بالادستی فرستاده می‌شود.

این روش فیلتر متمرکز را برای کل شبکه فراهم می‌کند و فقط به مرورگر محدود نیست؛ بسیاری از برنامه‌های موبایل و تلویزیون‌های هوشمند نیز از آن استفاده می‌کنند. امکانات دیگر شامل گزارش درخواست‌ها، قوانین اختصاصی برای هر دستگاه، Safe Search و مسدودسازی زمان‌بندی‌شده سرویس‌ها است.

AdGuard Home ترافیک HTTPS را رمزگشایی نمی‌کند و کد صفحه را تغییر نمی‌دهد. بنابراین درخواست‌های دامنه را مسدود می‌کند، اما نمی‌تواند همه عناصر تبلیغاتی را حذف کند.

تنظیمات ضروری پس از نصب

سرورهای DNS بالادستی

به بخش Settings → DNS settings بروید. در این قسمت سرورهایی را مشخص می‌کنید که AdGuard Home درخواست‌های مجاز را به آن‌ها می‌فرستد. ابتدا می‌توانید مقادیر پیشنهادی را نگه دارید و بعداً حل‌کننده‌های قابل‌اعتمادی را انتخاب کنید که از DNS-over-HTTPS یا DNS-over-TLS پشتیبانی می‌کنند.

DNS بالادستی رمزگذاری‌شده از اتصال بین VPS و حل‌کننده خارجی محافظت می‌کند. اتصال دستگاه به VPS باید جداگانه با DoH، DoT یا VPN محافظت شود.

فهرست‌های مسدودسازی

فیلتر پایه از قبل فعال است. ده‌ها فهرست بزرگ را هم‌زمان اضافه نکنید؛ این فهرست‌ها قوانین تکراری دارند و احتمال تشخیص اشتباه را بالا می‌برند. هر بار یک فهرست را برای هدفی مشخص اضافه کنید و گزارش درخواست‌ها را بررسی کنید.

اگر پس از تغییری وب‌سایت یا برنامه‌ای از کار افتاد، دامنه مسدودشده را در گزارش پیدا کنید و فقط برای همان مورد یک استثنا اضافه کنید.

قوانین سفارشی

در قوانین سفارشی می‌توانید یک دامنه مشخص را مسدود یا مجاز کنید:

||ads.example.com^
@@||needed.example.com^

خط اول دامنه را مسدود می‌کند و خط دوم برای آن استثنا می‌سازد.

سرویس‌ها، زمان‌بندی‌ها و کلاینت‌ها

AdGuard Home می‌تواند سرویس‌های مشخص را به‌طور کامل مسدود کند و برای آن‌ها برنامه زمانی اعمال کند. اگر دستگاه‌ها را به‌عنوان کلاینت‌های دائمی اضافه کنید، می‌توانید قوانین متفاوتی برای رایانه، تبلت کودک و تلویزیون تعیین کنید.

نحوه اتصال دستگاه‌ها

نصب سرور به‌طور خودکار تنظیمات DNS دستگاه‌های شما را تغییر نمی‌دهد. باید نشانی AdGuard Home را روی روتر یا هر کلاینت به‌صورت جداگانه مشخص کنید.

از طریق روتر

تنظیمات روتر را باز کنید و بخش DHCP، LAN یا DNS را پیدا کنید. IP مربوط به AdGuard Home را به‌عنوان سرور DNS وارد کنید، تنظیمات را ذخیره کنید و دستگاه‌ها را دوباره به شبکه متصل کنید.

اگر فیلتر باید اجباری باشد، یک سرور DNS عمومی را به‌عنوان نشانی ثانویه اضافه نکنید. بعضی دستگاه‌ها از هر دو نشانی استفاده می‌کنند و ممکن است AdGuard Home را دور بزنند. برای تحمل خطا بهتر است یک نمونه دوم مستقر کنید.

روی یک دستگاه خاص

برای آزمایش، می‌توانید DNS را فقط روی یک رایانه یا تلفن تغییر دهید:

  • ویندوز — ویژگی‌های آداپتور شبکه و تنظیمات IPv4/IPv6؛
  • macOS — تنظیمات اتصال فعال؛
  • Android و iOS — تنظیمات شبکه Wi-Fi فعلی؛
  • تلویزیون هوشمند — تنظیمات دستی شبکه.

تنظیم معمول Wi-Fi هنگام استفاده از داده تلفن همراه اعمال نمی‌شود. برای فعال بودن فیلتر در هر شبکه‌ای به DoH، DoT یا VPN نیاز دارید.

می‌توانید سرور را با دستور زیر آزمایش کنید:

nslookup example.org SERVER_IP

درخواست باید در گزارش درخواست‌های AdGuard Home نمایش داده شود.

پیکربندی امن روی VPS عمومی

اسکنرهای خودکار خیلی سریع یک حل‌کننده DNS باز را پیدا می‌کنند. کلاینت‌های غیرمجاز می‌توانند از آن استفاده کنند یا سرور را در حملات DNS به کار بگیرند؛ این کار بار اضافی ایجاد می‌کند و خطر ثبت شکایت درباره IP را افزایش می‌دهد.

برای آزمایش، دسترسی را فقط به IP عمومی خودتان محدود کنید. اگر UFW نصب نیست، ابتدا آن را با دستور sudo apt install -y ufw اضافه کنید.

sudo ufw allow OpenSSH
sudo ufw allow from YOUR_IP to any port 3000 proto tcp
sudo ufw allow from YOUR_IP to any port 53 proto udp
sudo ufw allow from YOUR_IP to any port 53 proto tcp
sudo ufw enable

ابتدا SSH را مجاز کنید، در غیر این صورت ممکن است دسترسی خود را به VPS از دست بدهید. اگر IP شما مرتب تغییر می‌کند، دستگاه‌ها را از طریق WireGuard، Tailscale یا VPN دیگری متصل کنید.

برای استفاده دائمی از شبکه‌های مختلف، بهتر است دامنه، گواهی TLS و DNS امن را پیکربندی کنید:

  • 443/TCP برای DNS-over-HTTPS؛
  • 853/TCP برای DNS-over-TLS؛
  • محدودیت‌های کلاینت و نرخ درخواست در تنظیمات AdGuard Home.

داشبورد مدیریت نیز باید با فایروال یا VPN محافظت شود. گزارش شامل دامنه‌هایی است که دستگاه‌ها به آن‌ها دسترسی داشته‌اند؛ بنابراین آن را فقط به اندازه مدت لازم نگه دارید.

خطای «Port 53 is already in use»

در اوبونتو، پورت 53 اغلب در اختیار systemd-resolved است. فرایندهای در حال گوش دادن را با دستور زیر بررسی کنید:

sudo ss -lntup | grep ':53'

اگر سرویس فقط روی 127.0.0.53 گوش می‌دهد، ابتدا AdGuard Home را به IP مشخص VPS، نه همه رابط‌ها، متصل کنید.

اگر تداخل همچنان وجود دارد، شنونده محلی DNS را غیرفعال کنید:

sudo mkdir -p /etc/systemd/resolved.conf.d

printf '[Resolve]\nDNS=127.0.0.1\nDNSStubListener=no\n' | \
sudo tee /etc/systemd/resolved.conf.d/adguardhome.conf

sudo mv /etc/resolv.conf /etc/resolv.conf.backup
sudo ln -s /run/systemd/resolve/resolv.conf /etc/resolv.conf
sudo systemctl reload-or-restart systemd-resolved
sudo /opt/AdGuardHome/AdGuardHome -s restart

جلسه SSH را نبندید تا مطمئن شوید سرور دوباره می‌تواند نام دامنه‌ها را resolve کند و AdGuard Home در حال اجرا است.

به‌روزرسانی و پشتیبان‌گیری

می‌توانید از داشبورد یا با دستور زیر به‌روزرسانی کنید:

cd /opt/AdGuardHome
sudo ./AdGuardHome --update

پیش از تغییرات مهم، از فایل /opt/AdGuardHome/AdGuardHome.yaml و پوشه /opt/AdGuardHome/data/ نسخه پشتیبان بگیرید. تنظیمات، کلاینت‌ها، فیلترها و داده‌های عملیاتی در این مسیرها قرار دارند.

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

برای یک خانواده یا تیم کوچک، معمولاً 1 هسته مجازی و 1 گیگابایت RAM کافی است. اگر VPN، سیستم مانیتورینگ یا برنامه‌های دیگری هم‌زمان با AdGuard Home اجرا می‌شوند، حافظه بیشتری اختصاص دهید.

VPS سرویس tropic.host برای این کار مناسب است: می‌توانید اوبونتو یا دبیان نصب کنید، IP اختصاصی بگیرید و سرور DNS را بدون وابستگی به رایانه خانگی، شبانه‌روزی در دسترس نگه دارید. هنگام میزبانی روی اینترنت، همیشه از فایروال، DNS امن یا VPN استفاده کنید.

محدودیت‌های AdGuard Home

فیلتر DNS جایگزین مسدودکننده تبلیغات در مرورگر، نرم‌افزار آنتی‌ویروس یا فایروال نیست. این ابزار نمی‌تواند تبلیغاتی را که از همان دامنه محتوای اصلی ارسال می‌شوند به‌طور قابل‌اعتماد حذف کند. به همین دلیل، فیلتر در سطح DNS نمی‌تواند تبلیغات ویدئویی YouTube و Twitch یا پست‌های تبلیغاتی داخل شبکه‌های اجتماعی را بدون مختل کردن خود سرویس‌ها به‌طور مطمئن حذف کند.

پس از مسدودسازی ممکن است فضاهای خالی در صفحه باقی بماند. افزونه مرورگر می‌تواند عناصر صفحه را مخفی کند و در کنار AdGuard Home استفاده شود. بعضی برنامه‌ها نیز از DNS رمزگذاری‌شده خودشان استفاده می‌کنند و می‌توانند تنظیمات سیستم را دور بزنند.

نتیجه‌گیری

AdGuard Home بخش قابل‌توجهی از تبلیغات و ردیاب‌ها را روی رایانه‌ها، تلفن‌ها و دستگاه‌های دیگر به‌صورت متمرکز مسدود می‌کند. نصب آن روی VPS چند دقیقه زمان می‌برد و به منابع زیادی نیاز ندارد.

پس از نصب، کلاینت‌ها و فیلترها را تنظیم کنید، داشبورد را محافظت کنید و پورت 53 را برای تمام اینترنت باز نگذارید. برای اتصال از شبکه‌های موبایل و خارج از شبکه، از VPN، DNS-over-HTTPS یا DNS-over-TLS استفاده کنید.

FAQ

آیا AdGuard Home رایگان است؟

بله. AdGuard Home به‌صورت رایگان توزیع می‌شود و به اشتراک نیاز ندارد. فقط هزینه دستگاه یا VPSای را می‌پردازید که برنامه روی آن اجرا می‌شود.

آیا AdGuard Home تبلیغات YouTube را مسدود می‌کند؟

خیر. تبلیغات و ویدئوها ممکن است از دامنه‌های یکسانی ارسال شوند؛ بنابراین مسدودسازی DNS خود YouTube را مختل می‌کند.

آیا فیلتر هنگام استفاده از داده تلفن همراه کار می‌کند؟

بله، اگر DNS-over-TLS، DNS-over-HTTPS، یک پروفایل سازگار یا VPN را پیکربندی کنید. تغییر DNS در تنظیمات Wi-Fi فقط روی همان شبکه اعمال می‌شود.

چه مقدار RAM لازم است؟

برای استفاده شخصی، معمولاً 512 مگابایت تا 1 گیگابایت RAM کافی است. تعداد زیاد کلاینت‌ها، فیلترهای گسترده یا سرویس‌های اضافی ممکن است به حافظه بیشتری نیاز داشته باشد.

اگر پس از فعال کردن فیلتر یک وب‌سایت باز نشد چه کار کنم؟

گزارش درخواست‌ها را باز کنید، عملی را که باعث مشکل شده تکرار کنید و دامنه مسدودشده را پیدا کنید. به‌جای غیرفعال کردن کل فیلتر، فقط برای همان دامنه یک استثنای هدفمند اضافه کنید.