La funzionalità di NAT Keepalive, presente sulla maggior parte dei dispositivi e dei PBX VoIP può avere un impatto sostanziale sul corretto funzionamento dell’account VoIP. In questo articolo cerco di spiegare quale sia l’impatto di questa funzionalità e quali problemi può aiutare a risolvere.

Problemi tipici legati al NAT

Può capitare che il vostro telefono VoIP possa smettere di ricevere le chiamate e che l’account SIP perda costantemente la registrazione verso il provider. La situazione di errore più frequente potrebbe verificarsi con una problematica di questo tipo: Il telefono IP è correttamente registrato verso il PBX o il Provider VoIP e, senza evidente spiegazione, non è più possibile avviare o ricevere chiamate. Normalmente la situazione si risolve riavviando il telefono. Il problema però continua a presentarsi ad intervalli generalmente regolari.

Alcune situazioni tipiche:

  • Perdita della registrazione dell’account SIP ad intervalli più o meno regolari
  • Impossibilità di ricevere chiamate
  • Impossibilità di effettuare o ricevere le chiamate pur in presenza di registrazione apparentemente attiva.
  • Il chiamante sente il tono di squillo ma la chiamata non arriva al telefono registrato

Questa tipologia di problematiche è strettamente correlata alle configurazioni NAT del Router, agli specifici apparati router utilizzati, alla configurazione dello specifico account SIP sul telefono o sul PBX utilizzato. In queste situazioni la funzionalità di NAT Keepalive può essere di aiuto.

Il Router e la tabella di NAT

Come è noto ai più esperti, la funzionalità del NAT (Network Address Translation) consiste nella traduzione dell’Indirizzo IP privato in un indirizzo IP di tipo pubblico. Strettamente connesso al NAT è il PAT (Port Address Translation) ossia la traduzione delle porte utilizzate dal servizio. In buona sostanza, per cercare di rendere chiaro il concetto anche al pubblico dei meno esperti, quando un dispositivo cerca di contattare il web, deve presentarsi al destinatario del servizio remoto con un indirizzo IP pubblico e una o più Porte pubbliche.

Indirizzi IP privati e porte Private devono quindi sempre essere tradotte in indirizzi IP e relative porte pubbliche. Il Router/Firewall si occupa di gestire questa traduzione delle porte da private a pubbliche. Il meccanismo  di traduzione contemporanea degli indirizzi IP e delle Porte viene denominato NAPT (Network Address ad Ports Translation). Per effettuare questa operazione il router crea un’apposita tabella contenente le rotte e le informazioni di corrispondenza tra IP e Porte Private e IP e Porte Pubbliche. Esso tiene anche conto della possibile sovrapposizione delle porte. Se due o più dispositivi tentano di utilizzare la stessa porta,  il NAT utilizza una porta proxy per il dispositivo secondario.

La tabella in oggetto è comunemente definita “NAT Mapping Table”.

NAPT: Nat Statico e NAT dinamico

L’altra informazione fondamentale per capire come funzioni il NAT Keepalive riguarda il fatto che le regole di NAT possono essere di tipo Statico o di Tipo Dinamico.

Le regole NAT di tipo statico: Il sistemista di rete scrive esplicitamente le regole di NAT  in una Tavola permanente all’interno del router. Non tutte le periferiche richiedono però la necessità di creazione di una regola di NAT dedicata e permanente.

Le regole NAT di tipo dinamico vengono create automaticamente dal router per permettere ai dispositivi di comunicare con la rete pubblica e vengono scritte in una tabella di NAT soggetta a cancellazione periodica. Per motivazioni legate alla gestione della memoria nonché a ragioni di sicurezza, i router chiudono abitualmente e periodicamente le porte che sembrano inattive. I record presenti nella tabella di NAT, contenenti IP e relative porte, che non risultano attivi per un determinato intervallo di tempo vengono quindi cancellati.

Il NAT KeepAlive

