Er is ook geen package van, dus ik ben zelf maar even aan het prutsen geweest.
Ik kwam zo'n 2 weken geleden geleden het programma
Pi-Hole tegen op de frontpage, en heb me hier even wat verder over ingelezen. Het idee dat ads worden afgevangen vóórdat ze gedownload worden EN dat dit bij AL je apparaten thuis (dus afgezien van pc/laptop dus ook mobiel & tablet) automagisch gebeurd klinkt toch wel erg interessant !
Nu is het mogelijk om op de Synology een DNS server te draaien, en hiermee een vergelijkbare oplossing te maken. Dit is
enkele jaren geleden al eens door iemand gemaakt, maar imo nog veel te karig. Er wordt hier uitgegaan van een blocklist van zo'n 2400 websites, terwijl Pi-Hole er (standaard) al 20x meer gebuikt.
Tevens kwamen verschillende ads nog door op m'n telefoon.
Ik heb er dus even een paar
avonden weken

aan lopen sleutelen, en heb in eerste instantie een custom Blacklist + Whitelist toegevoegd.
(Note dat ik nog nooit eerder in Linux / Sh heb geprogrammeerd, dus het was best een tijdrovend maar leuk en leerzaam projectje, omdat het kan

)
Omdat ik na een weekje erachter kwam dat het veel praktischer is als sommige lijsten automatisch toegevoegd worden i.p.v. dat je elke week handmatig de Blacklist moet updaten, heb ik even uitgezocht hoe Pi-Hole dit doet. Die lijkt de URL's uit het volgende lijstje te gebruiken:
klik
Kortom: Ik heb deze ook maar toegevoegd!

Omdat de Windows hosts lijsten er compleet anders uitzien, moest er wel behoorlijk wat formatting gebeuren om alle host lijsten in precies het zelfde formaat te krijgen, maar dit lijkt tot nu toe goed te werken.
.
Ad-Block.sh
Voordat je alles installeert, is het verstandig eerst het script
ad-blocker.sh even te openen (in Notepad++), en vervolgens aangeven of je bepaalde host lijsten wel of niet wilt toevoegen. Bovenaan deze file is het mogelijk om bepaalde hosts lijsten wel of niet te importeren (1 of 0 invullen achter de naam) Sommige grote lijsten bevatten ook al (bijna) alle hostnamen van de kleinere lijsten, maar beide aanvinken is opzich geen probleem. Deze worden nu door m'n script gefilterd op dubbele entries.
Zie
hier de hosts lijsten die Pi-Hole gebruikt, mocht je dezelfde lijsten willen gebruiken.
Ook dient in het script nog een padnaam naar een (eventuele) blacklist & whitelist ingevuld te worden, zie hiervoor het volgende kopje.
.
Blacklist & Whitelist
Bovenin het script staat een variabele
CustomLists waarin je het pad naar de blacklist.txt & whitelist.txt moet opgeven. In mijn geval is dat
CustomLists="/volume1/downloads/DNSfiles", maar hiervoor is elke locatie op de NAS mogelijk. Omdat ik de downloads map in het netwerk gedeeld heb is deze altijd snel te benaderen om er domeinen aan toe te voegen.

