شما هنوز به سیستم وارد نشده اید.

#1 2018-03-03 12:27:34

morealaz
Moderator
از : کرمان
ثبت شده: 2016-03-19
ارسال ها: 332

سرویس DNS امن و AD-BLOCKING با استفاده از DNSCrypt و Pi-Hole

سلام. اگر خاطر دوستان باشه، من قبلا در تاپیک جلوگیری از DNS Spoofing با استفاده از DNSCrypt در مورد DNSCrypt و مزایای استفاده از اون صحبت کرده بودم. توسعه دهنده قبلی DNSCrypt توسعه این سیستم رو متوقف کرد و ادامه نداد. ولی توسعه نسخه ۲ این پروژه توسط توسعه دهنده دیگری ادامه پیدا کرد و در حال حاضر به صورت فعالی ادامه دارد. در نسخه ۲ بسیاری از اشکالت برنامه و پروتکل مورد استفاده آن رفع شد و برنامه dnscrypt-proxy با استفاده از زبان Go نوشته شد، که این کار مزایای بسیاری را به همراه داشت. در این تاپیک شیوه استفاده و راه اندازی نسخه ۲ DNSCrypt را با استفاده از بسته dnscrypt-proxy را توضیح می دهم. برنامه دیگری که در این تاپیک از آن استفاده میکنیم Pi-Hole میباشد. این برنامه یک سرویس AD-BLOCKING را برای کل سیستم شما فراهم می کند. به طوریکه درخواستهای اتصال به سرورهای تبلیغات را به کلی قطع می کند که اینکار سبب بهبود کیفیت شبکه و امنیت سیستم شما میشود. این برنامه از سرور dnsmasq به عنوان سرور لوکال DNS استفاده میکند که نقش DNS Caching را ایفا میکند و این خود سبب بهبود سرعت پاسخگویی به درخواستهای DNS به صورت چشمگیری میشود.
مراحل کار به ترتیب زیر میباشد:

  • ۱- نصب بسته های dnscrypt-proxy و pi-hole-server از طریق AUR.
    بسته dnsmasq به عنوان پیش نیاز pi-hole به صورت اتوماتیک نصب میشود.

  • ۲- تنظیم dnsmasq برای استفاده از فایل تنظیمات دلخواه در دایرکتوری etc/dnsmasq.d/:
    ابتدا دستور زیر را برای باز کردن فایل تنظیمات dnsmasq اجرا کنید:

    $ sudo nano /etc/dnsmasq.conf

    سپس به انتهای فایل رفته و خط زیر را با برداشتن علامت # از ابتدای خط از حالت کامنت خارج کنید:

    conf-dir=/etc/dnsmasq.d/,*.conf

    سپس فایل را ذخیره کرده و خارج شوید.

  • ۳- انجام تنظیمات مربوط به dnscrypt
    ابتدا دستور زیر را برای ساخت فایل تنظیمات dnscrypt در دایرکتوری etc/dnsmasq.d/ اجرا کنید:

    $ sudo nano /etc/dnsmasq.d/02.dnscrypt.conf

    سپس محتویات زیر را در این فایل قرار داده و فایل را ذخیره کنید:

    listen-address=127.0.0.1
    server=127.0.0.1#5354

    سپس فایل تنظیمات dnscrypt را با استفاده از دستور زیر باز کنید:

    $ sudo nano /etc/dnscrypt-proxy/dnscrypt-proxy.toml

    در این فایل مقدار پارامتر require_dnssec را برابر با true قرار دهید تا فقط از سرورهای دارای قابلیت dnssec استفاده شود:

    # Server must support DNS security extensions (DNSSEC)
    require_dnssec = true

    سپس فایل را ذخیره کرده و دستور زیر را اجرا کنید:

    $ sudo systemctl edit dnscrypt-proxy.socket

    و محتویات زیر را در فایل باز شده قرار داده و ذخیره کرده و خارج شوید:

    [Socket]
    ListenStream=
    ListenDatagram=
    ListenStream=127.0.0.1:5354
    ListenDatagram=127.0.0.1:5354

    اینکار سبب میشود که dnscrypt به جای پورت پیش فرض 53 از پورت 5354 استفاده نماید و پورت 53 برای استفاده dnsmasq آزاد باشد و dnsmasq به عنوان سرور dns پیش فرض سیستم عمل کند.

  • ۴- انجام تنظیمات مربوط به pi-hole
    ابتدا دستور زیر را اجرا کنید:

    $ sudo nano /etc/pihole/setupVars.conf

    سپس در فایل باز شده تمامی خطوطی که با PIHOLE_DNS شروع میشوند را با قرار دادن کاراکتر # در ابتدای خط به حالت کامنت در بیاورید:

    #PIHOLE_DNS_1=8.8.8.8
    #PIHOLE_DNS_2=8.8.4.4

    بعد از ذخیره کردن فایل دستور زیر را اجرا کنید:

    $ sudo nano /etc/dnsmasq.d/01-pihole.conf

    در فایل باز شده تمامی خطوطی که با server  یا با interface شروع میشوند را با قرار دادن کاراکتر # در ابتدای خط به حالت کامنت در بیاورید:

    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/ را با دستور زیر باز کنید:

    $ sudo nano /etc/resolvconf.conf

    در فایل باز شده خط name_servers را از حالت کامنت خارج کنید که به صورت زیر شود:

    # 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 اجرا کنید:

    $ sudo nano /etc/NetworkManager/NetworkManager.conf

    سپس در فایل باز شده زیر قسمت [main] مقدار پارامتر dns را به صورت زیر قرار دهید:

    [main]
    dns=none

    ذخیره کرده و خارج شوید.

  • ۶- فعال کردن سرویسهای مربوط و راه اندازی سیستم
    با دستور زیر سرویس های مورد نیاز را فعال کنید:

    $ sudo systemctl enable dnsmasq.service dnscrypt-proxy.socket

    سپس سیستم خود را ریستارت کنید تا سرویسهای شما فعال و اجرا شود.

  • ۷- تست سیستم
    ابتدا تست کنید که سرویسهای شما بدون مشکل اجرا شده باشند:

    $ sudo systemctl status dnsmasq.service dnscrypt-proxy.socket

    سپس تست کنید که محتویات فایل etc/resolv.conf/ به صورت زیر باشد:

    # Generated by resolvconf
    nameserver 127.0.0.1

    در غیر اینصورت مقدار nameserver را مطابق بالا تنظیم کنید.
    تست dnscrypt:

    $ dnscrypt-proxy -resolve ddg.gg

    خروجی باید چیزی شبیه به این باشد:

    morealaz@archlinux ~ % dnscrypt-proxy -resolve ddg.gg    
    Resolving [ddg.gg]
    
    Domain exists:  yes, 6 name servers found
    Canonical name: ddg.gg.
    IP addresses:   184.72.106.52
    TXT records:    -
    Resolver IP:    128.52.130.209 (onic.csail.mit.edu.)

    تست dnsmasq

    $ dig ddg.gg

    خروجی چیزی شبیه به این باید باشد:

    morealaz@archlinux ~ % dig ddg.gg                    
    
    ; <<>> DiG 9.12.0 <<>> ddg.gg
    ;; global options: +cmd
    ;; Got answer:
    ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 56707
    ;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1
    
    ;; OPT PSEUDOSECTION:
    ; EDNS: version: 0, flags:; udp: 4096
    ;; QUESTION SECTION:
    ;ddg.gg.				IN	A
    
    ;; ANSWER SECTION:
    ddg.gg.			396	IN	A	184.72.106.52
    
    ;; Query time: 0 msec
    ;; SERVER: 127.0.0.1#53(127.0.0.1)
    ;; WHEN: Sat Mar 03 10:59:32 +0330 2018
    ;; MSG SIZE  rcvd: 51

    چک کنید که در خروجی زمان درخواست و سرور مورد استفاده به صورت زیر باشد

    ;; Query time: 0 msec
    ;; SERVER: 127.0.0.1#53(127.0.0.1)

    تست pi-hole
    صفحه PAGES TO TEST AD-BLOCKING PERFORMANCE را در مرورگر خود باز کنید. در این صفحه تعدادی لینک به صفحاتی که محتوی تبلیغات هستند قرار دارد که میتوانید از آنها برای تست استفاده کنید. خود صفحه نیز دارای یک سری تبلیغات از گوگل و آمازون می باشد که در صورتیکه همه چیز به خوبی انجام شده باشد این تبلیغات نمایش داده نمی شود. با دستور pihole نیز می توانید کارکرد Pi-Hole را کنترل و مانیتور کنید.
    به عنوان نمونه با فلگ status وضعیت pihole را چک میکنید:

    morealaz@archlinux ~ % pihole status
    [sudo] password for morealaz: 
      [✓] DNS service is running
      [✓] Pi-hole blocking is Enabled

    با فلگ t- لاگ pihole را به صورت live مشاهده می کنید:

    morealaz@archlinux ~ % pihole -t
      [i] Press Ctrl-C to exit
    Mar  3 11:08:54 dnsmasq[2667]: 808 127.0.0.1/53042 query[A] clients4.google.com from 127.0.0.1
    Mar  3 11:08:54 dnsmasq[2667]: 808 127.0.0.1/53042 cached clients4.google.com is <CNAME>
    Mar  3 11:08:54 dnsmasq[2667]: 808 127.0.0.1/53042 cached clients.l.google.com is 172.217.22.174
    Mar  3 11:09:02 dnsmasq[2667]: 809 127.0.0.1/53315 query[A] api.openweathermap.org from 127.0.0.1
    Mar  3 11:09:02 dnsmasq[2667]: 809 127.0.0.1/53315 cached api.openweathermap.org is 146.185.181.89
    Mar  3 11:09:02 dnsmasq[2667]: 809 127.0.0.1/53315 cached api.openweathermap.org is 95.85.63.65
    Mar  3 11:09:02 dnsmasq[2667]: 809 127.0.0.1/53315 cached api.openweathermap.org is 178.62.207.82
    Mar  3 11:09:02 dnsmasq[2667]: 810 127.0.0.1/53315 query[AAAA] api.openweathermap.org from 127.0.0.1
    Mar  3 11:09:02 dnsmasq[2667]: 810 127.0.0.1/53315 forwarded api.openweathermap.org to 127.0.0.1
    Mar  3 11:09:03 dnsmasq[2667]: 810 127.0.0.1/53315 reply api.openweathermap.org is NODATA-IPv6

    برای دیدن راهنمای دستور از فلگ h- استفاده کنید:

    morealaz@archlinux ~ % pihole -h
    Usage: pihole [options]
    Example: 'pihole -w -h'
    Add '-h' after specific commands for more information on usage
    
    Whitelist/Blacklist Options:
      -w, whitelist       Whitelist domain(s)
      -b, blacklist       Blacklist domain(s)
      -wild, wildcard     Blacklist domain(s), and all its subdomains
                            Add '-h' for more info on whitelist/blacklist usage
    
    Debugging Options:
      -d, debug           Start a debugging session
                            Add '-a' to enable automated debugging
      -f, flush           Flush the Pi-hole log
      -t, tail            View the live output of the Pi-hole log
    
    Options:
      -a, admin           Admin Console options
                            Add '-h' for more info on admin console usage
      -c, chronometer     Calculates stats and displays to an LCD
                            Add '-h' for more info on chronometer usage
      -g, updateGravity   Update the list of ad-serving domains
      -h, --help, help    Show this help dialog
      -l, logging         Specify whether the Pi-hole log should be used
                            Add '-h' for more info on logging usage
      -q, query           Query the adlists for a specified domain
                            Add '-h' for more info on query usage
      -v, version         Show installed versions of Pi-hole, Admin Console & FTL
                            Add '-h' for more info on version usage
      status              Display the running status of Pi-hole subsystems
      enable              Enable Pi-hole subsystems
      disable             Disable Pi-hole subsystems
                            Add '-h' for more info on disable usage
      restartdns          Restart Pi-hole subsystems

