Piero V.

VoIP Fastweb, NAT e 403 Forbidden

TL; DR

Fastweb si aspetta il vostro IP pubblico anche nei messaggi SIP (ad esempio, nel campo From).

Quindi, se il dispositivo su cui gestite il VoIP si trova dietro NAT, dovete trovare il modo per configurarlo in modo che riporti l’indirizzo assegnatovi da Fastweb.

Nel mio ATA Grandstream, il campo da popolare si chiama Use NAT IP.

Per una configurazione Asterisk, bisogna aggiungere un paio di impostazioni al transport (in pjsip.conf):

[transport-udp]
type=transport
protocol=udp
bind=0.0.0.0
local_net=10.0.0.0/8
local_net=172.16.0.0/12
external_media_address=12.34.56.78
external_signaling_address=12.34.56.78

Questo dovrebbe risolvere i 403 Forbidden quando provate a fare delle chiamate. Un sintomo dello stesso problema è che la registrazione avviene con successo, ma le chiamate non funzionano. Un errore di autenticazione (password incorretta, per esempio) restituirebbe un 401 Unauthorized, quindi dovrebbe manifestarsi in maniera diversa anche in eventuali log e/o UI.

Inoltre, potrebbe servirvi una qualche forma di keep-alive (a meno di non aprire una porta sul vostro firewall), altrimenti dopo un po’ di tempo il vostro numero potrebbe diventare irraggiungibile.

Solitamente, i client SIP integrati nel gateway non hanno questi problemi perché usano direttamente l’interfaccia pubblica.

Ho testato il tutto solo con indirizzo IP pubblico. Non so come funzioni con la carrier-grade NAT, ma immagino che, se siete interessati a gestire il VoIP da soli, abbiate anche richiesto un indirizzo IP pubblico 🙂.

La storia lunga

Un paio di settimane fa, sono passato a Fastweb.

Internet sta funzionando davvero bene e non ho avuto nessun problema a configurare il mio gateway. Invece ho da subito avuto problemi con il VoIP.

Il primo è stato un po’ una sfortuna: pur avendo ricontrollato i dati (soprattutto nome e indirizzo) quando ho stipulato il contratto, non mi sono accorto che il venditore aveva aggiunto una cifra estranea al numero di telefono. Quindi la portabilità era inizialmente fallita.

E anche alla prima richiesta di supporto, l’operatore non si era accorto dell’errore e mi aveva detto che TIM aveva comunicato che la linea era già stata disattivata 🙈. Per la seconda richiesta ero partito col piede di guerra, ma per fortuna l’altro operatore si è accorto immediatamente dell’errore e in un paio di giorni lavorativi si è risolto questo primo problema.

Quindi ho chiamato per chiedere le mie credenziali di accesso al VoIP. Ho dovuto ammettere che non stavo usando davvero il router Fastweb e dare un MAC address diverso (di cui avrei potuto comunque fare lo spoofing 😈).

Dopo aver impostato il mio Gradstream HT-502, le telefonate non funzionavano, nonostante il dispositivo riportasse di essere registrato correttamente. Ho provato anche diversi softphone come Linphone, ma nessuno funzionava (e nessuno mi dava dei log utili…).

Ho provato a chiamare di nuovo l’assistenza. Però si sono rifiutati di darmi qualsiasi tipo di aiuto, siccome ho chiesto di usare i miei dispositivi…

Al che ho dovuto fare quello che non avrei voluto: scaricare Asterisk e provare a configurarlo. Tra l’altro, Debian Stable e Testing non lo offrono nei loro repository, quindi ho usato una macchina virtuale con Ubuntu 24.04 (Asterisk 20.6).

Ho seguito questa guida per Messagenet, senza troppo successo.

All’inizio c’era qualche problema di configurazione, quindi non veniva elencato l’endpoint per Fastweb su pjsip list registrations dalla CLI di Asterisk (asterisk -r).

Dopo averli risolti, non riuscivo comunque ad effettuare e/o ricevere le chiamate. Vedevo appunto dei 403 Forbidden nei log (che si possono abilitare con pjsip set logger on).

Ad un certo punto, ho pensato che per un errore Forbidden la causa dovesse trovarsi probabilmente nel campo From e lì ho notato l’indirizzo IP privato. Quindi, ho provato a cercare la documentazione di come spoofare quello pubblico, grazie a cui tutto ha iniziato a funzionare. Poi ho cercato una voce analoga nell’HT-502 e così sono riuscito ad evitare Asterisk 🎉.

Allego comunque la mia configurazione del pjsip.conf per Fastweb, però dovrete associarle un dial plan per poterla usare.

Mi chiedo come mai Fastweb forzi questa impostazione. Non penso sarebbe necessaria, visto che comunque la sessione è autenticata e il server SIP può ricevere l’indirizzo IP da IP o da UDP, tant’è vero che riesce comunque a inviare le risposte. Con TIM non ho mai dovuto fare nulla di simile (e fortunatamente, visto che offrono un indirizzo IP dinamico). Però devo ammettere che non conosco il protocollo SIP. Magari TIM ha delle abilitato delle funzionalità opzioniali per il NAT traversal.

Personalmente penso Fastweb potrebbe aggiungere qualche informazione in più alla pagina delle istruzioni per il modem libero, quindi li ho contattati via PEC per suggerirglielo.