Μπλοκάρωντας τις Διαφημίσεις σε όλο το σπίτι | Raspberry Pi 5 ως DNS Server Σπιτιού

Author Portrait
Lefteris OikonomouJune 11 2026

Γιατί ήθελα τοπικό DNS

Κάθε συσκευή στο σπίτι μου κάνει DNS queries. Το κινητό μου, ο υπολογιστής μου, τα smart devices. Κάθε φορά που κάποια από αυτές συνδέεται σε ένα domain, κάνει ένα DNS query.

Εξ ορισμού, αυτά τα queries πηγαίνουν στους DNS servers του ISP (παρόχος ίντερνετ). Αυτό σημαίνει:

  • Ο ISP μπορεί να δει και να καταγράψει κάθε domain που κάθε συσκευή στο σπίτι μου προσπαθεί να φτάσει.

  • Ads, trackers και telemetry domains κάνουν resolve κανονικά.

  • Δεν έχω καμία ορατότητα στο τι κάνουν πραγματικά οι συσκευές μου στο internet.

  • Δεν μπορώ να δώσω φιλικά ονόματα στα εσωτερικά μου services. Το NAS είναι απλά μια IP διεύθυνση. Το Home Assistant είναι απλά μια IP διεύθυνση.

Ήθελα να λύσω όλα αυτά με ένα κομμάτι υποδομής: έναν DNS server που ελέγχω εγώ, να τρέχει μέσα στο σπίτι μου, και τον χρησιμοποιεί κάθε συσκευή ανεξαρτήτως VLAN.

Τα οφέλη είναι άμεσα. Το DNS-level ad blocking καλύπτει κάθε συσκευή αυτόματα. Δεν χρειάζεται ρύθμιση ανά συσκευή, browser extensions ή εγκατάσταση εφαρμογών. Το smartphone μου, που δεν έχει ad blocker εγκατεστημένο, σταμάτησε να φορτώνει διαφημίσεις. Οι IoT συσκευές σταμάτησαν να στέλνουν δεδομένα σε analytics endpoints. Τα query logs μου λένε ακριβώς τι κάνει κάθε συσκευή.

Γιατί επέλεξα Raspberry Pi 5

Χρειαζόμουν ένα μικρό, always-on μηχάνημα για να τρέχει DNS. Το Pi 5 ήταν η προφανής επιλογή.

Χαμηλή κατανάλωση: Το Pi 5 καταναλώνει περίπου 5 watts. Τρέχοντας 24/7 δεν κοστίζει σχεδόν τίποτα σε ρεύμα.

Αρκετή απόδοση: Το DNS δεν είναι CPU-heavy. Το AdGuard χειρίζεται χιλιάδες queries ανά δευτερόλεπτο σε ένα Pi 5 χωρίς κανένα πρόβλημα. Πολύ περισσότερο headroom από ό,τι θα χρειαστώ ποτέ για DNS.

Μπορεί να επεκταθεί με περισσότερα services: Το Pi δεν είναι single-purpose DNS box. Τρέχει επίσης Home Assistant, Nginx Proxy Manager, Portainer, Dozzle, Homepage και έναν FreeDNS DDNS updater — όλα σε Docker Compose. Το AdGuard είναι απλά ένα container στο stack.

Το Pi κάθεται στο Services VLAN μου με static IP. Η static είναι σημαντική. Κάθε DHCP server σε κάθε VLAN δείχνει σε αυτή τη IP ως DNS server. Αν η IP του Pi άλλαζε, ολόκληρο το σπίτι θα έχανε DNS.

Αν δεν έχεις Pi, το adguard δουλεύει σε σχεδόν οτιδήποτε — ένα παλιό laptop, ένα mini PC, ένα ανταλλακτικό desktop.

Τι κάνει το AdGuard Home