برای دیدن اطلاعات بیشتر به صفحات زیر مراجعه کنید
https://wiki.archlinux.org/index.php/DNSCrypt
https://wiki.archlinux.org/index.php/Pi-hole
https://wiki.archlinux.org/index.php/Dnsmasq
https://github.com/pi-hole/pi-hole/wiki/DNSCrypt-2.0

امیدوارم مفید بوده باشد

آخرین ویرایش توسط morealaz (2018-04-09 11:05:38)

آفلاین

#2 2018-04-08 06:43:50

alireza_amirsamimi
عضو
از : شیراز
ثبت شده: 2015-11-04
ارسال ها: 130
وب سایت

پاسخ: سرویس DNS امن و AD-BLOCKING با استفاده از DNSCrypt و Pi-Hole

علاوه بر بحث امنیت، برای من تاثیر چشمگیری در سرعت باز شدن سایتها داشت! ممنونم

آفلاین

#3 2018-04-09 11:13:29

morealaz
Moderator
از : کرمان
ثبت شده: 2016-03-19
ارسال ها: 332

پاسخ: سرویس DNS امن و AD-BLOCKING با استفاده از DNSCrypt و Pi-Hole

بسته dnscrypt-proxy موجود در مخزن community آرچ نیز به روز رسانی شد و نسخه 2 dnscrypt رو که با go نوشته شده نصب میکند. بسته موجود در aur که قبلا با نام dnscrypt-proxy-go بود نیز حذف شده و در حال حاضر تنها یک بسته با نام dnscrypt-proxy-git در aur وجود دارد که برای نصب آخرین نسخه مربوط به dnscrypt 2 از طریق گیتهاب میتونید از اون استفاده کنید. اگر قبلا بسته dnscrypt-proxy-go رو از طریق aur نصب کردید حتما بسته dnscrypt-proxy موجود در مخازت رسمی رو جایگزین اون کنید تا جدیدترین نسخه برنامه برای شما نصب بشه. من لینک بسته رو در پست اول خودم تصحیح کردم.

