У FXS-шлюза отваливается SIP-регистрация на Астериске после отключения VPN, в чём причина?
День добрый.
Ситуация следующая:
Имеется Микротик1 в одном городе, Микротик2 в другом.
На Микротик1 в его LAN-интерфейсе включен WAN-интерфейс от FXS-шлюза DVG-5004S
Между Микротик1 и Микротик2 проброшен VPN-туннель.
В Микротик2 на его LAN-интерфейсе включен Астериск. На FXS-шлюзе прописана SIP-регистрация до Астериска на все 4 линии.
Периодически пропадает SIP-регистрация всех линий FXS-шлюза на астериске. Причём, либо со статусом UNREACHABLE (это, как выяснилось, если отключить VPN и включить обратно), либо со статусом UNKNOWN. Статус UNKNOWN вылезает либо после полной потери связи - это нормальная ситуация, либо (самая основная проблема)
после того, как на шлюзе пройдёт 6-10 разговоров.
От версии, что баг в железе отказались - ибо попробовали разные железки, результат такой же.
Есть ещё Микротик3 в третьем городе, там стоит FXS-шлюз QVI-2102. Там такой ситуации не наблюдается. Кроме того факта, что после восстановления тамошнего VPN-туннеля приходится перезагружать шлюз, чтобы статус SIP-регистрации изменился с UNKNOWN на OK.
Пробовал также менять MTU, не помогло. При разных значениях одинаковая проблема.
В параметрах SIP-регистрации для д-линка выставлены значения
Session Expiration : 30 s
Session Refresh Request : Re-INVITE
SIP Message Resend Timer Base : 0.5 s
Max. Response Time for Invite : 4 s
Пока не могу сообразить в каком направлении копать.
Есть ли опыт решения подобной проблемы?
на серваке с asterisk запускаете съем трафа так tcpdump -i eth0 -vnn -s0 port 5060 -w /tmp/reg.cap
рвете поднимаете VPN (в общем, воспроизводите ситуацию с недоступностью)
через пару минут останавливаете tcpdump Ctrl+C
дальше разгребать дамп в wireshark и найти крайнего
я думаю проблема в том, что шлюз посылает данные в серую сеть через внешний адрес (не туннель). Изза этого вешается в states. И не маршрутизируется в туннель при поднятии оного.
Проверьте states.
У себя написал watch скрипт на пинг астера, и если пинга нет - рублю все стейты до него.
На машине с Asterisk можно попробовать сделать conntrack -F (из пакета conntrack-tools).
Плюс вдобавок на Микротик2 нажать аналогичную кнопку.
(В интернетах пишут, что при этом еще туннели рвутся, но лично у меня, на линуксовой машине - нет)
И посмотреть, пройдет ли следующая попытка шлюза зарегаться.