В таком случае, тебе нужно открыть брандмауэр для SIP-трафика, идущего от твоего SIP-провайдера. Убедись, что твой SIP-провайдер отправляет SIP-трафик на твой IP-адрес на те порты, которые слушает UniFi Talk. Используй эту команду в CLI для проверки портов: `fs_cli -x "sofia status profile external_talk"`
=================================================================================================
Имя external_talk
Доменное имя N/A
Auto-NAT false
DBName sofia_reg_external_talk
Pres Hosts
Dialplan XML
Context public
Challenge Realm auto_to
RTP-IP 162.191.XXX.YYY
Ext-RTP-IP stun:global.stun.twilio.com
SIP-IP 162.191.XXX.YYY
Ext-SIP-IP 162.191.XXX.YYY
URL sip:mod_sofia@162.191.XXX.YYY:56391
BIND-URL sip:mod_sofia@162.191.XXX.YYY:56391;maddr=162.191.XXX.YYY;transport=udp,tcp
TLS-URL sip:mod_sofia@162.191.XXX.YYY:5061
TLS-BIND-URL sips:mod_sofia@162.191.XXX.YYY:5061;maddr=162.191.XXX.YYY;transport=tls
HOLD-MUSIC N/A
OUTBOUND-PROXY N/A
CODECS IN PCMU,PCMA,VP8
CODECS OUT PCMU,PCMA,VP8
TEL-EVENT 101
DTMF-MODE rfc2833
CNG 13
SESSION-TO 0
MAX-DIALOG 0
MAX-RECV-RPS 1000
NOMEDIA false
LATE-NEG false
PROXY-MEDIA false
AGGRESSIVENAT false
CALLS-IN 0
FAILED-CALLS-IN 0
CALLS-OUT 0
FAILED-CALLS-OUT 0
REGISTRATIONS 0
Ты можешь видеть, что в моем случае, используемый UniFi Talk порт 56391. Значит, CallCentric будет отправлять SIP INVITE сообщения мне на порт 56391. Это одна из точек регистрации у твоего SIP-провайдера, чтобы его прокси знал исходящий адрес твоего SIP-UA. Ниже приведен пример SIP REGISTER сообщения, которое мой экземпляр UniFi Talk отправляет моему SIP-провайдеру: `REGISTER sip:callcentric.com;transport=udp SIP/2.0`
`v:SIP/2.0/UDP 162.191.XXX.YYY:56391;rport;branch=z9hG4bK56rSrSrSHtgDS`
`Max-Forwards:70`
`f:<sip:177712345671@callcentric.com>;tag=3Q1Z0HFXHZaKp`
`t:<sip:17771234567@callcentric.com>`
`i:3d13f130-187d-4ff4-8eb0-3abea8bb704a`
`CSeq:96008541 REGISTER`
`m:<sip:gw+CallCentricext.141@162.191.XXX.YYY:56391;transport=udp;gw=CallCentricext.141>`
`Expires:30`
`User-Agent:UT-3.5.4`
`Allow:INVITE,ACK,BYE,CANCEL,OPTIONS,MESSAGE,INFO,UPDATE,REGISTER,REFER,NOTIFY`
`k:timer,path,replaces`
`Proxy-Authorization:Digest username="17771234567",realm="callcentric.com",nonce="ABCDEFGHIJKLMNOPQRSTUVWXYZ",algorithm=MD5,uri="sip:callcentric.com",nonce="ABCDEFGHIJKLMNOPQRSTUVWXYZ",algorithm=MD5,uri="sip:callcentric.com",nonce="ABCDEFGHIJKLMNOPQRSTUVWXYZ",algorithm=MD5,uri="sip:callcentric.com",nonce="ABCDEFGHIJKLMNOPQRSTUVWXYZ",algorithm=MD5,uri="sip:callcentric.com",nonce="ABCDEFGHIJKLMNOPQRSTUVWXYZ",algorithm=MD5,uri="sip:callcentric.com",nonce="ABCDEFGHIJKLMNOPQRSTUVWXYZ",algorithm=MD5,uri="sip:callcentric.com",nonce="ABCDEFGHIJKLMNOPQRSTUVWXYZ",algorithm=MD5,uri="sip:callcentric.com",nonce="ABCDEFGHIJKLMNOPQRSTUVWXYZ",algorithm=MD5,uri="sip:callcentric.com",nonce="ABCDEFGHIJKLMNOPQRSTUVWXYZ",algorithm=MD5,uri="sip:callcentric.com",nonce="ABCDEFGHIJKLMNOPQRSTUVWXYZ",algorithm=MD5,uri="sip:callcentric.com",nonce="ABCDEFGHIJKLMNOPQRSTUVWXYZ",algorithm=MD5,uri="sip:callcentric.com",nonce="ABCDEFGHIJKLMNOPQRSTUVWXYZ",algorithm=MD5,uri="sip:callcentric.com",nonce="ABCDEFGHIJKLMNOPQRSTUVWXYZ",algorithm=MD5,uri="sip:callcentric.com",nonce="ABCDEFGHIJKLMNOPQRSTUVWXYZ",algorithm=MD5,uri="sip:callcentric.com",nonce="ABCDEFGHIJKLMNOPQRSTUVWXYZ",algorithm=MD5,uri="sip:callcentric.com"`
`Content-Length: 0`
Ты ожидаешь получать SIP INVITE сообщения на порту 5060, но если ты не настроишь свой исходящий порт как 5060 в UniFi Talk / FreeSwitch, то исходящий порт для твоих SIP сообщений (тот же, что и порт назначения для SIP сообщений от твоего провайдера, которые он отправляет тебе) — это эфемерный порт (номер порта между 1024 и 65535). Если ты не можешь сузить диапазон портов для входящих SIP сообщений от твоего SIP провайдера, открой весь диапазон IP адресов твоего SIP провайдера в брандмауэре с внешней стороны в сторону шлюза. Ты можешь задать порт, который использует UniFi Talk для SIP сигнализации, используя опцию "Static Signaling Port" в UniFi Talk, как показано на скриншоте ниже: Это поможет тебе не открывать брандмауэр для всех портов IP адресов SIP провайдера, а только для определенного порта. Если ты хочешь пойти этим путем, убедись, что ты получил информацию от своего SIP провайдера о том, какие порты он использует для отправки SIP INVITE сообщений тебе при входящем звонке. Затем установи свой "Static Signaling Port" в значение, которое ты получил от своего SIP провайдера. Затем перезапусти UniFi Talk и создай правило брандмауэра с внешней стороны в сторону шлюза, чтобы разрешить трафик на этот номер порта. Тебе не нужно настраивать никаких правил NAT, потому что UniFi Talk автоматически привязан к публичному IP адресу твоего UDMP, который ты можешь увидеть, используя команду: `fs_cli -x "sofia status profile external_talk"`
Поэтому тебе нужен только правило брандмауэра, которое разрешает трафик от IP адреса SIP провайдера на порт, который он использует для отправки тебе SIP INVITE сообщений (или, альтернативно, для всех портов от IP адреса SIP провайдера).