آفلاین

#4 2018-04-14 12:52:58

linuxlover
عضو
از : locate $(whoami)
ثبت شده: 2017-09-22
ارسال ها: 25
وب سایت

پاسخ: سرویس DNS امن و AD-BLOCKING با استفاده از DNSCrypt و Pi-Hole

درود بر محمدرضای دانا . ممنون بابت این آموزش فوق العاده مفید . اما من یک مشکل دارم :

اگر از برنامه networkmanager برای مدیریت شبکه استفاده میکنید دستور زیر را برای باز کردن فایل تنظیمات networkmanager اجرا کنید:

$ sudo nano /etc/NetworkManager/NetworkManager.conf

سپس در فایل باز شده زیر قسمت [main] مقدار پارامتر dns را به صورت زیر قرار دهید:

[main]
dns=none

ذخیره کرده و خارج شوید.

بعد از اجرای این قسمت دیگه نمیتونم از openvpn استفاده کنم!

آفلاین

#5 2018-04-14 13:31:03

morealaz
Moderator
از : کرمان
ثبت شده: 2016-03-19
ارسال ها: 332

پاسخ: سرویس DNS امن و AD-BLOCKING با استفاده از DNSCrypt و Pi-Hole

linuxlover نوشته است که:

درود بر محمدرضای دانا . ممنون بابت این آموزش فوق العاده مفید . اما من یک مشکل دارم :