Zorg er wel voor dat dit pad bestaat voordat je het script runt, en maak eventueel de bestanden blacklist.txt & whitelist.txt aan.
Deze dienen er qua opmaak als volgt uit te zien:
code: whitelist.txt
1
2
3
| zone "tweakers.net" { type master; notify no; file "/etc/zone/master/null.zone.file"; };
zone "veranderdezetekst.com" { type master; notify no; file "/etc/zone/master/null.zone.file"; };
zone "naareenanderesite.com" { type master; notify no; file "/etc/zone/master/null.zone.file"; }; |
Maar als je alleen de onlinelijsten wilt gebruiken is dat uiteraard ook prima.
.
Installatie Sy-Hole
Ik heb zelf gebruikt gemaakt van
dit stappenplan, maar voor de zekerheid zal ik hem hier even copy-pasten omdat het ad-blocker.sh bestand bij mij dus flink is aangepast. (de rest van de stappen zijn gelijk)
GUI Settings
Install the DNS Server package on your Synology.
Under “Zones”, “Create” a new “Master zone”
Domain type: “Forward Zone”
Domain name:
null.zone.file
Master DNS Server: Your-Synology-IP-Address (Ex: “192.168.1.2”)
Serial format: “Date (YYYYMMDDNN)”
Click Ok
Activate resolutions in the Resolutions tab, and enter one or two IP addresses like for example from
Google 8.8.8.8 or from
alternate-dns.com 198.101.242.72.
Telnet /SSH settings
Download the ad-blocker.sh script from: here
Copy the script to your NAS in the following directory:
/var/packages/DNSServer/target/script/ad-blocker.sh
Give the script execute permissions:
chmod +x /var/packages/DNSServer/target/script/ad-blocker.sh
Run the following command to execute the script:
sh /var/packages/DNSServer/target/script/ad-blocker.sh
Bovenstaande doorgestreept omdat het adminaccount op m'n DS916+ daar schijnbaar te weinig / geen schrijfrechten heeft. (er zullen vast meer mensen zijn die dit probleem hebben)
Op mijn oude DS213+ werkt het doorgestreepte deel wel perfect, maar dat komt omdat ik toen DSM 6.0 destijds uitkwam wat met de useraccounts ben gaan prutsen om root toegang werkend te krijgen. Ik verwacht niet dat iemand dat hier gaat doen, vandaar dat ik het hieronder anders (imo beter

) heb opgelost.
De makkelijkste oplossing om het
ad-blocker.sh bestand in dezelfde map te zetten als waar je ook de blacklist+whitelist hebt gezet. In mijn geval staat hij dus in:
/volume1/downloads/DNSfiles/ad-blocker.sh
Met het volgende commando geef je het bestand schrijfrechten:
chmod +x /volume1/downloads/DNSfiles/ad-blocker.sh
.
Sy-Hole elke dag/week automatisch laten updaten
Het voordeel van de meeste online hosts lijsten is dat deze ook actief worden geüpdate. Hierdoor zou ik het script bijvoorbeeld elke week of zelfs dag te laten runnen om zo altijd up2date te blijven.
Dit kan simpel door in DSM bij de Taakplanner een nieuwe taak te maken: "Door gebruiker gedefinieerd script". Vink bij het tabblad [Planning] één of meerdere dagen aan, en vul bij het tabblad [Taakinstellingen] de locatie van het ad-blocker.sh script in, in mijn geval is dit nu:
/volume1/downloads/DNSfiles/ad-blocker.sh

