SIP Proxy e SBC para FusionPBX

← voltar ao portfólio

07/2026 – atual · 3 meses

SIP proxy e SBC em Kamailio para FusionPBX, com foco em atravessar NAT sem quebrar a mídia.

KamailiortpengineSIPSIPpPythonFlask 3.1SQLAlchemy 2.0MariaDBDockersystemd

O problema

PBX atrás de NAT é a fonte clássica de chamada muda: a sinalização passa, o áudio não. As soluções prontas ou trazem dezenas de módulos que ninguém entende, ou não expõem o modo transparent que o cenário exige.

A arquitetura

Kamailio com vinte módulos em uso deliberado — a disciplina declarada do projeto é que módulo só entra se estiver em uso ativo. O relay de mídia e o NAT traversal ficam com o rtpengine em modo transparent. O painel é Flask 3.1 organizado em blueprints, com SQLAlchemy 2.0 usando reflection e mapeamento imperativo sobre as tabelas do próprio motor, e um cliente JSON-RPC sobre HTTP conversa com o Kamailio em porta dedicada. A infraestrutura tem quatro Dockerfiles (kamailio, rtpengine, fusionpbx e painel), migrations SQL versionadas e provisionamento do FusionPBX por unit systemd.

O resultado

Treze cenários de teste em SIPp cobrindo negociação G.729 (incluindo payload type dinâmico contra estático e AVPF sem rtpmap), INVITE de entrada e saída, REGISTER de ramal remoto e rejeição 403 e 404. Isso é teste de conformidade de sinalização SIP, não teste de aplicação.

Sinalização e mídia atravessando o NAT
Sinalização e mídia atravessando o NAT
Os 13 cenários de conformidade SIP em SIPp
Os 13 cenários de conformidade SIP em SIPp

🔒 Código-fonte

git clone https://git.programandosolucoes.com.br/git/repos/sipproxy-fusionpbx.git

Código-fonte privado. As credenciais de leitura são liberadas sob solicitação — me chame para conversar sobre o projeto.

Carlos Alberto — carlosalberto4ti@gmail.com · +55 11 2615-2880