اگر از برنامه networkmanager برای مدیریت شبکه استفاده میکنید دستور زیر را برای باز کردن فایل تنظیمات networkmanager اجرا کنید:

$ sudo nano /etc/NetworkManager/NetworkManager.conf

سپس در فایل باز شده زیر قسمت [main] مقدار پارامتر dns را به صورت زیر قرار دهید:

[main]
dns=none

ذخیره کرده و خارج شوید.

بعد از اجرای این قسمت دیگه نمیتونم از openvpn استفاده کنم!

سلام. این قسمت رو برای این انجام میدیدم که برنامه networkmanager به هنگام اتصال به یک شبکه تنظیمات dns رو بازنویسی نکند. چون که ما نیاز داریم که در فایل resolv.conf آدرس 127.0.0.1 به عنوان سرور dns پیش فرض قرار گرفته باشد که تمامی درخواستهای dns سیستم از طریق برنامه dnsmasq که به عنوان سرور لوکال ما در حال اجرا هست انجام شود. در مورد openvpn لینک زیر احتمالا بتونه کمکت بکنه:
https://github.com/pi-hole/pi-hole/wiki … VPN-server

آفلاین

#6 2018-10-30 02:31:59

P30GAMES
عضو
از : تهران
ثبت شده: 2015-10-27
ارسال ها: 117
وب سایت

پاسخ: سرویس DNS امن و AD-BLOCKING با استفاده از DNSCrypt و Pi-Hole

pi-hole-ftl and dnsmasq are in conflict.


:: محسن شایان
:: توییتر

آفلاین

#7 2018-10-30 18:03:10

ALipAkrohk
عضو
از : بوشهر
ثبت شده: 2017-09-07
ارسال ها: 39

پاسخ: سرویس DNS امن و AD-BLOCKING با استفاده از DNSCrypt و Pi-Hole

سلام من از مانجارو استفاده می کنم و این مشکل رو دارم.
بعد وارد کردن دستور برای فعال سازی سرویس ها به من این اخطار رو میده

 Failed to enable unit: Unit file dnsmasq.service does not exis 

وقتی سعیی می کنم dnsmasq رو نصب کنم ازم درخواست می کنه که pi-hole-flt رو پاک کنم دلیل این ها چیه؟
راهنمایی کنید ممنون میشم.


20 =! 20
با هم بیاموزیم به هم نیاموزیم.
پاک روح.(آپاراک).

آفلاین

#8 2018-10-30 21:01:04

morealaz
Moderator
از : کرمان
ثبت شده: 2016-03-19
ارسال ها: 332

پاسخ: سرویس DNS امن و AD-BLOCKING با استفاده از DNSCrypt و Pi-Hole

ظاهرا در نسخه جدید از pi-hole-ftl برای dns استفاده میشه که یک فورک از dnsmasq هست و اجازه استفاده از dnsmasq رو نمیده ونیازی به dnsmasq نیست. برای توضیحات بیشتر به صفحه زیر مراجعه کنید:
https://wiki.archlinux.org/index.php/Pi-hole#FTL

آفلاین

#9 2018-10-30 21:40:02

P30GAMES
عضو
از : تهران
ثبت شده: 2015-10-27
ارسال ها: 117
وب سایت

پاسخ: سرویس DNS امن و AD-BLOCKING با استفاده از DNSCrypt و Pi-Hole

ظاهرا قراره باهم ادغام بشه. من که ublock دارم مشکلی ندارم البته این برای رزبری پای عالیه همراه با تور


:: محسن شایان
:: توییتر

آفلاین

پانوشت انجمن

پشتیبانی توسط تیم آرچ لینوکس ایران و نیرو گرفته با FluxBB