بلاگ/راه‌اندازی Pi-hole روی سرور مجازی: مسدودسازی تبلیغ و ردیاب در سطح DNS برای کل شبکه
به‌روز شده

راه‌اندازی Pi-hole روی سرور مجازی: مسدودسازی تبلیغ و ردیاب در سطح DNS برای کل شبکه

1405/08/240 بازدید
راه‌اندازی Pi-hole روی سرور مجازی: مسدودسازی تبلیغ و ردیاب در سطح DNS برای کل شبکه

تصویر مفهومی فیلتر شدن ترافیک دستگاه‌ها توسط Pi-hole پیش از رسیدن به سرور

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

Pi-hole چیست و چطور کار می‌کند؟

هر بار که مرورگر یا اپلیکیشنی به یک دامنه وصل می‌شود، اول یک درخواست DNS می‌فرستد تا آدرس IP آن دامنه را بگیرد. Pi-hole بین این درخواست و پاسخ می‌نشیند: اگر دامنه در فهرست تبلیغ‌دهنده‌ها و ردیاب‌ها باشد، جواب نمی‌دهد یا یک آدرس خالی برمی‌گرداند. نتیجه این است که تبلیغ اصلا بارگذاری نمی‌شود، نه این‌که فقط پنهان شود.

چون این مسدودسازی روی DNS اتفاق می‌افتد، نیازی به نصب افزونه روی هر مرورگر و هر دستگاه نیست. کافی است دستگاه‌ها از Pi-hole به‌عنوان سرور DNS استفاده کنند؛ تلویزیون هوشمند، گوشی، لپ‌تاپ، همه با یک تنظیم.

چرا سرور مجازی برای Pi-hole گزینه خوبی است؟

Pi-hole را می‌شود روی یک رزبری‌پای کنار مودم خانه هم نصب کرد، اما این یعنی وابسته به برق و روشن‌ماندن همیشگی یک دستگاه فیزیکی. یک سرور مجازی این مشکل را حل می‌کند: همیشه روشن است، آپدیت‌های امنیتی سیستم‌عامل را خودتان جدا از سخت‌افزار خانگی مدیریت می‌کنید و اگر بعدا خواستید منابع را زیاد کنید، فقط پلن را ارتقا می‌دهید. اگر می‌خواهید فراتر از همین مقاله هم سرور را امن نگه دارید، این راهنمای امن‌سازی سرور ابری فایروال، SSH Key و شبکه خصوصی را هم پوشش می‌دهد.

نکته امنیتی: پورت ۵۳ را برای عموم باز نگذارید

یک سرور مجازی معمولا یک IP عمومی دارد و همین‌جا باید دقت کرد. اگر پورت ۵۳ (DNS) را بدون محدودیت برای کل اینترنت باز بگذارید، سرورتان می‌شود یک DNS resolver باز که هم می‌تواند ابزار حمله DNS amplification علیه دیگران شود، هم هر کسی می‌تواند از منابع سرورتان رایگان استفاده کند.

راه درست این است که دسترسی به پورت ۵۳ را با فایروال فقط به IP دستگاه‌های خودتان محدود کنید، یا بهتر، یک تونل WireGuard بین دستگاه‌ها و سرور بزنید و DNS را فقط روی آن تونل در دسترس بگذارید. آریانت یک اپ آماده WireGuard دارد که همین کار را با چند کلیک روی سرور ابری راه می‌اندازد و پنل مدیریت کلاینت‌ها هم دارد.

پیش‌نیازها

برای شروع به این‌ها نیاز دارید:

  • یک سرور مجازی با حداقل ۱ vCPU و ۱ گیگابایت رم (برای یک خانه یا دفتر کوچک کافی است)
  • اوبونتو ۲۴.۰۴ یا دبیان ۱۲ روی سرور
  • دسترسی root یا کاربری با sudo
  • یک IP ثابت برای سرور (معمولا پیش‌فرض روی سرور مجازی همین‌طور است)

نصب Pi-hole روی سرور مجازی، گام‌به‌گام

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

sudo apt update && sudo apt upgrade -y

بعد نصب‌کننده رسمی Pi-hole را اجرا کنید:

curl -sSL https://install.pi-hole.net | bash

نصب‌کننده یک ویزارد متنی باز می‌کند و چند سؤال می‌پرسد:

  • رابط شبکه — همان رابط اصلی سرور را انتخاب کنید.
  • ارائه‌دهنده DNS بالادستی — Cloudflare یا Google ساده‌ترین گزینه‌اند؛ اگر حریم خصوصی برایتان مهم‌تر است، بعدا می‌توانید Unbound را کنار Pi-hole نصب کنید تا خودش به‌صورت recursive جواب بدهد و درخواستی به بیرون نرود.
  • فهرست‌های مسدودسازی — فهرست پیش‌فرض برای شروع کافی است؛ بعدا از پنل فهرست‌های بیشتر اضافه می‌شود.
  • پروتکل‌ها — IPv4 را فعال نگه دارید، IPv6 اگر سرور دارد.
  • رمز پنل مدیریت — در پایان نصب نشان داده می‌شود؛ جایی ذخیره‌اش کنید.

نصب که تمام شد، پنل روی آدرس http://IP-سرور/admin بالا می‌آید. از همین‌جا می‌توانید آمار درخواست‌های مسدودشده را ببینید، دامنه‌ای را دستی whitelist یا blacklist کنید و فهرست‌ها را مدیریت کنید.

تصویر مفهومی مسدودسازی درخواست‌های تبلیغاتی و ردیاب توسط Pi-hole پیش از رسیدن به دستگاه‌های شبکه

پیکربندی DNS برای کل شبکه

