🌐 Configurazione DNS

DNS Resolver, Forwarder, DNSSEC e Host Overrides

Capitolo 6 di 11

🌍 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.

  1. Verifica DNS Forwarder disabilitato
    Vai in Services β†’ DNS Forwarder
    ☐ Assicurati che "Enable DNS Forwarder" sia DESELEZIONATO
    Se attivo, disabilita e Save
  2. Accedi a DNS Resolver
    Vai in Services β†’ DNS Resolver
  3. Abilita DNS Resolver
    β˜‘ Enable DNS Resolver
  4. 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)
  5. 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.
  6. 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
  7. 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!
  8. 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)
  9. 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

  1. Accedi a Host Overrides
    Vai in Services β†’ DNS Resolver
    Scroll down a Host Overrides
  2. Aggiungi override
    Clicca Add
  3. Esempio 1: Server Mail Interno
    Host: 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!
    Clicca Save
  4. 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
  5. 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.

Test nslookup DNS

Output del comando nslookup per verificare risoluzione DNS tramite pfSense

πŸ” Test da pfSense

  1. Test integrato pfSense
    Vai in Diagnostics β†’ DNS Lookup
  2. 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
  3. 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):

  1. Abilita logging avanzato
    Services β†’ DNS Resolver
    Scroll down a Advanced Settings
    β˜‘ 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
    Save
  2. Visualizza log
    Vai in Status β†’ System Logs β†’ System β†’ DNS Resolver
  3. 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)
  4. 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!

  1. 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
  2. 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)
  3. 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

  1. Verifica DNS Resolver attivo
    Services β†’ DNS Resolver
    β˜‘ "Enable DNS Resolver" deve essere selezionato
  2. Test risoluzione da pfSense
    Diagnostics β†’ DNS Lookup β†’ www.google.com
    Se funziona = problema client
    Se non funziona = problema pfSense
  3. 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
  4. 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).

πŸ” Prossimo: Configurazione VPN β†’