π Cos'Γ¨ il DNS?
Il DNS (Domain Name System) Γ¨ il "phonebook di Internet" - traduce nomi di dominio leggibili dall'uomo (come www.google.com) in indirizzi IP numerici (come 172.217.16.142) che i computer usano per comunicare. Senza DNS, dovresti ricordare l'indirizzo IP di ogni sito web!
π Come Funziona il DNS
Esempio: Browser richiede www.google.com 1. Client Query Browser β DNS Resolver pfSense "Qual Γ¨ l'IP di www.google.com?" 2. Cache Check pfSense controlla cache locale Se presente β risposta immediata (veloce!) Se assente β continua query 3. Root Server Query pfSense β Root DNS Server (.com, .org, .it, etc.) "Chi gestisce il dominio .com?" Risposta: "Chiedi ai server .com autoritativi" 4. TLD Server Query pfSense β TLD Server (.com) "Chi gestisce google.com?" Risposta: "Chiedi ai nameserver di Google" 5. Authoritative Server Query pfSense β Google's Nameserver "Qual Γ¨ l'IP di www.google.com?" Risposta: "172.217.16.142" 6. Response to Client pfSense β Browser "www.google.com = 172.217.16.142" 7. Cache Storage pfSense salva in cache per TTL specificato Prossime query = risposta istantanea! Tempo totale: 50-200ms (prima query) / 1-5ms (cache hit)
π‘ Vantaggi Cache DNS Locale
Avere pfSense come DNS locale con cache offre enormi vantaggi:
- β VelocitΓ : Risposte in ~1ms invece di 50-200ms per query ripetute
- β Riduzione latenza: Navigazione web piΓΉ fluida
- β Minor carico WAN: Query cache = zero traffico Internet
- β Funziona offline: Domini in cache accessibili anche senza Internet (temporaneamente)
- β Privacy: Query non inviate direttamente a DNS pubblici
π DNS Resolver vs DNS Forwarder
pfSense offre DUE servizi DNS distinti. Γ fondamentale capire la differenza per scegliere quello giusto!
πΉ DNS Resolver (Unbound) - CONSIGLIATO
Il DNS Resolver (basato su Unbound) Γ¨ un resolver DNS ricorsivo completo. Interroga direttamente i root server e segue la gerarchia DNS fino a ottenere la risposta autoritativa.
DNSSEC Validation
Verifica crittografica autenticitΓ risposte DNS
DNS over TLS (DoT)
Query cifrate verso upstream DNS
Cache Avanzata
Algoritmi intelligenti per cache ottimale
Massima Privacy
Query dirette ai root - nessun intermediario
πΉ DNS Forwarder (dnsmasq)
Il DNS Forwarder (basato su dnsmasq) Γ¨ piΓΉ semplice: inoltra tutte le query a DNS esterni (Google, Cloudflare, OpenDNS) senza risoluzione diretta.
| Caratteristica | DNS Resolver (Unbound) | DNS Forwarder (dnsmasq) |
|---|---|---|
| Metodo | Ricorsivo (query dirette root) | Forward (inoltra a DNS esterni) |
| DNSSEC | β Supporto completo | β Non supportato |
| DNS over TLS | β Supportato | β Non supportato |
| Privacy | β Massima (no intermediari) | β οΈ Dipende da DNS upstream |
| Performance | β Ottima con cache | β Buona |
| ComplessitΓ | Media | Bassa (piΓΉ semplice) |
| Integrazione DHCP | β Registra hostname DHCP | β Registra hostname DHCP |
| Caso d'uso | Reti aziendali, massima sicurezza | Reti semplici, SOHO |
β οΈ Non Usare Entrambi Contemporaneamente!
IMPORTANTE: DNS Resolver e DNS Forwarder NON possono essere attivi insieme - sono servizi alternativi!
Abilitare entrambi causa conflitti sulla porta 53 e problemi di risoluzione DNS.
Raccomandazione: Usa DNS Resolver (Unbound) - Γ¨ piΓΉ moderno, sicuro e performante.
βοΈ Configurazione DNS Resolver (Unbound)
Configuriamo il DNS Resolver step-by-step per ottenere risoluzione DNS sicura e performante.
-
Verifica DNS Forwarder disabilitato
Vai in Services β DNS Forwarder
β Assicurati che "Enable DNS Forwarder" sia DESELEZIONATO
Se attivo, disabilita e Save -
Accedi a DNS Resolver
Vai in Services β DNS Resolver -
Abilita DNS Resolver
β Enable DNS Resolver -
Configura opzioni base
Listen Port: 53 (default - NON modificare!) Network Interfaces: β LAN (192.168.1.1) β DMZ (se presente) β Localhost (127.0.0.1) β WAN (NEVER! Mai esporre DNS su WAN!) Outgoing Network Interfaces: β WAN (pfSense usa WAN per query verso Internet) Strict Outgoing Network Interface Binding: β Lascia deselezionato (default OK per maggior parte casi) System Domain Local Zone Type: transparent (default - permette risoluzione dominio locale)
-
Configura DNSSEC
β Enable DNSSEC Support (ALTAMENTE CONSIGLIATO!) Cosa fa DNSSEC: - Valida crittograficamente le risposte DNS - Previene DNS poisoning/spoofing - Garantisce che la risposta provenga dal server autoritativo - Protegge da attacchi man-in-the-middle DNS Nota: Alcuni domini molto vecchi potrebbero non supportare DNSSEC e risultare irraggiungibili. Γ RARO, ma puoi disabilitare se problemi.
-
Configura DNS over TLS (opzionale ma consigliato)
β Enable Forwarding Mode (Solo se vuoi usare DNS over TLS verso upstream) β Use SSL/TLS for outgoing DNS Queries to Forwarding Servers DNS Query Forwarding: Aggiungi server DNS che supportano DoT: Server 1: IP: 1.1.1.1 Port: 853 Hostname: cloudflare-dns.com Server 2: IP: 8.8.8.8 Port: 853 Hostname: dns.google Vantaggi DNS over TLS: β Query cifrate (ISP non vede cosa cerchi) β Privacy migliorata β Previene intercettazione query DNS Nota: Non obbligatorio - Unbound puΓ² lavorare senza DoT
-
Registrazione hostname DHCP
β Register DHCP leases in the DNS Resolver (CONSIGLIATO!) β Register DHCP static mappings in the DNS Resolver (CONSIGLIATO!) Effetto: I dispositivi LAN con hostname DHCP diventano risolvibili per nome: - ping laptop-mario β funziona! - ssh stampante-ufficio β funziona! - \\nas-server\share β funziona! Super comodo per accesso dispositivi interni!
-
Opzioni avanzate (opzionali)
Scorri in basso per opzioni aggiuntive:- β Prefetch Support: Pre-carica query popolari (migliora performance)
- β Prefetch DNS Key Support: Pre-carica chiavi DNSSEC
- β Harden DNSSEC data: Extra validazione (solo se problemi)
- β Message Cache Size: 4-16 MB (default 4 OK per SOHO)
-
Salva e applica
Scroll down β Save
β DNS Resolver attivo e operativo!
π₯ Video Tutorial: DNS Resolver vs Forwarder
Guarda questo video che spiega le differenze e la configurazione completa del DNS.
βΆοΈ Guarda: DNS Forwarder/Resolver pfSenseπ Host Overrides (DNS Locale)
Gli Host Overrides permettono di creare record DNS custom per la tua rete interna. Estremamente utile per:
- π₯οΈ Server interni: mail.azienda.local β 192.168.1.10
- π Servizi locali: intranet.azienda.local β 192.168.1.20
- π Split DNS: www.azienda.com β IP interno (non pubblico)
- π« Blocco domini: facebook.com β 127.0.0.1 (blocco DNS)
π Creare Host Override
-
Accedi a Host Overrides
Vai in Services β DNS Resolver
Scroll down a Host Overrides -
Aggiungi override
Clicca Add -
Esempio 1: Server Mail Interno
Clicca SaveHost: mail Parent domain of host: azienda.local IP Address: 192.168.1.10 Description: Exchange Server Interno Risultato: mail.azienda.local β 192.168.1.10 Client configurato con "mail.azienda.local" come server mail raggiunge automaticamente il server interno!
-
Esempio 2: Split DNS (Sito Aziendale)
Host: www Parent domain: azienda.com IP Address: 10.0.10.5 (server DMZ interno) Description: Sito web aziendale - versione interna Scenario Split DNS: - Da Internet: www.azienda.com β 203.0.113.50 (IP pubblico) - Da LAN interna: www.azienda.com β 10.0.10.5 (server DMZ diretto) Vantaggi: β Accesso diretto interno (no hairpin NAT) β PiΓΉ veloce β Meno carico firewall
-
Esempio 3: Blocco Dominio
Host: (lascia vuoto per wildcard) Parent domain: facebook.com IP Address: 127.0.0.1 Description: Blocco Facebook Risultato: facebook.com β 127.0.0.1 (localhost) www.facebook.com β 127.0.0.1 m.facebook.com β 127.0.0.1 Tutti i subdomain Facebook bloccati! Nota: Metodo semplice ma limitato. Per blocco avanzato usa pfBlockerNG (vedi Cap. 11)
π Domain Overrides (Inoltro Selettivo)
I Domain Overrides inoltrano query per domini specifici a server DNS alternativi. Utile per:
- π’ Active Directory: Inoltra dominio AD a DC Windows
- π Filiali remote: Inoltra dominio filiale a DNS locale filiale
- π Partner/VPN: Inoltra dominio partner a loro DNS
Services β DNS Resolver β Domain Overrides β Add Domain: ad.azienda.local IP Address: 192.168.1.5 (Domain Controller Windows) Description: Active Directory DNS Risultato: Tutte le query per *.ad.azienda.local vengono inoltrate al Domain Controller invece di essere risolte da pfSense. Permette risoluzione corretta nomi AD, GPO, etc.
π§ͺ Test e Verifica DNS
Dopo aver configurato DNS, Γ¨ fondamentale testare che funzioni correttamente.
Output del comando nslookup per verificare risoluzione DNS tramite pfSense
π Test da pfSense
-
Test integrato pfSense
Vai in Diagnostics β DNS Lookup -
Esegui test
Hostname: www.google.com Resolution Type: A (IPv4 address) DNS Server: 127.0.0.1 (usa Resolver locale) Clicca Lookup Output atteso: www.google.com. 300 IN A 172.217.16.142 Verifica: β Ricevi un IP valido β Tempo risposta < 50ms (prima query) / < 5ms (cache) β No errori
-
Test host override
Se hai creato host override (es: mail.azienda.local):Hostname: mail.azienda.local Resolution Type: A Output atteso: mail.azienda.local. 3600 IN A 192.168.1.10 Verifica che ritorni l'IP configurato nell'override!
π₯οΈ Test da Client (Windows)
# Apri CMD o PowerShell # Verifica configurazione DNS ipconfig /all Output atteso: DNS Servers: 192.168.1.1 (pfSense) # Test risoluzione Google nslookup www.google.com Output atteso: Server: pfsense.azienda.local Address: 192.168.1.1 Non-authoritative answer: Name: www.google.com Address: 172.217.16.142 # Test risoluzione host override nslookup mail.azienda.local Output atteso: Server: pfsense.azienda.local Address: 192.168.1.1 Name: mail.azienda.local Address: 192.168.1.10 # Flush cache DNS locale (se modifiche non viste) ipconfig /flushdns
π§ Test da Client (Linux/macOS)
# Verifica configurazione DNS cat /etc/resolv.conf Output atteso: nameserver 192.168.1.1 # Test risoluzione con dig (piΓΉ dettagliato) dig www.google.com Output atteso: ;; Query time: 2 msec ;; SERVER: 192.168.1.1#53(192.168.1.1) www.google.com. 300 IN A 172.217.16.142 # Test veloce con nslookup nslookup mail.azienda.local # Flush cache DNS (macOS) sudo dscacheutil -flushcache sudo killall -HUP mDNSResponder # Linux (varia per distro) sudo systemd-resolve --flush-caches # systemd sudo nscd -i hosts # nscd
π Monitoraggio DNS
πͺ΅ Log DNS
Per vedere query DNS in tempo reale (utile per debugging):
-
Abilita logging avanzato
Services β DNS Resolver
Scroll down a Advanced Settings
Saveβ Log Queries (Logga tutte le query DNS - ATTENZIONE: genera MOLTI log!) Log level: 1 (informativo) 0 = solo errori 1 = operazioni base 2 = dettagliato 3 = molto verboso 4-5 = debug estremo
-
Visualizza log
Vai in Status β System Logs β System β DNS Resolver -
Analizza log
Jan 3 16:45:23 unbound[12345]: info: 192.168.1.100 www.google.com. A IN Jan 3 16:45:23 unbound[12345]: info: response for www.google.com. A IN Jan 3 16:45:24 unbound[12345]: info: 192.168.1.100 mail.azienda.local. A IN Interpretazione: - 192.168.1.100 = IP client che fa query - www.google.com = dominio richiesto - A = tipo query (Address record IPv4) - IN = Internet class Usa filtri per trovare: - Query da IP specifico - Query a dominio specifico - Errori (NXDOMAIN = dominio non esiste)
-
Disabilita logging quando finito
β οΈ IMPORTANTE: Log DNS generano MOLTISSIMI dati
Disabilita "Log Queries" dopo debugging per non riempire disco!
π Statistiche Cache
Per vedere statistiche cache DNS:
Diagnostics β Command Prompt Esegui comando: unbound-control stats_noreset Output interessante: total.num.queries=15234 total.num.cachehits=12456 total.num.cachemiss=2778 mem.cache.rrset=4194304 Calcolo hit rate: Hit rate = (cachehits / queries) * 100 = (12456 / 15234) * 100 = 81.7% Interpretazione: β 81.7% query servite da cache (ottimo!) β Solo 18.3% query escono verso Internet β 4MB cache utilizzata
π Sicurezza DNS
π‘οΈ Prevenzione DNS Poisoning/Spoofing
- β DNSSEC abilitato: Valida crittograficamente risposte
- β DNS Resolver non esposto su WAN: Solo interfacce interne
- β Firewall blocca DNS esterno dalla LAN: Forza uso DNS pfSense
- β DNS over TLS: Query cifrate (privacy)
π« Forzare Uso DNS pfSense (Blocco DNS Bypass)
Alcuni dispositivi/malware tentano di bypassare DNS locale usando DNS pubblici diretti (8.8.8.8, 1.1.1.1). Bloccalo con regole firewall!
-
Crea alias DNS pubblici
Firewall β Aliases β IP β Add
Name: Public_DNS_Servers Type: Network(s) Networks: 8.8.8.8/32 | Google Primary 8.8.4.4/32 | Google Secondary 1.1.1.1/32 | Cloudflare Primary 1.0.0.1/32 | Cloudflare Secondary 9.9.9.9/32 | Quad9 208.67.222.222/32 | OpenDNS
-
Crea regola blocco
Firewall β Rules β LAN β Add (in CIMA!)
Action: Reject Interface: LAN Protocol: TCP/UDP Source: LAN net Destination: Single host or alias β Public_DNS_Servers Destination Port: DNS (53) Description: Blocca DNS pubblici - forza uso pfSense DNS β Log packets Risultato: Client che tentano di usare 8.8.8.8 o altri DNS vengono bloccati e devono usare 192.168.1.1 (pfSense)
-
Eccezione per pfSense stesso
SOPRA la regola di blocco, aggiungi:
Action: Pass Interface: LAN Protocol: TCP/UDP Source: This Firewall Destination: any Destination Port: DNS (53) Description: Permetti pfSense stesso a usare DNS esterni Importante: Questa regola DEVE essere SOPRA il blocco! Altrimenti pfSense stesso non puΓ² risolvere domini.
π DNS Filtering (Parental Control / Malware Block)
Puoi usare DNS pubblici con filtering integrato:
| Servizio | IP Server | Caratteristiche |
|---|---|---|
| Cloudflare for Families | 1.1.1.3 (malware) 1.1.1.2 (malware+adult) |
Blocco malware, phishing, adult content |
| Quad9 | 9.9.9.9 | Blocco malware, threat intelligence |
| OpenDNS FamilyShield | 208.67.222.123 208.67.220.123 |
Parental control preconfigurato |
| CleanBrowsing | 185.228.168.168 185.228.169.168 |
Filtering adult, sicurezza |
Per usarli: Services β DNS Resolver β Enable Forwarding Mode β Aggiungi IP sopra come server upstream
π§ Troubleshooting DNS
β Problema: Navigazione Non Funziona
-
Verifica DNS Resolver attivo
Services β DNS Resolver
β "Enable DNS Resolver" deve essere selezionato -
Test risoluzione da pfSense
Diagnostics β DNS Lookup β www.google.com
Se funziona = problema client
Se non funziona = problema pfSense -
Verifica client usa DNS pfSense
Windows: ipconfig /all β DNS Servers: 192.168.1.1 Linux: cat /etc/resolv.conf β nameserver 192.168.1.1 Se diverso: - Rinnova DHCP: ipconfig /renew (Windows) - Verifica configurazione DHCP server pfSense
-
Verifica connettivitΓ WAN
Diagnostics β Ping β 8.8.8.8
Se fallisce = problema connessione Internet (non DNS!)
β Problema: Alcuni Domini Non Risolvono
Sintomo: La maggior parte siti funziona, ma alcuni domini specifici no Causa probabile: DNSSEC validation failure Test: 1. Services β DNS Resolver 2. β Deseleziona "Enable DNSSEC Support" temporaneamente 3. Save 4. Riprova dominio problematico Se funziona = problema DNSSEC del dominio (non tuo!) - Contatta proprietario dominio - Oppure lascia DNSSEC disabilitato (meno sicuro) Se non funziona = problema diverso
β Problema: DNS Lentissimo
Verifica cache hit rate: Diagnostics β Command Prompt β unbound-control stats Se cache hit rate < 50%: β Aumenta cache size (Services β DNS Resolver β Advanced) Message Cache Size: 16-32 MB Se query tempo > 100ms consistentemente: β Abilita prefetch β Verifica connessione WAN stabile β Considera DNS over TLS a server piΓΉ vicini geograficamente
β Best Practices DNS
- β Usa DNS Resolver, non Forwarder - PiΓΉ sicuro e moderno
- β Abilita DNSSEC - Fondamentale per sicurezza
- β Registra hostname DHCP - Comodo per accesso dispositivi
- β Forza uso DNS pfSense - Blocca bypass con regole firewall
- β Non esporre DNS su WAN - Solo interfacce interne!
- β Usa host overrides - Per server interni e split DNS
- β Monitoring periodico - Verifica cache hit rate mensile
- β DNS filtering opzionale - Cloudflare/Quad9 per famiglie
π― Prossimi Passi
Fantastico! Ora hai configurato un sistema DNS professionale con risoluzione sicura, cache ottimizzata, DNSSEC e host overrides per la rete interna. I tuoi client navigano velocemente e in sicurezza!
Nel prossimo capitolo configureremo OpenVPN per connessioni sicure di utenti remoti alla rete aziendale (Road Warrior VPN).