Το AdGuard Home είναι ένας DNS server σε επίπεδο δικτύου με ενσωματωμένο filtering. Όταν μια συσκευή κάνει query ένα domain, το AdGuard κάνει τρία πράγματα:

  1. Ελέγχει το domain σε blocklists. Αν ταιριάζει με γνωστό ad, tracker, malware ή telemetry domain, το AdGuard επιστρέφει NXDOMAIN (ή 0.0.0.0) και η συσκευή νομίζει ότι το domain δεν υπάρχει. Οι διαφημίσεις δεν φορτώνονται ποτέ και τα trackers δεν εκτελούνται ποτέ.

  2. Ελέγχει για τοπικά DNS records. Αν έχω ορίσει ένα τοπικό όνομα όπως `nas.home`, το AdGuard επιστρέφει την τοπική IP χωρίς να πάει ποτέ στο internet.

  3. Προωθεί σε upstream DNS. Αν το domain δεν είναι blocked και δεν είναι τοπικό, το AdGuard κάνει query σε upstream resolver — χρησιμοποιώ Cloudflare (1.1.1.1) και Google (8.8.8.8) ως fallbacks — και κάνει cache την απάντηση.

Μου δίνει επίσης:

Query logs: Κάθε DNS query από κάθε συσκευή, με timestamp, response και αν μπλοκαρίστηκε. Μπορώ να φιλτράρω ανά client, ανά domain, ανά status. Αυτό είναι χρυσός για να καταλαβαίνω τι κάνουν οι συσκευές μου.

Ρυθμίσεις ανά client: Μπορώ να δώσω διαφορετική συμπεριφορά blocklist σε διαφορετικές συσκευές.

Dashboard: Live στατιστικά. Μετά την πρώτη εβδομάδα είχα ξεκάθαρη εικόνα για το ποιες συσκευές κάναν το περισσότερο traffic και που.

Χρησιμοποιώ μερικά community blocklists, το default του AdGuard, EasyList, EasyPrivacy και μερικά ειδικά για smart TVs. Μαζί μπλοκάρουν δεκάδες χιλιάδες domains. Την πρώτη μέρα που εγκατέστησα το AdGuard, ο μετρητής blocked queries έφτασε πενταψήφιο νούμερο μέχρι το τέλος της ημέρας.

Πώς λειτουργεί το DNS στο δίκτυό μου

Αυτό συμβαίνει όταν οποιαδήποτε συσκευή στο σπίτι μου προσπαθεί να φτάσει ένα domain:

adguard

ΕΙΚΟΝΑ ΓΙΑ ΑΝΤΓΚΑΡΝΤ ΕΙΚΟΝΑ ΕΙΚΟΝΑ ΕΙΚΟΝΑ

Για να δουλέψει αυτό, κάθε συσκευή σε κάθε VLAN πρέπει να ξέρει να χρησιμοποιεί τη 192.168.XXX.XX ως DNS server. Όταν μια συσκευή συνδέεται στο Wi-Fi ή μπαίνει σε ethernet, το DHCP της δίνει μια IP, ένα default gateway και έναν DNS server. Αυτός ο DNS server είναι το Pi.

Firewall και VLANs

Οι συσκευές στα VLANs χρειάζονται μονοπάτι για να φτάσουν στο Pi στη συγκεκριμένη πόρτα. Χωρίς ρητό firewall rule που να το επιτρέπει, η inter-VLAN κίνηση θα κοβόταν.

Το Pi κάθεται στο Services VLAN. Τα άλλα VLANs δεν μπορούν να φτάσουν ελεύθερα στο Services λόγω του zero-trust default deny και το DNS θα αποτύγχανε σιωπηλά. Αλλά κάθε VLAN χρειάζεται DNS.

Η λύση είναι ένας στοχευμένος firewall rule ανά VLAN που επιτρέπει στο υποδίκτυο να έχει πρόσβαση στο dns. Ο κανόνας επιτρέπει τη συγκεκριμένη destination IP και τη συγκεκριμένη πόρτα. Τίποτα άλλο δεν περνάει.

Τοπικά DNS Records

