میتوانید از محتویات این باکس بگذرید و یکراست به سراغ نوشته اصلی بروید. قبل از خرید اشتراک وفاداری، مزایای آن را از طریق این پیوند مشاهده کنید. لطفا تنها بعد از خواندن «مزایای خرید اشتراک» اقدام به خرید کنید.
با همدیگر روتر پیشرفته را، تحت آرچلینوکس ساختیم. تواناییهای این سیستمعامل تمامی ندارد، و پتانسیلهای بالقوهای که میتوانید از آنها استفاده کنید، دست شما را برای پیکربندی هرچه بیشتر آن باز میگذارد. همچنین خیل عظیمی از برنامههای تحت لینوکس مانند Pi-hole دنیای بزرگی را پیش روی شما میگشاید.
حالا که سایتهایی مثل یوتیوب بر روی ما باز است و از طرفی اینترنت کل شبکه از طریق سرورمان تغذیه میشود، میتوانید از یک سینک DNS استفاده کنیم و از شر تبلیغات و رهگیریِ سایتهایی خلاص شویم که ما را همه جای اینترنت دنبال میکنند تا با تبلیغات شخصیسازی شده ما را وادار به خرید چیزهایی کنند که پیشتر نمیخواستیم.
تبلیغات روی بازیهای موبایل هم که امان همه را بُریده است. با آنها هم بد نیست خداحافظی کنیم. اما چطور؟
پروژهای به نام Pi-hole به همین منظور ساخته شده است. این برنامه از دو جنبه اصلی برای ما حائز اهمیت است:
اول اینکه با استفاده از فیلتر کردن درخواستها در سطح DNS ما را از شر تبلیغات و سایتها و بنرهای ناخواسته خلاص میکند. از آنجایی که این اتفاق روی سرور و روتر اصلی ما میافتد، تمام دستگاههای ما از این نعمت برخوردار خواهند شد؛
و دوم اینکه با فیلتر شدن موارد مذکور، سرعت باز شدن سایتها بالا میرود و ترافیک مصرفی کاهش پیدا میکند.
همچنین به نظر میرسد که Pi-hole درخواستهای DNS به کلاودفلر را رمز میکند. در حقیقت راههایی برای رمز کردن درخواستها به صورت DoH وجود دارد ولی به نظر میرسد که درخواستها بدون هیچ دردسر اضافی از طریق Pi-hole رمز میشوند. تست زیر گواه این موضوع است. با این وجود برای اطمینان از رمز شدن درخواستها، میتوانید به انتهای مقاله مراجعه کنید.
به سراغ اصل مطلب برویم. برای نصب Pi-hole لازم است از مخزن کاربران آرچ کمک بگیریم.
ابتدا بسته pi-hole-ftl را از این مخزن نصب میکنیم. برای این کار نیاز به گیت و ابزارهایی داریم که نصب خواهیم کرد.
sudo pacman -S --needed base-devel git
دستورهای زیر به ترتیب ۱) مخزن را کلون میکند، ۲) وارد دایرکتوری آن میشود و ۳) سپس بستهی قابل نصب را میسازد. بعد از ساخته شده بسته، پکمن به صورت خودکار اقدام به نصب بسته میکند:
git clone https://aur.archlinux.org/pi-hole-ftl.git cd pi-hole-ftl makepkg -si
بعد از نصب pi-hole-ftl نوبت به نصب اصل کار یعنی pi-hole-server از مخزن کاربران آرچ است.
git clone https://aur.archlinux.org/pi-hole-server.git cd pi-hole-server makepkg -si
بعد از نصب بسته، آن را فعال و راهاندازی میکنیم:
sudo systemctl enable --now pihole-FTL.service
اگر راهاندازی با مشکل مواجه شد، احتمالا systemd-resolved.service روی سیستم شما فعال است. آن را غیرفعال کنید و سپس دو مرتبه سرویس pihole-FTL را راهاندازی کنید.
sudo systemctl stop systemd-resolved.service sudo systemctl disable systemd-resolved.service sudo systemctl restart pihole-FTL.service
رابط وب
بهتر است رابط وب برای دسترسی سادهتر راهاندازی کنیم. البته نیازی به این کار نیست ولی پیشنهاد میکنم این کار را برای مدیریت بهتر Pi-hole انجام دهید. بسته زیر را نصب میکنیم:
sudo pacman -S php-sqlite
سپس فایل زیر را باز میکنیم:
sudo nano /etc/php/php.ini
و خطوط زیر را به انتهای آن اضافه میکنیم:
extension=pdo_sqlite extension=sockets extension=sqlite3
حالا بسته زیر را نصب میکنیم:
sudo pacman -S lighttpd php-cgi
فایل پیکربندی آماده پای-هُل را کپی کنید. برای این کار نیاز به مجوز روت دارید:
sudo cp /usr/share/pihole/configs/lighttpd.example.conf /etc/lighttpd/lighttpd.conf
بعد از نصب بستههای فوق سرویس مربوطه را راهاندازی و فعال میکنیم:
sudo systemctl enable --now lighttpd.service
نوبت به دستکاری فایل hosts است. فایل زیر را باز میکنیم:
sudo nano /etc/hosts
و خط زیر را به آن اضافه میکنیم:
ip.address.of.pihole pi.hole myhostname
البته باید تغییراتی در آن بدهید. اگر فرض کنیم که (با توجه به تنظیماتی که در نوشته تبدیل کامپیوتر قدیمی به یک روتر پیشرفته) hostname یا نام کامپیوتر من archie است و آیپی سیستم از نوع ثابت و برابر با است، 192.168.1.2 خط بالا به این صورت تغییر میکند:
192.168.1.2 pi.hole archie
اکنون آیپی آدرس Pi-hole به عنوان مقصد برای درخواستهای دیاناس ماست. لازم است سرور را به نحوی تنظیم کنیم که درخواستهای DNS به سمت Pi-hole ریدیرکت شوند.
حالا میتوانیم از طریق دستگاههای روی شبکه و با استفاده از آیپی Pi-hole به پنل مدیریتی آن دسترسی پیدا کنیم. برای مثالِ ما، آدرس 192.168.1.2 را در مرورگر باز میکنیم. همچنین از آیپی روتر برای باز کردن این صفحه نیز میتوانیم استفاده کنیم. از طریق سربرگ Settings > DNS میتوانیم تنظیمات مربوط به DNS را انجام دهیم. برای نمونه من تنظیمات زیر را اعمال کردم:
استفاده از Pi-hole به عنوان موتور DHCP
هرچند در روتر پیشرفتهمان دستمان برای پیکربندی موتور DHCP از طریق بسته dhcp باز است با این حال امکان الحاق آیپی از طریق Pi-hole به دستگاههای تحت شبکه وجود دارد. ابتدا باید مطمئن شوید که روتر شما در حالت برج یا ریلی قرار دارد. برای اطلاعات بیشتر به مقاله تبدیل کامپیوتر قدیمی به یک روتر پیشرفته مراجعه کنید.
از طریق Settings > DHCP صفحه زیر را باز میکنیم.
مطمئن میشویم که Gateway آیپی روتر ماست، و رنج آیپی نیز در محدوده ۲ تا ۲۵۴ تعریف شود. مثلا در تصویر فوق من رنج را از ۱۰۰ تا ۲۰۰ تعیین کردم و دستگاههایی که از طریق Pi-hole آیپی میگیرند، چیزی در این محدوده را دریافت خواهند کرد. در سمت دیگر میتوانیم مشخص کنیم که زمان DHCP lease چند ساعت باشد. همچنین متغیر Domain من معادل local است.
Pi-hole و Cloudflare محبوب من
شاید در دنیای اینترنت، هیچ شرکتی را در خصوص رعایت حریم شخصی به اندازه کلاودفلر قبول نداشته باشم. این تعصب من شاید ریشه در واقعیت نداشته باشد اما احترامی که برای آنها قائلم حتی از موزیلای اعظم بیشتر است. به هر حال در این قسمت میخواهم به شما نشان دهم که چطور میتوانید Pi-hole را به نحوی پیکربندی کنید که درخواستهای DNS ما از طریق DoH رمز و از طریق کلاودفلر پردازش شود.
باز مخزن کاربران آرچ به فریادمان میرسد. با دستورهای زیر بسته را کلون و نصب میکنیم.
git clone https://aur.archlinux.org/cloudflared.git cd cloudflared makepkg -si
فایل پیکربندی به صورت خودکار برای کلاودفلر روی آرچ ساخته میشود. برای تغییر تنظیمات آن میتوانیم آن را ویرایش کنیم:
sudo nano /etc/cloudflared/config.yml
محتویاتی که من استفاده میکنم به شکل زیر است:
--- logfile: /var/log/cloudflared.log proxy-dns: true proxy-dns-address: 127.0.0.1 proxy-dns-port: 5300 proxy-dns-upstream: - https://1.1.1.1/dns-query - https://1.0.0.1/dns-query #Uncomment following if you want to also want to use IPv6 for external DOH lookups #- https://[2606:4700:4700::1111]/dns-query #- https://[2606:4700:4700::1001]/dns-query
حالا سرویس کلاودفلر را فعال و راهاندازی میکنیم:
sudo systemctl enable --now cloudflared.service
از dig برای اطمینان از صحت عملکرد سرویس کمک میگیریم:
dig @127.0.0.1 -p 5300 google.com
خروجی زیر نشان از مرتب بودن همه چیز است:
; <<>> DiG 9.16.10 <<>> @127.0.0.1 -p 5300 google.com ; (1 server found) ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 16271 ;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1 ;; OPT PSEUDOSECTION: ; EDNS: version: 0, flags:; udp: 4096 ;; QUESTION SECTION: ;google.com. IN A ;; ANSWER SECTION: google.com. 158 IN A 172.217.168.46 ;; Query time: 783 msec ;; SERVER: 127.0.0.1#5300(127.0.0.1) ;; WHEN: Wed Dec 30 00:31:04 +0330 2020 ;; MSG SIZE rcvd: 65
حالا به پنل Pi-hole میرویم و از طریق سربرگ Settings > DNS مقدار Custom 1 (IPv4) را روی 127.0.0.1#5300 قرار میدهیم و تمام تیکهای مربوط به بقیه سرویسدهندهها را حذف میکنیم. مطابق تصویر زیر:
سرویس کلاودفلر قادر است که سرویسدهندههای دیگر از جمله گوگل را نیز پردازش کند. برای این منظور کافی است که خطوط زیر را به دنباله قسمت proxy-dns-upstream در فایل پیکربندی آن اضافه کنید (برای اضافه کردن گوگل):
- https://8.8.8.8/dns-query
حالا از طریق دستگاههای مختلف صفحه زیر را باز کنید و نتیجه را مشاهده کنید:
https://www.cloudflare.com/ssl/encrypted-sni/
خطایابی
تبلیغات همچنان پابرجاست؟ این بخش با توجه به تجربه خودم و دیگران به روز خواهد شد.
dhcpd.conf
شاید دستگاهها از راهی به غیر از Pi-hole در حال پردازش درخواستهای DNS هستند. برای نمونه اگر فایل مربوط به پیکربندی dhcp را روی روتر بررسی کنیم سرنخهایی به دست خواهیم آورد. برای مثال در روتر من خط اول این فایل به این صورت است:
option domain-name-servers 1.1.1.1, 1.0.0.1, 8.8.8.8;
که آن را به صورت زیر تغییر دادم:
option domain-name-servers 192.168.0.1;
این کار باعث میشود که دستگاههایی که از طریق این موتور آیپی میگیرند، درخواستهای DNS را به Pi-hole بفرستند.
resolveconf
اگر از بسته resolveconf استفاده میکنید فایل زیر را باز کنید:
sudo nano /etc/resolvconf.conf
و تمام خطهای مربوط به DNS را کامنت کنید و خط زیر را به آن اضافه کنید:
name_servers=127.0.0.1
نمونه فایل resolvconf.conf من به این شکل است:
# Configuration for resolvconf(8) # See resolvconf.conf(5) for details resolv_conf=/etc/resolv.conf # If you run a local name server, you should uncomment the below line and # configure your subscribers configuration files below. name_servers=127.0.0.1 #name_servers="1.1.1.1 1.0.0.1 2606:4700:4700::1111 2606:4700:4700::1001" #name_servers=192.168.1.2
حالا نوبت به ساخت فایل resolv.conf است. دستور زیر را صادر میکنیم:
sudo resolvconf -u
تغییر تنظیمات Pi-hole
با توجه به اینکه Pi-hole به طور رسمی از آرچلینوکس پشتیبانی نمیکند، تنظیمات آن از طریق دستور زیر در آرچلینوکس در دسترس نیست:
pihole -r
اما چطور آنها را تغییر دهیم؟ برای اینکار لازم است با استفاده از یک ویرایشگر متن، فایلهای زیر را مورد عنایت قرار دهید:
sudo nano /etc/pihole/setupVars.conf sudo nano /etc/pihole/dns-servers.conf sudo nano /etc/pihole/pihole-FTL.conf
برای تغییر رابطی که Pi-hole به آن گوش میدهد، فایل اولی را تغییر دهید. با استفاده از دستور ifconfig میتوانید نام دقیق رابط را استخراج کنید و در خط پیکربندیاش بنویسید.
عالی من داکرش را استفاده میکردم ولی مشکل عجیبی روی دستگاه کارت خوان داشت
سلام
بعد یه قرن پست جدید !!!
خوشحالم برگشتین
سلام. مرسی دوست عزیزم.