Настройка kamailio за NAT
Установка и настройка kamailio осуществляется при помощи скрипта kamailio-install. Изменения скрипта предусматривают вариант, когда сервер Videomost с kamailio расположен за NAT, однако, по завершении работы скрипта, необходимо проверить следующие настройки:
- В файле /etc/hostname пропишите доменное имя сервера.
- В файле /etc/host пропишите соответствие доменного имени сервера и его внутреннего IP-адреса.
- Убедитесь, что в файле /etc/kamailio/kamailio.cfg, секция !ifdef WITH_NAT, параметр listen прописаны внутренний и внешний IP-адрес сервера.
- Убедитесь, что в файле /etc/rtpengine/rtpengine.cfg прописан внешний и внутренний IP-адрес сервера.
- Приведите файл /etc/default/ngcp-rtpengine-daemon к виду:
- Убедитесь, что в файле /usr/share/jconfsrv/conference-srv.xml определены параметры:
- В панели администратора должно быть указано значение настройки adm_sip_builtin_domain в формате: доменное.имя.сервера:5080
- В панели администратора должна быть активирована настройка adm_sip_builtin_allow
- На сервере должна быть активирована лицензия с параметром Поддержка SIP-протокола
#!ifdef WITH_NAT
listen=udp:ip_int:5060
listen=tcp:ip_int:5060
listen=udp:ip_int:5060 advertise ip_ext:5080
listen=tcp:ip_int:5060 advertise ip_ext:5080
#!endif
Здесь и далее ip_int - внутренний IP-адрес, ip_ext - внешний IP-адрес.
Порт может для ip_ext может быть любым отличным от значения ip_int и совпадать со значением порта заданным в п.7 данной статьи.
[rtpengine]
table = -1
interface = ip_int!ip_ext
listen-udp = 127.0.0.1:7722
timeout = 60
silent-timeout = 3600
tos = 184
port-min = 3000
port-max = 500
RUN_RTPENGINE=yes
CONFIG_FILE=/etc/rtpengine/rtpengine.conf
PIDFILE=/var/run/ngcp-rtpengine-daemon.pid
MANAGE_IPTABLES=no
TABLE=-1
sip-media-spoofing - заданы внешний и внутренний IP-адрес;
xmpp-stun - задан stun-сервер
Например:
sip-media-spoofing="ip_extxip_int" xmpp-stun="stun.l.google.com:19302"
Обратите внимание, что значения ip_ext и ip_int разделены знаком x.
Для более стабильной работы необходимо указать публичный или иной доступный stun сервер, территориально расположенный максимально близко к рабочему серверу. Список публичных серверов можно посмотреть здесь http://olegh.ftp.sh/public-stun.txt (взято из статьи https://en.wikipedia.org/wiki/STUN).