Zadarma · устойчивый SIP
Шлюз в Европе, гарнитура здесь
Обрыв на таком канале — обычный случай SIP. Провайдер портит UDP и разбирает SIP на порту 5060, а общий VPN, особенно по TCP, добавляет свои потери. Рабочая схема у Zadarma и у остальных АТС одна: шлюз с белым адресом в Европе регистрируется по TLS 5061 и SRTP, гарнитура ходит на шлюз через WebRTC. До абонента голос уходит уже с шлюза.
Гарнитура
Шлюз не подключён.
Как поднимают шлюз
- Поставьте
flyctlи войдите в аккаунт. Вgateway/.envоставьте имя приложения и регионamsилиfra. fly apps create zadarma-gateway, затемfly ips allocate-v4 -a zadarma-gateway. Адрес изfly ips listзапишите вPUBLIC_IP. Общий IPv4 Fly для голоса не подходит.- A-записи
phone.syntiora.comиturn.syntiora.comдолжны смотреть на выделенный адрес изfly ips list, сейчас это137.66.25.238. В кабинете Zadarma возьмите логин вида1234-100и его пароль. Ограничение по IP поставьте на этот адрес или снимите. Софтфон на этом номере выключите. fly volumes create gateway_data --region ams -s 1 -a zadarma-gateway -y. Регион тома иFLY_REGIONдолжны совпасть.npm run gateway, затемfly secrets import -a zadarma-gateway < gateway/.envи из корня проектаfly deploy.- Импортируйте
gateway/generated/client.json, нажмите «Подключить» и позвоните на 4444. Слышите себя — путь живой. Машина одна: UDP на Fly не балансируется.
Пока сервера нет, в приложении Zadarma поставьте транспорт TLS и порт 5061. В чужом софтфоне к TLS добавьте SRTP. Так Zadarma сама обходит блокировку SIP. Голос при этом всё ещё UDP, поэтому при деградации UDP нужен шлюз, а не ещё один VPN.
Запасной путь: ключи API
Callback оставляет голос на обычных телефонных линиях Zadarma. Он годится, когда гарнитуру поднять нельзя и ваш номер принимает входящий международный вызов. Ключ и секрет: Настройки → Интеграции и API. Секрет остаётся в data/config.json на этой машине.