====== Synology Adblocker ======
===== Information =====
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.
===== Sources =====
[[https://synologytweaks.wordpress.com/2015/08/23/use-synology-as-an-ad-blocker/|synologytweaks.wordpress.com]]