Cloud Computing
| Orçamento: Aberto |
Publicado: |
Propostas: 2
Olá a todos!
Tenho um servidor Asterisk 20.7.0 com PJSIP em um VPS da Hostgator, com IP público.
1.1) Minhas configurações são estas:
[global]
type=global
user_agent=Asterisk
default_realm=<my_domain>
stunaddr=stun.l.google.com:19302
ice_support=y
keep_alive_interval=60
[transport-udp-ipv4]
type=transport
protocolo=udp
bind=0.0.0.0:11050 (Estou usando a porta 11050)
local_net=192.168.0.0/24 (não existe rede local, acabei de colocar este intervalo IP como teste)
external_media_address=<my_public_ip>
external_signaling_address=<my_public_ip>
[transport-udp-ipv6]
type=transport
protocolo=udp
bind=[::]:11050
[transport-tcp-ipv4]
type=transport
protocolo=tcp
bind=0.0.0.0:11050
local_net=192.168.0.0/24
external_media_address=<my_public_ip>
external_signaling_address=<my_public_ip>
[transport-tcp-ipv6]
type=transport
protocolo=tcp
bind=[::]:11050
[ms2024111]
type=endpoint
context=interna
não_permitir=all
allow=ulaw
allow=alaw
allow=gsm
auth=(sem senha para facilitar o teste)
aors=ms2024111
reescrever_contact=yes
rtp_simétrico=yes
force_rport=y
direct_media=no
[ms2024111_auth]
type=auth
auth_type=userpass
nome_de_utilizador=ms2024111
password=1234
[ms2024111]
type=aor
max_contacts=1
remove_existing=yes
[aislan]
type=endpoint
context=interna
não_permitir=all
allow=ulaw
allow=alaw
allow=gsm
auth=
aors=aislan
reescrever_contact=yes
rtp_simétrico=yes
force_rport=y
direct_media=no
;ice_support=yes
[aislan_auth]
type=auth
auth_type=userpass
nome_de_utilizador=aislan
password=1234
[aislan]
type=aor
max_contacts=1
remove_existing=yes
[fernanda]
type=endpoint
context=interna
não_permitir=all
allow=ulaw
allow=alaw
allow=gsm
auth=
aors=fernanda
reescrever_contact=yes
rtp_simétrico=yes
force_rport=y
direct_media=no
[fernanda_auth]
type=auth
auth_type=userpass
nome_de_utilizador=fernanda
password=1234
[fernanda]
type=aor
max_contacts=1
remove_existing=yes
[pcaislan]
type=endpoint
context=interna
não_permitir=all
allow=ulaw
allow=alaw
allow=gsm
auth=
aors=pcaislan
reescrever_contact=yes
rtp_simétrico=yes
force_rport=y
direct_media=no
[pcaislan_auth]
type=auth
auth_type=userpass
nome_de_utilizador=pcaislan
password=1324
[pcaislan]
type=aor
max_contacts=1
remove_existing=yes
[elizandro]
type=endpoint
context=interna
não_permitir=all
allow=ulaw
allow=alaw
allow=gsm
auth=
aors=elizandro
reescrever_contact=yes
rtp_simétrico=yes
force_rport=y
direct_media=no
[elizandro_auth]
type=auth
auth_type=userpass
nome_de_utilizador=elizandro
password=1234
[elizandro]
type=aor
max_contacts=1
remove_existing=yes
Em telefones Android com o aplicativo Linphone (eu testei em outros aplicativos também), ou em computadores com software como Linphone, Zoiper, MicroSIP, eu posso fazer chamadas irrestritas, com boa qualidade, independentemente do tipo de conexão com a Internet que eu uso (WIFI, 4G). Posso fazer chamadas sem problemas entre computadores e telefones, qualquer tipo de conexão.
O problema:
Estou desenvolvendo um dispositivo que tem um Orange PI PC como sua placa central, no qual eu executo o sistema operacional Debian 10 (Buster) e o cliente SIP Linphone.
O problema é que eu posso me registrar no servidor, posso fazer e receber chamadas, mas sem receber áudio, já que não há transmissão de áudio, a chamada sempre cai após 31 segundos.
Abaixo está uma amostra da depuração RTP do console Asterisk:
Recebi o pacote RTP de 179.224.180.148:61511 (tipo 00, seq 000770, ts 3363336177, len 000160)
Enviado pacote RTP P2P para 192.168.0.3:7078 (tipo 00, len 000160)
Recebi o pacote RTP de 179.224.180.148:61511 (tipo 00, seq 000771, ts 336336337, len 000160)
Enviado pacote RTP P2P para 192.168.0.3:7078 (tipo 00, len 000160)
Obteve o pacote RTP de 179.224.180.148:61511 (tipo 00, seq 000772, ts 3363336497, len 000160)
Note que:
179.224.180.148 é o IP do dispositivo que eu usei para chamar de Orange PI
192.168.0.3 é o IP do meu Orange PI.
Pelo pouco que entendo, por alguma razão o Orange PI não está “passando o seu IP público para o servidor”, sei exatamente porquê.
[..]
Atenção:
No Asterisk, se eu configurar os pontos de extremidade com <direct_media=yes>, posso fazer chamadas entre dispositivos e para o Orange PI, no entanto, apenas quando os parceiros de chamada estão na mesma rede. Isso não resolve o problema, já que os dispositivos Orange PI, assim como a pessoa que faz a chamada, estarão sempre em redes diferentes.
[..]
O que eu tentei para resolver o problema?
4.1) Configurei o NAT iptables no sistema operacional, também desativei o firewall completamente.
4.2) Configurei o servidor de STUN: stun.l.google.com:19302.
4.3) Ativei o STUN e o servidor ICE no Asterisk.
Para resumir, acredito que o Orange PI tem alguma limitação quando se trata de NAT, o que faz com que seu IP privado chegue ao servidor, e não ao público. Acredito que é isso, porque, entre computadores com Windows e em celulares Android, fiz testes e a conexão, mesmo em redes diferentes, funciona sem problemas.
Preciso de uma pessoa com experiência em Asterisk que saiba resolver esse problema.