Quando si registra un telefono o un Centralino VoIP con un provider VoIP, il telefono VoIP passa il proprio indirizzo IP / porta al Provider VoIP. Il provider VoIP invia quindi tutte le chiamate da e verso quel dispositivo tramite l’indirizzo / porta IP registrati. Una volta registrato un telefono, il provider VoIP supporrà che l’indirizzo IP / porta per il telefono rimanga lo stesso, a meno che il telefono non si registri con una configurazione diversa.

Come visto prima però i router “puliscono” periodicamente la Tavola di NAT. Ciò comporta che le regole inattive vengano cancellate.

Il NAT keepalive è una funzione che invia pacchetti dati molto piccoli, in genere dei pacchetti dati vuoti, da un telefono VoIP al router con il solo fine di mostrare che le porte impiegate sono ancora in uso. Il telefono invierà questi piccoli pacchetti a intervalli di tempo impostati nal telefono o dal sistema telefonico. I pacchetti UDP di Keepalive sono minuscoli e non incidono sulla larghezza di banda, quindi non avranno alcun effetto sulla qualità della chiamata.

Quando un telefono o un PBX sono registrati con un Provider VoIP, eseguono periodicamente la procedura di registrazione al proxy. La frequenza con cui ciò accade è completamente configurabile sia nei telefoni che nei PBX, ma l’indicazione raccomandata è tra i 120 e i 300 secondi. Tuttavia, la maggior parte delle tabelle NAT, soprattutto con gli apparati più economici, vengono resettate periodicamente entro i 60 secondi. Nelle situazioni più critiche il reset della tabelle di NAT viene eseguito ogni 30 secondi.

Qui interviene dunque il NAT keepalive che consente alle porte RTP telefoniche di rimanere aperte inviando un pacchetto UDP ogni 10-15 secondi.

Raccomandazioni per il Keepalive NAT

Il consiglio che è possibile dare a chi si ritrova nei casi appena descritti è quello di impostare il keepalive NAT su 15 secondi. Questo consente generalmente di mantenere popolati i record della tabella di NAT.

Attenzione però ad alcune regole fondamentali:

  • Per i centralini VoIP è sempre consigliabile eseguire un NAT di tipo statico. Anche se PBX come 3CX sono perfettamente in grado di respingere i tentativi di attacco ed eseguire blacklist automatiche, soprattutto quando l’installazione è onsite, è possibile utilizzare le ACL per evitare completamente i tentativi di registrazione sul sistema.
  • Per i Telefoni IP registrati direttamente su account VoIP del provider SIP oppure registrati su un PBX in cloud è consigliabile utilizzare sempre il keepalive con un valore di 15s. Naturalmente con sistemi di approvigionamento automatico, come quello previsto da 3CX, il tutto è semplificato. Nel caso di telefoni IP in genere non si utilizzano regole di NAT di tipo statico. La scelta dipende però da molti fattori. Il primo fattore da considerare riguarda la qualità e la tipologia del router utilizzato. In situazioni limite è comunque possibile utilizzare regole NAT di tipo statico.
  • Quando più telefoni IP convivono dietro lo stesso NAT e si registrano su un centralino remoto è sempre mandatorio differenziare le porte SIP e RTP di ogni telefono. Ciò fa in modo che non vi sia sovrapposizione di porte sul lato pubblico con conseguente necessità, da parte del router, di riallocare le porte comuni. Anche in questo caso PBX come 3CX suggeriscono in maniera automatica i range di porte differenziati da utilizzare in fase di approvvigionamento automatico.

Altri Sistemi per il Superamento delle Barriere di NAT

Abbiamo analizzzato il NAT keepalive ma esistono altri sistemi efficaci che, in combinazione con il keepalive, possono garantire il perfetto funzionamento di interni remoti e telefoni SIP connessi direttamente ad account VoIP di provider. Tra questi è doveroso ricordare lo stun server e la funzionalità Rport che interviene sull’header SIP “VIA”.
Nel caso di situazioni particolarmente difficili 3cx prevede inoltre l’uso di strumenti quali l’SBC che, oltre a migliorare l’efficienza del sistema PBX, permettono di incapsulare i flussi SIP, RTP e RTCP (tipici di una chiamata VoIP) in un unico flusso cifrato.