Πραγματικά ανώνυμο DNS με το pihole

Όταν αναζητάμε την διεύθυνση μιας ιστοσελίδας με το DNS βάζουμε κάποιον DNS server, όπως πχ τον 1.1.1.1 της CloudFlare ή τον 8.8.8.8 της Google. Το pihole ή ο υπολογιστής μας θα ρωτήσει αυτόν για την διεύθυνση IP και θα κασάρει το αποτέλεσμα για κάποιο χρονικό διάστημα. Αλλά έτσι έχουμε δυο προβλήματα:

  • δίνουμε σε ένα τρίτο τις ιστοσελίδες που επισκεπτόμαστε και μπορεί να τις καταγράφει, άσχετα αν μπορεί να δηλώνει το αντίθετο
  • Αν αυτός ο server παραβιαστεί κάτι που δεν είναι ένα φανταστικό σενάριο μπορεί να μην βρεθούμε στην πραγματική σελίδα της τράπεζας μας

Σε αυτό τον οδηγό θα δούμε πως μπορούμε να ρυθμίσουμε το pihole ή τον υπολογιστή μας ώστε να μην έχουμε ανάγκη κανένα τρίτο.

Λίγη θεωρία

Θα χρειαστούμε ένα Recursive DNS server. Ο τρόπος που λειτουργεί είναι αντί να πάει να ρωτήσει κάποιον τρίτο κάνει όλη την δουλεία μόνος του. Αν για παράδειγμα ρωτήσουμε για το www.linux-user.gr θα βρει πρώτα ποιος είναι ο αρμόδιος για τις διευθύνσεις που τελειώνουν σε .gr και στην συνέχεια θα κάνει ένα ερώτημα σε αυτόν για το ποιος είναι υπεύθυνος για το linux-user.gr και μετά θα κάνει άλλο ένα ερώτημα στον δικό μας DNS server για να πάρει τελικά (ουφ) την απάντηση. Μαζί με την απάντηση θα πάρει και ένα χρονικό διάστημα για το οποίο είμαστε σίγουροι πως δεν θα αλλάξει και θα το αποθηκεύσει. Την πρώτη φορά που θα επισκεφτούμε κάποιο site θα είναι λίγο ποιο αργό, ειδικά αν έχουμε ενεργό το DNSEC, ίσως να περιμένουμε 1-2sec παραπάνω. Στην πράξη δεν είδα κάποιο πρόβλημα.

Στην πράξη

Θα εγκαταστήσουμε το unbound ένα Recursive DNS server.

sudo apt install unbound

Θα βγάλει κάποια λάθη κατά την εγκατάσταση γιατί δεν έχει ρυθμιστεί ακόμα. Ένα αρχείο ρυθμίσεων υπάρχει εδώ για να ξεκινήσουμε. Ένα άλλο σχεδόν έτοιμο από την σελίδα του pihole. Πήρα το δεύτερο και έκανα κάποιες αλλαγές ενεργοποίησα τα αρχεία καταγραφής και έβαλα τις σωστές διευθύνσεις για το τοπικό μου δίκτυο.

Το αρχείο ρυθμίσεων είναι το /etc/unbound/unbound.conf.d/pi-hole.conf

logfile: "/var/log/unbound/unbound.log"
verbosity: 1
...
private-address: 192.168.2.0/24

Θα φτιάξω και το αρχείο καταγραφής

sudo mkdir -p /var/log/unbound
sudo touch /var/log/unbound/unbound.log
sudo chown unbound /var/log/unbound/unbound.log

Τώρα μπορώ να ενεργοποιήσω την υπηρεσία

unbound-checkconf
sudo systemctl enable --now unbound.service
sudo systemctl status unbound.service

και αν τρέχω το dhcpd

sudo systemctl restart dhcpcd

Και ήρθε η ώρα για την δοκιμή. Η υπηρεσία ακούει στην πόρτα 5355 και ήρθε η ώρα για ένα έλεγχο. Η πρώτη εντολή θα αποτύχει με SERVFAIL ενώ ή δεύτερη θα μας δώσει NOERROR και μια διεύθυνση IP.

dig sigfail.verteiltesysteme.net @127.0.0.1 -p 5335
dig sigok.verteiltesysteme.net @127.0.0.1 -p 5335

Ρύθμιση του PiHole

Θα πάμε στις ρυθμίσεις → DNS θα βγάλουμε τους τρίτους παρόχους και θα προσθέσουμε ένα Custom

image

δεν ξεχνάμε να κάνουμε αποθήκευση.

12 «Μου αρέσει»