Outils pour utilisateurs

Outils du site


synology:dns-adblock

Ceci est une ancienne révision du document !


Synology Adblocker

Cette page va détailler les étapes pour configurer votre NAS Synology en tant que DNS filtrant la publicité en ligne.

Testé sur DSM 6.0.

Installer et configurer le package DNS Server officiel

L'installation du DNS Server se fait par Package Center.

Une fois installer, configurer comme ceci :

- Dans “Zones”, choisir “Créer”, “Nouvelle Master Zone”
- Type de Domain “Forward Zone”
- Nom de domaine “null.zone.file”
- Server DNS Maitre : l'IP de votre NAS
- Serial Format : Date (YYYYMMDDNN)

Activez ensuite la résolution vers un serveur externe, comme Google et son 8.8.8.8 (ou autre).

Script d'autoconfiguration

    #!/bin/sh
    #================================================================================
    # (C)2013 dMajo
    # Title       : ad-blocker.sh
    # Version     : V1.02.0018
    # Author      : dMajo (http://forum.synology.com/enu/memberlist.php?mode=viewprofile&u=69661)
    # Description : Script to block add-banner servers, dns based
    # Dependencies: Syno DNSServer package, sed, wget
    # Usage       : sh ad-blocker.sh
    #================================================================================
    # Version history:
    # 2013.09.01 - 1.00.0001: Initial release
    # 2013.09.08 - 1.00.0004: Fix: changed include target to support views
    # 2013.09.12 - 1.00.0005: Added automatic zone file generation and some basic error handling
    # 2014.03.29 - 1.01.0013: Added dependencies check
    # 2014.03.30 - 1.02.0017: Script reorganized
    # 2014.04.06 - 1.02.0018: Fix: fixed serial number in zone file generation
    #================================================================================

    # Define dirs
    RootDir="/var/packages/DNSServer/target"
    ZoneDir="${RootDir}/named/etc/zone"
    ZoneDataDir="${ZoneDir}/data"
    ZoneMasterDir="${ZoneDir}/master"

    cd ${ZoneDataDir}

    # Check if needed dependencies exists
       Dependencies="chown date grep mv rm sed wget"
       MissingDep=0
       for NeededDep in $Dependencies; do
          if ! hash "$NeededDep" >/dev/null 2>&1; then
             printf "Command not found in PATH: %s\n" "$NeededDep" >&2
             MissingDep=$((MissingDep+1))
          fi
       done
       if [ $MissingDep -gt 0 ]; then
          printf "Minimum %d commands are missing in PATH, aborting\n" "$MissingDep" >&2
          exit 1
       fi

    # Download the "blacklist" from "http://pgl.yoyo.org"
       wget "http://pgl.yoyo.org/as/serverlist.php?hostformat=bindconfig&showintro=0&mimetype=plaintext"

    # Modify Zone file path from "null.zone.file" to "/etc/zone/master/null.zone.file" in order to comply with Synology bind implementation
       rm -f ad-blocker.new
       sed -e 's/null.zone.file/\/etc\/zone\/master\/null.zone.file/g' "serverlist.php?hostformat=bindconfig&showintro=0&mimetype=plaintext" > ad-blocker.new
       rm "serverlist.php?hostformat=bindconfig&showintro=0&mimetype=plaintext"
       chown -R nobody:nobody ad-blocker.new
       if [ -f ad-blocker.new ] ; then
          rm -f ad-blocker.db
          mv ad-blocker.new ad-blocker.db
       fi

    # Include the new zone data
       if [ -f ad-blocker.db ] && [ -f null.zone.file ]; then
          grep -q 'include "/etc/zone/data/ad-blocker.db";' null.zone.file || echo 'include "/etc/zone/data/ad-blocker.db";' >> null.zone.file

          # Rebuild master null.zone.file
          cd ${ZoneMasterDir}
          rm -f null.zone.file
          Now=$(date +"%Y%m%d")
          echo '$TTL 86400         ; one day'         >> null.zone.file
          echo '@ IN    SOA   ns.null.zone.file. mail.null.zone.file. (' >> null.zone.file
    #      echo '      2013091200   ; serial number YYYYMMDDNN'      >> null.zone.file
          echo '      '${Now}'00   ; serial number YYYYMMDDNN'      >> null.zone.file
          echo '      86400      ; refresh   1 day'         >> null.zone.file
          echo '      7200      ; retry   2 hours'      >> null.zone.file
          echo '      864000      ; expire   10 days'      >> null.zone.file
          echo '      86400 )   ; min ttl   1 day'         >> null.zone.file
          echo '   NS   ns.null.zone.file.'               >> null.zone.file
          echo '   A   127.0.0.1'                  >> null.zone.file
          echo '* IN   A   127.0.0.1'               >> null.zone.file
       fi

    # Reload the server config after modifications
       ${RootDir}/script/reload.sh

    exit 0

Copiez le script dans le fichier /var/packages/DNSServer/target/script/ad-blocker.sh

Donnez lui des droits d'exécution :

chmod +x /var/packages/DNSServer/target/script/ad-blocker.sh

Et lancez le script :

sh /var/packages/DNSServer/target/script/ad-blocker.sh

L'ajouter aux tâches planifiées du NAS pour l'actualisation peut être envisagé.

Configuration réseau

Il ne reste plus qu'à renseigner ce serveur DNS au niveau de votre serveur DHCP, ou bien de le configurer en dur sur les machines.

Attention ! Lors du redémarrage du NAS, suite à mise à jour par exemple, il se peut que le service DNS soit en STOP. Pensez à le redémarrer.

Source 1

synology/dns-adblock.1466630759.txt.gz · Dernière modification : 2020/07/24 22:03 (modification externe)

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki