۱- نصب بستههای مورد نیاز ، وب سرور lighttpd ، بسته dnscrypt-proxy برای پشتیبانی از dnscrypt ورژن۲ به بعد ، همینطور بستههای php-sqlite و bind-tools و php-cgi
1 |
sudo pacman -S dnscrypt-proxy lighttpd php-cgi php-sqlite bind-tools |
بستههای pi-hole-server pi-hole-ftl را از AUR بگیرید
1 |
yay -S pi-hole-server pi-hole-ftl |
۲- انجام تنظیمات مربوط به dnscrypt
ابتدا دستور زیر را برای ساخت فایل تنظیمات dnscrypt در دایرکتوری etc/dnsmasq.d/ اجرا کنید:
1 |
sudo nano /etc/dnsmasq.d/02.dnscrypt.conf |
سپس محتویات زیر را در این فایل قرار داده و فایل را ذخیره کنید:
1 2 |
listen-address=127.0.0.1 server=127.0.0.1#5354 |
سپس فایل تنظیمات dnscrypt را با استفاده از دستور زیر باز کنید:
1 |
sudo nano /etc/dnscrypt-proxy/dnscrypt-proxy.toml |
در این فایل مقدار پارامتر require_dnssec را برابر با true قرار دهید تا فقط از سرورهای دارای قابلیت dnssec استفاده شود:
1 2 |
# Server must support DNS security extensions (DNSSEC) require_dnssec = true |
در همین فایل خط زیر رو پیدا کنید:
1 |
listen_addresses = ['127.0.0.1:53', '[::1]:53'] |
حالا هرجا ۵۳ دیدید اون رو به ۵۳۵۴ تعییر بدید ، سپس فایل را ذخیره کرده و دستور زیر را اجرا کنید:
1 |
sudo systemctl edit dnscrypt-proxy.socket |
و محتویات زیر را در فایل باز شده قرار داده و ذخیره کرده و خارج شوید:
1 2 3 4 5 |
[Socket] ListenStream= ListenDatagram= ListenStream=127.0.0.1:5354 ListenDatagram=127.0.0.1:5354 |
اینکار سبب میشود که dnscrypt به جای پورت پیش فرض ۵۳ از پورت ۵۳۵۴ استفاده نماید و پورت ۵۳ برای استفاده dnsmasq آزاد باشد و dnsmasq به عنوان سرور dns پیش فرض سیستم عمل کند.
۳- انجام تنظیمات مربوط به pi-hole
ابتدا دستور زیر را اجرا کنید:
1 |
sudo nano /etc/pihole/setupVars.conf |
سپس در فایل باز شده تمامی خطوطی که با PIHOLE_DNS شروع میشوند را با قرار دادن کاراکتر # در ابتدای خط به حالت کامنت در بیاورید:
1 2 |
#PIHOLE_DNS_1=8.8.8.8 #PIHOLE_DNS_2=8.8.4.4 |
بعد از ذخیره کردن فایل دستور زیر را اجرا کنید:
1 |
sudo nano /etc/dnsmasq.d/01-pihole.conf |
در فایل باز شده تمامی خطوطی که با server یا با interface شروع میشوند را با قرار دادن کاراکتر # در ابتدای خط به حالت کامنت در بیاورید:
1 2 3 4 5 6 7 8 9 10 11 12 13 |
addn-hosts=/etc/pihole/gravity.list addn-hosts=/etc/pihole/local.list addn-hosts=/etc/pihole/black.list localise-queries no-resolv cache-size=10000 log-queries=extra log-facility=/run/log/pihole/pihole.log local-ttl=300 log-async #server=8.8.8.8 #server=8.8.4.4 #interface=enp4s0f2 |
فایل را ذخیره کرده و خارج شوید. با این کار pi-hole از سرور های dns پیش فرض خود استفاده نمی کند.
۴- تنظیم سیستم برای استفاده از سرور DNS لوکال
فایل etc/resolvconf.conf/ را با دستور زیر باز کنید:
1 |
sudo nano /etc/resolvconf.conf |
در فایل باز شده خط name_servers را از حالت کامنت خارج کنید که به صورت زیر شود:
1 2 3 4 5 6 7 |
# 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 |
فایل را ذخیره کرده و خارج شوید.
اگر از برنامه networkmanager برای مدیریت شبکه استفاده میکنید دستور زیر را برای باز کردن فایل تنظیمات networkmanager اجرا کنید:
1 |
sudo nano /etc/NetworkManager/NetworkManager.conf |
سپس در فایل باز شده زیر قسمت [main] مقدار پارامتر dns را به صورت زیر قرار دهید:
1 2 |
[main] dns=none |
ذخیره کرده و خارج شوید. حالا فایل زیر رو باز کنید:
1 |
sudo nano /etc/php/php.ini |
فایلهای زیر رو در اون پیدا کنید و کامنت کنید:
1 2 3 |
#extension=pdo_sqlite #extension=sqlite3 #extension=sockets |
ذخیره کنید و خارج بشید.
۵- تنظیم dnsmasq برای استفاده از فایل تنظیمات دلخواه در دایرکتوری etc/dnsmasq.d/
ابتدا دستور زیر را برای باز کردن فایل تنظیمات dnsmasq اجرا کنید:
1 |
sudo nano /etc/dnsmasq.conf |
سپس به انتهای فایل رفته و خط زیر را با برداشتن علامت # از ابتدای خط از حالت کامنت خارج کنید:
1 |
conf-dir=/etc/dnsmasq.d/,*.conf |
سپس فایل را ذخیره کرده و خارج شوید.
۶- فعال کردن سرویسهای مورد نیاز:
1 2 3 4 5 |
sudo systemctl enable pihole-FTL.service sudo systemctl enable dnscrypt-proxy.service sudo systemctl enable dnscrypt-proxy.socket sudo systemctl enable lighttpd.service |
خب حالا یبار سیستم ریبوت کنید و برای تست pihole اینو داخل مرورگرتون بزنید:
1 |
https://blockads.fivefilters.org/?pihole |
باید همچین خروجی داشته باشه:
حالا در مرورگر این آدرس رو وارد کنید:
1 |
127.0.0.1/admin |
این صفحه براتون باز میشه:

از منو سمت چپ به setting برید و بعد برید به تب DNS حالا مثل من این تیک هارو بزنید و اگر چیزی اضافی تیک خورده پاک کنید:

خب اسکرول کنید و به انتهای صفحه برید و گزینهی save رو بزنید. حالا دوباره به setting برگردید و وارد تب system بشید و گزینهی Restar DNS Resolver رو بزنید.
حالا ترمینال رو باز کنید و با زدن کد زیر یک پسورد برای pihole تعیین کنید:
1 |
pihole -a -p |
دوباره مرورگر باز کنید و بزنید:
1 |
127.0.0.1/admin |
حالا باید لاگین کنید و رمز خودتون رو وارد کنید ، پیشنهاد میکنم این صفحه رو بوکمارک کنید که راحت باشید برای بارهای بعد 🙂
با تشکر ویژه از محمدرضای عزیز و همینطور سعید گرامی
بسیار عالی بود
از اینکه شما هم مطلبی خوب و پر بار در این باره دارید لذت بردم راستی در داکر هاب هم pi-hole موجود هست