Τα τοπικά DNS records είναι ένα από τα πιο χρήσιμα features του AdGuard. Μου επιτρέπουν να δίνω φιλικά ονόματα σε εσωτερικά services.

Χωρίς αυτό, θα έπρεπε να θυμάμαι κάθε IP. Το NAS είναι μια IP, το Home Assistant στο Pi είναι μια άλλη IP συν μια θύρα, το Portainer είναι ακόμα μια άλλη. Το να τα θυμάσαι όλα αυτά είναι ενοχλητικό και χαλάει τη στιγμή που θα αλλάξω IPs.

Με τοπικά DNS records στο AdGuard έχω εγγραφές όπως:

  • ha.homelab → 192.168.XX.PI

  • nas.homelab → 192.168.XX.NAS

  • portainer.homelab → 192.168.XX.PI

  • proxy.homelab. → 192.168.XX.PI

  • nvr.homelab → 192.168.XX.NAS

Τώρα μπορώ να γράψω ha.homelab στον browser μου και φορτώνει το Home Assistant. Το nas.homelab ανοίγει το TrueNAS web UI. Αυτά τα ονόματα δουλεύουν από κάθε συσκευή σε κάθε VLAN που χρησιμοποιεί το AdGuard για DNS — κινητά, laptops, tablets, τα πάντα.

Αυτό το συνδυάζω με το Nginx Proxy Manager. Το AdGuard κάνει resolve το όνομα στο Pi, και ο Nginx δρομολογεί στο σωστό container — τόσο HTTP όσο και HTTPS. Έτσι δεν χρειάζεται ποτέ να γράψω IP ή να θυμάμαι αριθμό θύρας. Μόνο το όνομα.

Τι γίνεται αν πέσει το Pi;

Οι περισσότερες συσκευές χάνουν internet.Η γραμμή δουλεύει κανονικά, το UCG είναι ακόμα πάνω, τα switches λειτουργούν. Αλλά τη στιγμή που μια συσκευή προσπαθεί να ανοίξει μια ιστοσελίδα, ρωτάει το Pi για τη IP του domain, δεν παίρνει απάντηση, και κάνει timeout.

Τα υπάρχοντα TCP connections που έχουν ήδη κάνει resolve ένα όνομα και είναι εν μέσω session (ένα video stream που ήδη παίζει συνεχίζει να παίζει), οτιδήποτε συνδέεται σε hardcoded IP (κάποιες κάμερες, κάποιες IoT συσκευές), και συσκευές στο Surveillance VLAN που δεν χρησιμοποιούσαν DNS εξαρχής συνεχίζουν να λειτουργούν.

Όλα τα υπόλοιπα σπάνε. Κάθε νέο browser request. Οι περισσότερες εφαρμογές σε κινητά και laptops και όλα τα τοπικά μου services.

Για ένα σπίτι με single DNS server, το Pi είναι single point of failure. Αυτό είναι το trade-off της συγκέντρωσης του DNS. Το πλεονέκτημα είναι τεράστιο — ένα σημείο για να διαχειρίζεσαι τα πάντα, ένα σημείο για να βλέπεις τα πάντα. Το μειονέκτημα είναι ότι όταν πέσει, ολόκληρο το σπίτι νιώθει offline.

Για να αποφύγω αυτό, στο guest VLAN έχω προσθέσει Google DNS ως backup, ώστε αν το Pi 5 πέσει μπορώ απλά να συνδεθώ σε άλλο Wi-Fi και να έχω ακόμα internet. Οι καλεσμένοι μου δεν θα χάσουν ποτέ connectivity επειδή το Pi είναι κλειστό. Υπάρχουν και άλλες λύσεις όπως να τρέξεις δεύτερο DNS σε άλλο μηχάνημα ή στο UCG, αλλά θεώρησα ότι ήταν overkill για τη δική μου περίπτωση.

Επιλογές DNS Fallback

Υπάρχουν μερικοί τρόποι να προσθέσεις ανθεκτικότητα. Ο καθένας έχει trade-offs.

