Телефония для домена
Изучение протокола SIP привело к пониманию того, что он изначально поддерживает работу с доменными именами. В частности, достаточно создать DNS записи типа SRV и NAPTR для указания SIP клиентам где искать ваш сервер телефонии. В результате мы получаем возможность заводить пользователей типа [email protected], [email protected], [email protected] и делать звонки напрямую на эти номера. В частности, эти номера могут совпадать с адресом электронной почты.
Бесплатные звонки
Время, когда можно будет позвонить через Интернет любому человеку на его SIP URI номер, так же как и на обычный телефон — еще далеко, но уже сейчас можно получить явные преимущества.
Маркетинговая составляющая: Можно рекламировать свою компанию как максимально нацеленную на контакт с клиентом, и давать им различные способы связи с сотрудниками.
Например, на визитке сотрудника можно указывать контакты для связи по аналогии с e-mail как sip: [email protected]. Бонусом такого звонка будет обход голосового меню, нет необходимости донабора внутреннего номера – сразу соединяетесь с интересующим вас сотрудником — экономите свое время.
Можно совершать звонки на телефон бесплатно прямо с браузера через WebRTC с различных web сервисов — это возможность сэкономить на оплате счетов за телефон горячей линии 8 800. Многим вашим клиентам может быть удобно звонить сразу с компьютера в один клик через гарнитуру, а не набирать номер на мобильнике.
В большинстве случаев, звонки на SIP номера бесплатны для обеих сторон. И позволяют по полной использовать возможности современной телефонии, например видеосвязь. Можно проводить открытые конференции и семинары.
Рассмотрим настройку на популярной офисной АТС Asterisk
При настройке собственного сервера очень большое внимание следует уделять безопасности. К сожалению, сегодня телефония является лакомым кусочком для взлома.
Считаем, что Asterisk уже установлен и настроен для обычных звонков.
Первым делом проверяем, включен ли и настроен брандмауэр на этом сервере. Пример конфигурации для iptables для Debian. Конфигурацию сохраняем в /etc/iptables.up. Загружаем с помощью iptables-restore.
Файл настроек /etc/iptables.up:
*filter
# Запрещаем принимать все, для чего нет разрешающих правил
:INPUT DROP
# Разрешаем пересылку пакетов
:FORWARD ACCEPT
# Разрешаем отправку пакетов
:OUTPUT ACCEPT
# Разрешаем установленные соединения
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
# Разрешаем локальные соединения
-A INPUT -i lo -j ACCEPT
# Отвечаем на ping
-A INPUT -p icmp -m icmp --icmp-type 8 -j ACCEPT
# и подключения по SSH
-A INPUT -p tcp -m tcp --dport 22 -j ACCEPT
# RTP порты для передачи голоса, берем из /etc/asterisk/rtp.conf
-A INPUT -p udp -m udp --dport 10000:20000 -j ACCEPT
# SIP порт
-A INPUT -p udp -m udp --dport 5060 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 5060 -j ACCEPT
COMMIT
По необходимости дописываем правила для таблиц nat и mangle, если сервер используется в качестве шлюза в локальную сеть.
Делаем автозагрузку конфигурации. Для этого в файл /etc/network/interfaces после описания интерфейса добавляем строчку post-up iptables-restore < /etc/iptables.up:
allow-hotplug eth1
iface eth1 inet dhcp
post-up iptables-restore < /etc/iptables.up
Далее настраиваем fail2ban для анализа логов. Рекомендую включить модули SSH и Asterisk. Подробнее настройка описана здесь.
Настройка DNS записей
Для звонков на SIP URI нужно рассказать звонящим вам, где искать сервер телефонии. Для этого используются NAPTR и SRV записи:
Запись NAPTR для домена mysite.ru рассказывает, какие сервисы поддерживаются:
~$ host -t naptr mysite.ru
mysite.ru has NAPTR record 10 50 "s" "SIP+D2U" "" _sip._udp.mysite.ru.
mysite.ru has NAPTR record 10 51 "s" "SIP+D2U" "" _sip._udp.second.mysite.ru.
mysite.ru has NAPTR record 20 50 "s" "SIP+D2T" "" _sip._tcp.mysite.ru.
mysite.ru has NAPTR record 20 50 "s" "SIPS+D2T" "" _sips._tcp.mysite.ru.
В данном случае для домена mysite.ru определены 4 NAPTR записи.
- 10 — поле Order — приоритет сервиса. Чем ниже значение, тем выше приоритет.
- 50 — поле Preference — приоритет правила. Проверяется только для одинаковых значений Order. В данном случае, если клиент поддерживает сервис «SIP+D2U», то сначала будет отправляться запрос к _sip._udp.mysite.ru, если он не доступен — то к _sip._udp.second.mysite.ru
- «s» — поле Flags. Означает, что используется SRV запись.
- «SIP+D2U» — поле Service. Протокол, который поддерживается. В данном случае SIP с использованием UDP пакетов. SIP+D2T — для TCP пакетов. SIPS+D2T использовать шифрование TLS поверх TCP пакетов.
- "" — поле Regexp. Регулярное выражение для извлечения доменного имени. В данном случае пустое.
- _sip._udp.mysite.ru. — имя SRV записи (сервер, отвечающий за этот тип связи).