اگر Pi-hole روی یک سرور خانگی در همان شبکه محلی باشد، کافی است در تنظیمات مودم، DNS سرویس‌گیرنده‌ها (DHCP) را به IP آن سرور تغییر دهید. روی سرور مجازی که از راه دور روی اینترنت است، این مسیر مستقیم جواب نمی‌دهد — همین‌جا تونل VPN وارد می‌شود.

با تونل WireGuard که در بخش قبل گفتیم، در تنظیمات همان تونل یک DNS برای کلاینت‌ها تعریف می‌کنید که IP داخلی Pi-hole باشد؛ اگر به‌جای اپ یک‌کلیکی ترجیح می‌دهید خودتان WireGuard را دستی تنظیم کنید، این راهنمای راه‌اندازی WireGuard مراحل را کامل توضیح می‌دهد. از آن لحظه، هر دستگاهی که به VPN وصل است، درخواست‌های DNS‌اش از همان مسیر امن به Pi-hole می‌رسد و تبلیغ‌ها مسدود می‌شوند، چه آن دستگاه توی خانه باشد چه بیرون.

Pi-hole در برابر AdGuard Home: کدام را انتخاب کنیم؟

هر دو کار یکسانی انجام می‌دهند اما چند تفاوت عملی دارند:

ویژگیPi-holeAdGuard Home
نصب و اجرااسکریپت نصب روی اوبونتو/دبیان، چند سرویس جدا (FTL، lighttpd)یک باینری تکی Go، نصب و آپدیت ساده‌تر
DNS-over-HTTPS/TLSنیاز به ابزار جدا مثل cloudflared یا Unboundپشتیبانی داخلی، بدون نصب اضافه
سرور DHCP داخلیدارددارد
فهرست‌های مسدودسازی آمادهجامعه بزرگ‌تر، فهرست‌های بیشترفهرست‌های خوب ولی کمتر از Pi-hole
مصرف منابعکمترکمی بیشتر
گزارش‌گیری و رابط کاربریPHP، ساده و کاربردیReact، کمی مدرن‌تر

برای شروع و منابع محدود، Pi-hole انتخاب رایج‌تری است. اگر از ابتدا DNS-over-HTTPS بدون تنظیم جانبی می‌خواهید، AdGuard Home سریع‌تر به نتیجه می‌رساند.

مشکلات رایج و راه‌حل آن‌ها

پورت ۵۳ قبلا اشغال است: روی اوبونتوهای تازه، سرویس systemd-resolved معمولا همین پورت را گرفته. دستور زیر stub resolver آن را خاموش می‌کند تا Pi-hole بتواند پورت ۵۳ را بگیرد:

sudo sed -i 's/#DNSStubListener=yes/DNSStubListener=no/' /etc/systemd/resolved.conf
sudo systemctl restart systemd-resolved

پنل مدیریت باز نمی‌شود: سرویس lighttpd را چک کنید: sudo systemctl status lighttpd. اگر غیرفعال بود، sudo systemctl restart lighttpd معمولا کافی است.

درخواست‌های زیاد مسدود می‌شوند و سایت‌های عادی هم کار نمی‌کنند: FTL یک rate limit پیش‌فرض دارد که بعد از تعداد مشخصی درخواست در یک بازه زمانی کوتاه، همه را موقتا می‌بندد. اگر شبکه‌تان دستگاه‌های زیادی دارد، این عدد را در /etc/pihole/pihole-FTL.conf با پارامتر RATE_LIMIT بالاتر ببرید.

فهرست‌ها آپدیت نمی‌شوند: دستور pihole -g فهرست‌های مسدودسازی را دستی بازخوانی می‌کند؛ اگر خطا داد، معمولا به دسترسی سرور به اینترنت بیرون برمی‌گردد.

جمع‌بندی

Pi-hole روی سرور مجازی یک راه‌حل سبک و قابل‌اعتماد برای مسدودسازی تبلیغ و ردیاب در سطح کل شبکه است، به شرطی که پورت DNS را پشت فایروال یا VPN نگه دارید. اگر هنوز سرور ندارید، یک سرور مجازی آریانت برای این کار بیشتر از کافی است و در چند دقیقه آماده می‌شود.

سؤالات متداول

آیا Pi-hole تبلیغ داخل اپلیکیشن موبایل را هم مسدود می‌کند؟ بله، تا جایی که آن اپلیکیشن تبلیغش را از یک دامنه مشخص می‌گیرد. تبلیغ‌هایی که داخل خود اپلیکیشن بدون درخواست DNS جدا بار می‌شوند، مسدود نمی‌شوند.

Pi-hole جای آنتی‌ویروس یا VPN را می‌گیرد؟ نه، کار این سه جدا از هم است. Pi-hole فقط دامنه‌های تبلیغ و ردیاب را فیلتر می‌کند؛ برای رمزنگاری ترافیک یا محافظت در برابر بدافزار باید کنار آن از VPN و آنتی‌ویروس هم استفاده کرد.

اجرای Pi-hole چقدر منابع سرور را مصرف می‌کند؟ برای یک خانه یا دفتر کوچک، ۱ vCPU و ۱ گیگابایت رم معمولا کافی است. مصرف واقعی به تعداد دستگاه‌ها و حجم فهرست‌های مسدودسازی بستگی دارد.

اگر سرور خاموش شود، اینترنت کاربران قطع می‌شود؟ اگر Pi-hole تنها DNS سرور تعریف‌شده باشد و از دسترس خارج شود، دستگاه‌ها نمی‌توانند دامنه‌ها را resolve کنند. برای همین بهتر است یک DNS پشتیبان (مثل ۱٫۱٫۱٫۱) هم در تنظیمات دوم ثبت شود.