У меня проблема, что мой клиент может войти в систему с паролем и позвонить, но не принимает звонки. Когда я устраняю его с помощью tcpdump, он сообщает мне, что REGISTER
работает, но SUBSCRIBE
не.
21:11:24.734317 IP router.48299 > fritz.box.sip: SIP: REGISTER sip:fritz.box SIP/2.0
21:11:24.739130 IP router.box.sip > router.48299: SIP: SIP/2.0 200 OK
21:11:24.769070 IP router.48299 > fritz.box.sip: SIP: SUBSCRIBE sip:myphone@fritz.box SIP/2.0
21:11:24.772725 IP router.box.sip > router.48299: SIP: SIP/2.0 401 Unauthorized
Клиент: sipdroid (доступный через wlan0) Сервер: Fritzbox (доступный через eth0) Маршрутизатор: Banana Pi
Между ними: роутер, который MASQUERADE
s трафик:
-A POSTROUTING -o wlan0 -j MASQUERADE
-A POSTROUTING -o eth0 -p udp --dport 5060 -j MASQUERADE
-A POSTROUTING -o eth0 -p tcp --dport 5060 -j MASQUERADE
-A POSTROUTING -o eth0 -p tcp --dport 5061 -j MASQUERADE
-A FORWARD -j ACCEPT
Странно то, что проблема, похоже, в том, что сервер voip отрицает SUBSCRIBE
запрос, а логин работает с REGISTER
команда.
Вам нужно будет сделать несколько захватов пакетов, чтобы узнать, что на самом деле находится внутри ваших SIP-пакетов. Не зная больше о том, как настроен ваш SIP (это транк?), Скорее всего, он пытается выдать SUBSCRIBE
с IP-адресом внутреннего клиента, который отклоняется вышестоящим сервером SIP.
Запуск SIP за NAT, как известно, сложен настолько, что существует множество шлюзов, поддерживающих SIP. Я не знаю, делает ли что-нибудь здесь программное обеспечение маршрутизации, которое вы используете на своем Pi.
Я хотел бы выяснить, поддерживает ли ваш SIP-клиент STUN (утилиты обхода сеанса для NAT). Если это так, возможно, лучше настроить его для запроса внешнего STUN-сервера перед запуском любых сеансов SIP.