Voer de 1e keer de taak even handmatig uit, zodat gelijk te zien is of alles werkt.
.
Ok, de DNS server draait... En nu?
Nu zitten we hier op Tweakers, dus ik verwacht dat de meesten wel snappen hoe je ervoor zorgt dat elke pc/laptop je Synology als DNS server gebruikt. Maar omdat ik toch al een halve dag bezig ben met het uittypen van deze post kan dat er ook wel bij om het verhaal compleet te maken.
Meestal is je router ingesteld als de DHCP server. Deze deelt alle aangesloten apparaten (pc's laptops tablets telefoons) een IP adres uit. Log in op je router en verander bij de DHCP server instellingen de 1e DNS server naar je lokale IP adres van je NAS. (vb: 192.168.1.2) Stel hier ook gelijk een 2e (en 3e) in zodat als je NAS uitstaat of niet bereikbaar is hij bijvoorbeeld die van Google en/of alternate-dns.com pakt!
Als je het eerst met 1 pc of telefoon wilt testen kun je uiteraard ook bij je netwerkadapter je IP adres + de DNS server handmatig invoeren.
Om je oude DNS cache te wissen dien je op je pc even het opdrachtprompt te openen (Start --> CMD --> [Enter]) en hier
ipconfig /flushdns uit te voeren.
Op mijn telefoon leek het verbreken van de WiFi verbinding voldoende voor apps, maar mogelijk moet je in je browser onder instellingen even je cache legen.
Omdat het natuurlijk niet gewenst is om alle geblokkeerde websites in te voeren om te testen of ze ook écht geblokkeerd zijn, kun je op de volgende manier controleren of het ook echt werkt. Open opnieuw het Opdrachtprompt / CMD.exe, en voer het volgende commando uit:
code: CMD.exe
1
| nslookup geblokkeerdewebsite.com |
Als er onderaan het IP adres 127.0.0.1 in beeld komt weet je dat je DNS server werkt.
.
FAQ:
Hoewel er nu natuurlijk nog geen vragen kunnen zijn (en
NYAQ voor geen meter staat), zullen er ongetwijfeld een paar komen; Hier enkele handige weetjes die zo in mij opkomen:
- Wat is de prioriteit van de Blacklist v/s Whitelist?
De whitelist gaat altijd voor de blacklist + online hosts lists. Staan websites op beide lijsten, dan wordt deze dus gewhitelist.
Dit is omdat je zelf niet kunt bepalen wat er via de automatisch updatende hosts lijsten word geblocked, en als je een site wilt unblocken (omdat deze anders niet werkt) dan heft het toevoegen aan de whitelist deze blokkade dus altijd op.
- Waarom maakt hij een temp map met meerdere versies van de gedownloade lists?
Dit heb ik voornamelijk gebruikt (en is nog steeds handig) voor debugging. Hierdoor kun je per stap zien wat er gebeurd om van de hosts lijst naar de 'zone' lijst te komen. Mocht een lijst niet goed meer werken dan is hierdoor snel in te zien waar het fout gaat.
Kost je misschien een tiental MB aan writes per dag, als je elke dag update, maar dat is imo verwaarloosbaar voor een NAS.
- Waarom wordt naast alle ads ook de website van outlook.com geblokkeerd?
Omdat iemand heeft bedacht om in de online
RandomLargeList lijst een domein te zetten die schijnbaar essentieel is om outlook.com te gebruiken.

Maar gelukkig hebben we de whitelist, en zal het toevoegen van de volgende regel de site weer laten werken.
Edit: Later nog enkele sites toevoegd die je door het gebruik van de RandomLargeList mogelijk toch wilt whitelisten.
code: whitelist.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
| //outlook.com
zone "a-msedge.net" { type master; notify no; file "/etc/zone/master/null.zone.file"; };
//Facebook photo upload
zone "pixel.facebook.com" { type master; notify no; file "/etc/zone/master/null.zone.file"; };
zone "upload.facebook.com" { type master; notify no; file "/etc/zone/master/null.zone.file"; };
//Facebook Android App
zone "api.facebook.com" { type master; notify no; file "/etc/zone/master/null.zone.file"; };
zone "apps.facebook.com" { type master; notify no; file "/etc/zone/master/null.zone.file"; };
//Google Maps Android App
zone "clients2.google.com" { type master; notify no; file "/etc/zone/master/null.zone.file"; };
zone "clients3.google.com" { type master; notify no; file "/etc/zone/master/null.zone.file"; };
zone "clients4.google.com" { type master; notify no; file "/etc/zone/master/null.zone.file"; };
zone "clients5.google.com" { type master; notify no; file "/etc/zone/master/null.zone.file"; }; |
Bij het gebruik van de PiHoleList i.c.m. de 5 sites die daar vlak onder staan in het script ben ik verder nog geen site tegengekomen die raar deed.
- Hoeveel RAM gebruikt Sy-Hole?
Mijn korte ervaring met de Synology DNS server is dat hij zo'n 110MB per 10.000 geblokkeerde websites gebruikt. (

)
Dit is best relevant om te weten omdat ik tot gisteravond getest heb met m'n DS213+ 512MB RAM, maar vanaf de 30k a 40k entries zakte de snelheid van het verwerken echt GIGANTISCH in. (lees: RAM vol) Op m'n DS916+ 8GB wordt er zo'n 1100MB gebruik voor een kleine 100k entries.
Dus als je niet al te veel RAM (over) hebt in je NAS, importeer dan niet gelijk alle lijsten.
Al met al heeft alleen het maken van deze post me al een halve dag gekost, maar het werkt echt super nice nu dus ik wil het graag met jullie delen.
Indien je suggesties hebt of onduidelijkheden in de beschrijving hierboven of het script laat het dan gerust weten! (Per PM) Het script aanpassen was al tijdrovend genoeg dus mogelijk ben ik hierboven wat vergeten.
[
Voor 11% gewijzigd door
SmiGueL op 28-10-2016 23:16
]
Delidded 4770K 4.7GHz @ H220 || Gigabyte Z87X-UD4H || 16GB @ 2400MHz || Gigabyte GTX 760 || 2x128GB Samsung 830 @ RAID-0 & WD 3 TB || Iiyama XB2483HSU-B1 || Synology DS916+ 3x6TB + 120GB SSD Cache || Synology DS213+ 6TB backup