Se, durante la creazione di un trunk PJSIP, notate che l'INVITE contiene la cifratura, come nell'esempio seguente:
2024/04/16 08:13:31.168379 167.172.150.53:5060 -> 87.248.52.227:5060 INVITE sip:0721405516@voip.bellnet.eu:5060 SIP/2.0 ... m=audio 10228 RTP/SAVP 0 8 18 101 a=crypto:1 AEAD_AES_256_GCM inline:WGfCoNIjy7wnMAO4upFw0wCx619TTejUJlfnmXKSiq6hUKqD9j59uk86BPg ...
Significa che manca l'header isTrunk=1 nell'INVITE. Questo consente ad Asterisk di indicare a Kamailio di non utilizzare la cifratura SRTP, permettendo al proxy (Kamailio) di inoltrare l'INVITE al provider senza cifratura.
Per gestire correttamente i provider VoIP che non necessitano di cifratura media, è utilizzata una query SQL come la seguente ( frammento di codice già presente) :
/*Add isTrunk = 1 header to VoIP trunks that doesn't require SRTP encryption*/
// Get all voip providers ip that doesn't need media encryption
$sql = "SELECT t1.data
FROM rest_pjsip_trunks_defaults AS t1
JOIN rest_pjsip_providers AS t2 ON t1.provider_id = t2.id
JOIN rest_pjsip_trunks_defaults AS t3 ON t2.id = t3.provider_id
WHERE t3.keyword = 'media_encryption' AND t3.data = 'no'
AND t1.keyword = 'sip_server'";
Per farlo con un operatore che non è accreditato bisogna effettuare i seguenti passaggi :
runagent -m nethvoiceX
Dove "X" è il numero di versione di NethVoice.
Accedere a Mysql :
mysql use asterisk;
Per vedere quali sono i provider già configurati nella tabella rest_pjsip_trunks_defaults, puoi usare la seguente query:
MariaDB [asterisk]> select * from rest_pjsip_trunks_defaults where keyword like "sip_server"; +-------------+------------+-----------------------+ | provider_id | keyword | data | +-------------+------------+-----------------------+ | 1 | sip_server | sip.activenetwork.it | | 2 | sip_server | voip.eutelia.it | | 3 | sip_server | voip.sixcommgroup.it | | 4 | sip_server | sip.messagenet.it | | 5 | sip_server | sip.neomedia.it | | 6 | sip_server | 77.239.128.13 | | 7 | sip_server | sip.opensolution.it | | 8 | sip_server | voip.opensolution.it | | 9 | sip_server | sipuser.plink.it | | 10 | sip_server | voip.sixcomm.net | | 11 | sip_server | sip.talkho.com | | 12 | sip_server | voce.voipvox.it | | 13 | sip_server | res.sip.twt.it | | 14 | sip_server | 185.144.72.100 | | 15 | sip_server | voip.vivavox.it | | 16 | sip_server | sip.voipeasy.it | | 17 | sip_server | voip.voiptelitalia.it | | 18 | sip_server | sip.voipvoicetel.it | | 19 | sip_server | trunk.voipvoice.it | | 20 | sip_server | user.voipvoice.it | | 21 | sip_server | sip.wicity.it | | 22 | sip_server | sip.mywic.it | | 23 | sip_server | 128.65.200.18 | | 24 | sip_server | sip.digiclex.it | +-------------+------------+-----------------------+
In questo caso si può usare il successivo, ovvero il 25, per aggiungere il nuovo operatore.
La mia aggiunta di operatore ( esempio) in questo caso è di Bellnet quindi dovrò aggiungere
- id = 25
- provider = Bellnet
- description = Bellnet VoIP ( questo viene visualizzato nell'interfaccia del wizard)
- sip_server = voip.bellnet.eu
- from_domain = voip.bellnet.eu
Ovviamente questi parametri si dovranno cambiare con quelli che vorreste aggiungere come provider.
Le insert da eseguire in mysql con in uso il db di asterisk sono le seguenti :
N.B. CAMBIARE LE VALUES QUELLE INDICATE
-- Inserimento del nuovo provider Bellnet INSERT IGNORE INTO `rest_pjsip_providers` (`id`,`provider`,`description`) VALUES (25,'bellnet','Bellnet VoIP'); -- Inserimento delle impostazioni predefinite per Bellnet INSERT IGNORE INTO `rest_pjsip_trunks_defaults` (`provider_id`,`keyword`,`data`) VALUES (25,"aor_contact",""); INSERT IGNORE INTO `rest_pjsip_trunks_defaults` (`provider_id`,`keyword`,`data`) VALUES (25,"aors",""); INSERT IGNORE INTO `rest_pjsip_trunks_defaults` (`provider_id`,`keyword`,`data`) VALUES (25,"auth_rejection_permanent","off"); INSERT IGNORE INTO `rest_pjsip_trunks_defaults` (`provider_id`,`keyword`,`data`) VALUES (25,"authentication","outbound"); INSERT IGNORE INTO `rest_pjsip_trunks_defaults` (`provider_id`,`keyword`,`data`) VALUES (25,"client_uri",""); INSERT IGNORE INTO `rest_pjsip_trunks_defaults` (`provider_id`,`keyword`,`data`) VALUES (25,"codecs","ulaw,alaw"); INSERT IGNORE INTO `rest_pjsip_trunks_defaults` (`provider_id`,`keyword`,`data`) VALUES (25,"context","from-pstn-toheader"); INSERT IGNORE INTO `rest_pjsip_trunks_defaults` (`provider_id`,`keyword`,`data`) VALUES (25,"dialopts",""); INSERT IGNORE INTO `rest_pjsip_trunks_defaults` (`provider_id`,`keyword`,`data`) VALUES (25,"dialoutopts_cb","sys"); INSERT IGNORE INTO `rest_pjsip_trunks_defaults` (`provider_id`,`keyword`,`data`) VALUES (25,"direct_media","no"); INSERT IGNORE INTO `rest_pjsip_trunks_defaults` (`provider_id`,`keyword`,`data`) VALUES (25,"disabletrunk","off"); INSERT IGNORE INTO `rest_pjsip_trunks_defaults` (`provider_id`,`keyword`,`data`) VALUES (25,"dtmfmode","auto"); INSERT IGNORE INTO `rest_pjsip_trunks_defaults` (`provider_id`,`keyword`,`data`) VALUES (25,"expiration","300"); INSERT IGNORE INTO `rest_pjsip_trunks_defaults` (`provider_id`,`keyword`,`data`) VALUES (25,"failtrunk_enable","0"); INSERT IGNORE INTO `rest_pjsip_trunks_defaults` (`provider_id`,`keyword`,`data`) VALUES (25,"fatal_retry_interval","0"); INSERT IGNORE INTO `rest_pjsip_trunks_defaults` (`provider_id`,`keyword`,`data`) VALUES (25,"fax_detect","no"); INSERT IGNORE INTO `rest_pjsip_trunks_defaults` (`provider_id`,`keyword`,`data`) VALUES (25,"forbidden_retry_interval","10"); INSERT IGNORE INTO `rest_pjsip_trunks_defaults` (`provider_id`,`keyword`,`data`) VALUES (25,"force_rport","yes"); INSERT IGNORE INTO `rest_pjsip_trunks_defaults` (`provider_id`,`keyword`,`data`) VALUES (25,"from_domain","voip.bellnet.eu"); INSERT IGNORE INTO `rest_pjsip_trunks_defaults` (`provider_id`,`keyword`,`data`) VALUES (25,"hcid","on"); INSERT IGNORE INTO `rest_pjsip_trunks_defaults` (`provider_id`,`keyword`,`data`) VALUES (25,"identify_by","default"); INSERT IGNORE INTO `rest_pjsip_trunks_defaults` (`provider_id`,`keyword`,`data`) VALUES (25,"inband_progress","no"); INSERT IGNORE INTO `rest_pjsip_trunks_defaults` (`provider_id`,`keyword`,`data`) VALUES (25,"language",""); INSERT IGNORE INTO `rest_pjsip_trunks_defaults` (`provider_id`,`keyword`,`data`) VALUES (25,"match",""); INSERT IGNORE INTO `rest_pjsip_trunks_defaults` (`provider_id`,`keyword`,`data`) VALUES (25,"max_retries","10000"); INSERT IGNORE INTO `rest_pjsip_trunks_defaults` (`provider_id`,`keyword`,`data`) VALUES (25,"maxchans",""); INSERT IGNORE INTO `rest_pjsip_trunks_defaults` (`provider_id`,`keyword`,`data`) VALUES (25,"media_address",""); INSERT IGNORE INTO `rest_pjsip_trunks_defaults` (`provider_id`,`keyword`,`data`) VALUES (25,"media_encryption","no"); INSERT IGNORE INTO `rest_pjsip_trunks_defaults` (`provider_id`,`keyword`,`data`) VALUES (25,"message_context",""); INSERT IGNORE INTO `rest_pjsip_trunks_defaults` (`provider_id`,`keyword`,`data`) VALUES (25,"npanxx",""); INSERT IGNORE INTO `rest_pjsip_trunks_defaults` (`provider_id`,`keyword`,`data`) VALUES (25,"outbound_proxy","sip:10.5.4.1:5060;lr "); INSERT IGNORE INTO `rest_pjsip_trunks_defaults` (`provider_id`,`keyword`,`data`) VALUES (25,"peerdetails",""); INSERT IGNORE INTO `rest_pjsip_trunks_defaults` (`provider_id`,`keyword`,`data`) VALUES (25,"qualify_frequency","60"); INSERT IGNORE INTO `rest_pjsip_trunks_defaults` (`provider_id`,`keyword`,`data`) VALUES (25,"register",""); INSERT IGNORE INTO `rest_pjsip_trunks_defaults` (`provider_id`,`keyword`,`data`) VALUES (25,"registration","send"); INSERT IGNORE INTO `rest_pjsip_trunks_defaults` (`provider_id`,`keyword`,`data`) VALUES (25,"retry_interval","60"); INSERT IGNORE INTO `rest_pjsip_trunks_defaults` (`provider_id`,`keyword`,`data`) VALUES (25,"rewrite_contact","no"); INSERT IGNORE INTO `rest_pjsip_trunks_defaults` (`provider_id`,`keyword`,`data`) VALUES (25,"rtp_symmetric","no"); INSERT IGNORE INTO `rest_pjsip_trunks_defaults` (`provider_id`,`keyword`,`data`) VALUES (25,"sendrpid","no"); INSERT IGNORE INTO `rest_pjsip_trunks_defaults` (`provider_id`,`keyword`,`data`) VALUES (25,"server_uri",""); INSERT IGNORE INTO `rest_pjsip_trunks_defaults` (`provider_id`,`keyword`,`data`) VALUES (25,"sip_server","voip.bellnet.eu"); INSERT IGNORE INTO `rest_pjsip_trunks_defaults` (`provider_id`,`keyword`,`data`) VALUES (25,"sip_server_port","5060"); INSERT IGNORE INTO `rest_pjsip_trunks_defaults` (`provider_id`,`keyword`,`data`) VALUES (25,"support_path","no"); INSERT IGNORE INTO `rest_pjsip_trunks_defaults` (`provider_id`,`keyword`,`data`) VALUES (25,"sv_usercontext",""); INSERT IGNORE INTO `rest_pjsip_trunks_defaults` (`provider_id`,`keyword`,`data`) VALUES (25,"t38_udptl","no"); INSERT IGNORE INTO `rest_pjsip_trunks_defaults` (`provider_id`,`keyword`,`data`) VALUES (25,"t38_udptl_ec","none"); INSERT IGNORE INTO `rest_pjsip_trunks_defaults` (`provider_id`,`keyword`,`data`) VALUES (25,"t38_udptl_maxdatagram",""); INSERT IGNORE INTO `rest_pjsip_trunks_defaults` (`provider_id`,`keyword`,`data`) VALUES (25,"t38_udptl_nat","no"); INSERT IGNORE INTO `rest_pjsip_trunks_defaults` (`provider_id`,`keyword`,`data`) VALUES (25,"transport","0.0.0.0-udp"); INSERT IGNORE INTO `rest_pjsip_trunks_defaults` (`provider_id`,`keyword`,`data`) VALUES (25,"trust_rpid","no"); INSERT IGNORE INTO `rest_pjsip_trunks_defaults` (`provider_id`,`keyword`,`data`) VALUES (25,"userconfig","");
Nel container di freepbx procedere con il seguente comando:
fwconsole reload
Dopodiché procedere alla creazione del trunk tramite il wizard di NethVoice dove ritroverete il nuovo operatore.