Secondary DNS server στο DHCP: Το UniFi σε αφήνει να ρυθμίσεις δύο DNS servers ανά δίκτυο. Βάλε το Pi ως primary και κάτι σαν το 1.1.1.1 ως secondary. Το πρόβλημα: η συμπεριφορά των clients με δύο DNS servers είναι απρόβλεπτη. Κάποιοι clients δοκιμάζουν τον secondary μόνο μετά από timeout. Άλλοι κάνουν round-robin και τους δύο. Αν βάλεις το 1.1.1.1 ως secondary, μπορεί να δεις ότι "blocked" διαφημίσεις αρχίζουν να φορτώνουν κατά καιρούς γιατί ο client τυχαία χτυπάει το Cloudflare αντί για το AdGuard. Αυτό χαλάει ολόκληρο το νόημα του network-wide blocking.

Secondary AdGuard instance: Τρέξε ένα δεύτερο AdGuard κάπου αλλού — στο NAS, σε ένα παλιό Pi, σε ένα άλλο mini PC. Ρύθμισε και τα δύο με τα ίδια blocklists. Βάλε και τα δύο ως DNS servers στο DHCP. Πραγματικό redundancy χωρίς να θυσιάζεις filtering. Το μειονέκτημα είναι η ίδια απρόβλεπτη συμπεριφορά clients — οι DNS clients δεν είναι καλοί στο να χειρίζονται failover κομψά.

Τι θα βελτίωνα αργότερα

Recursive DNS με Unbound: Αυτή τη στιγμή το AdGuard προωθεί στο Cloudflare και τη Google. Αυτό σημαίνει ότι η Cloudflare και η Google βλέπουν ακόμα κάθε query που κάνω. Προσθέτοντας Unbound ως recursive resolver μπροστά σημαίνει ότι το AdGuard ρωτάει το Unbound, το Unbound μιλάει απευθείας στους authoritative name servers, και κανένα τρίτο μέρος δεν βλέπει την πλήρη εικόνα του browsing μου.

Αν ξεκινάς home lab, στήσε έαν dns server. Είναι project με μικρή προσπάθεια και τον μεγάλο αντίκτυπο. Αυτό είναι μέρος της σειράς μου Φτιάχνοντας Ένα Έξυπνο Σπίτι — όπου καταγράφω τα πάντα που έφτιαξα, τι δούλεψε, τι χάλασε και τι έμαθα. Ακολουθήσε με για πρακτικά άρθρα που απευθύνονται σε developers που θέλουν να φτιάξουν πραγματικά συστήματα.

Σχετικά Άρθρα

Τι Είναι τα VLANs  Και Γιατί Τα Χρειάζεσαι;
Τεχνολογία16 λεπτά ανάγνωση
Τι Είναι τα VLANs Και Γιατί Τα Χρειάζεσαι;

Τι είναι τα VLANs και πώς χώρισα το οικιακό μου δίκτυο σε 6 ξεχωριστά δίκτυα στο UniFi. IoT, κάμερες, NAS, επισκέπτες — ασφάλεια και firewall rules.

Author Portrait
Lefteris OikonomouJune 10 2026
Πώς και Γιατί Έβαλα Δικό μου Ρούτερ
Τεχνολογία10 λεπτά ανάγνωση
Πώς και Γιατί Έβαλα Δικό μου Ρούτερ

Πώς έβαλα τον router Nova/EON σε bridge mode για το UniFi UCG. Τι είναι το double NAT, γιατί χαλάει VPN και DDNS, και πώς πήρα δημόσια IP στο UCG.

Γιατί Πρέπει να Φτιάξεις ένα Έξυπνο Σπίτι
Τεχνολογία10 λεπτά ανάγνωση
Γιατί Πρέπει να Φτιάξεις ένα Έξυπνο Σπίτι

Πώς ένα Έξυπνο Σπίτι με VLANs, Docker, NAS και smart home αυτοματισμούς βελτίωσε την ζωή μου και με έκανε καλύτερο προγραμματιστή.