Network

Сегодня мы поговорим о SIP телефонах. А именно, об опыте использования SIP телефонов в локальной сети офиса, которые подключаются к SIP серверу через публичную сеть Интернет. Если вы используете SIP-телефоны вместе с нашим облачным сервисом, то данная заметка будет полезна и поможет избежать основных проблем при работе IP телефонии за NAT.

Что такое NAT?

Начнем с того, а что же такое этот NAT?

Не буду копировать из wiki умные вещи, попробую объяснить проще — NAT (Network Address Translation) — это механизм, который позволяет маршрутизатору (наш сервер, роутер, модем – все, что используем для выхода в Интернет) определять какие сервисы находятся за роутером и должны быть доступны из интернета, чтобы пользователи оттуда могли этими сервисами пользоваться. Так как, в большинстве случаев, у нас всего 1 внешний (белый, публичный – как кому больше нравится) IP адрес, а устройств в сети много, то мы используем локальные (серые) IP адреса. Они не доступны из Интернета, а NAT помогает нам опубликовать в мир какой-то порт из локальной сети.

Надеюсь, что здесь пока все понятно…

Для IP-телефонии критичны задержки пакетов в сети, хотя технология обладает некоей толерантностью (устойчивостью) к потерям отдельных пакетов. Так, потеря до 5 % пакетов не приводит к ухудшению разборчивости речи. Максимальное отклонение между последовательной передачей пакетов в сети Интернет не должны превышать 50 мс. Максимальный процент потерь при передачи пакетов в сети Интернет – не более 3%.

Причины задержек в передаче голосовых данных по сети IP в большой степени связаны с особенностями транспорта пакетов. Протокол TCP обеспечивает контроль доставки пакетов, однако достаточно медленный и потому не используется для передачи голоса. UDP быстро отправляет пакеты, однако восстановление потерянных данных не гарантируется, что приводит к потерянным частям разговора при восстановлении (обратном преобразовании) звука. Немалые проблемы приносит джиттер (отклонения в периоде поступления-приёмки пакетов), появляющийся при передаче через большое число узлов в нагруженной IP-сети. Недостаточно высокая пропускная способность сети (например при одновременной нагрузке несколькими пользователями), серьёзно влияет не только на задержки (то есть рост джиттера), но и приводит к большим потерям пакетов.

Между конечными точками пользователей и серверами IP-телефонии, а также между серверами IP-телефонии и оборудованием оператора связи (поставщика VoIP) программных или аппаратных устройств, канал должен отвечать описанным выше требованиям.

Проверить пропускную способность каналов можно с помощью простой утилиты iperf-2.0.5. Предположим, что мы хотим гарантировать 10 одновременных разговоров с использованием G.711 кодека. Рекомендуемое требование к каналу составляет 1 Мбит/с.

На сервере запускаем iperf с параметрами (ожидать на стандартном порте 5001 входящие UDP запросы):
iperf -u -s

На клиенте запускаем тестирование UDP c длиной 160 байт со скоростью 1 Мбит/с в течение 180 секунд на сервер 10.10.10.119:
iperf -u -c 10.10.10.119 -l 160 -b 1M -t 180

Получаем результат:

Канал пригоден для 10 одновременных соединений.

Сегодня поговорим о безопасных разговорах 🙂 Вы конечно же поняли: шифрование в SIP. Хочу научить FreeSWITCH использовать TLS (вместо UDP) и шифровать голос по SRTP (с помощью ZRTP), в качестве клиента будет телефон Yealink.

После публикации «Звонок с сайта«, ко мне обращались несколько человек с одним вопросом: «Можно вместо CallerID подставить IP-адрес звонящего?» Отвечаю: Можно! 🙂 Просто добавьте в Ваш диалплан:

<action application=“set” data=“effective_caller_id_number=${network_addr}”/>
<action application=“set” data=“effective_caller_id_name=Site Call”/>

Получите:

Буквально вчера мы наблюдали начало тестирования последнего обновления Oktell, где была добавлена поддержка работы SIP-сервера за NAT. Решил и я проверить, как оно все работает 🙂

Для чистоты эксперимента, я нахожусь дома, где все устройства работают за WiFi-роутером. И для начало, что бы не играться с пробрасыванием портов, я включу DMZ на своем роутере для ноутбука с установленным Oktell:

DMZ
DMZ

Неоднократно приходись делать объединение офисной АТС на базе Asterisk с call-центром Oktell или просто интегрировать два номерных плана удаленных офисов на Oktell IP PBX и Asterisk. В общем, нет ничего сложного, посмотрим как это все работает на простом примере.

У нас есть 2 офиса: в одном прекрасно работает Oktell IP PBX (номерной план 1хх и 2хх), а в другом со своей задачей отлично справляется Asterisk (номерной план 3хх и 4хх). У каждой из АТС имеются свои городские номера, только еще на Asterisk установлен GSM-шлюз. Каждая из АТС имеет белый внешний адрес (или VPN между офисами). Задача сделать прозрачное объединение двух номерных планов, что бы сотрудник не задумываясь набирал номер, а так же дать возможность сотрудникам за Oktell звонить через GSM-шлюз. Рассмотрим как это решается.

Уже не первый раз меня спрашивают: «Как подключить SIP-телефон и рабочее место Oktell на ноутбуке, который подключен по WiFi»

Отвечаю:

1. Ноутбук подключен к локальной сети только по WiFi, создаем сетевой мост:

Сетевой мост
Сетевой мост
Сетевой мост
Сетевой мост

2. На карте сети в Oktell ассоциируем SIP-телефон с нашим ноутбуком:

Карта сети
Карта сети

3. Подключаем Internet\WAN порт SIP-телефона к ноутбуку

«Лаборатория Касперского» подвела предварительные итоги вирусной активности за 2011 год и сделала киберпрогноз на следующий. В рамках ежегодного мероприятия «Вирусные итоги и прогнозы» эксперты компании собрали и проанализировали самую важную информацию об опасностях в кибермире за прошедшие 12 месяцев. Вирусные аналитики также отметили, что их прогнозы развития событий в киберпространстве на 2011 год во многом сбылись.

Согласно данным «Лаборатории Касперского», 2011 год был отмечен не только количественным, но и качественным ростом киберугроз. Под ударом оказались как частные пользователи, так и корпоративный сектор, с которым связаны наиболее заметные события в сфере информационной безопасности. В этом году киберпреступники продолжили развивать «традиционные» методы нелегального заработка и неустанно создавали банковские троянские программы, бесчисленные «блокировщики Windows», изощренные фишинговые схемы. Наиболее явно эти методы проявились именно в нашей стране: российские пользователиподвергались огромному количеству опасностей в социальных сетях и при работе в онлайн-банкинге. Этот год также запомнился многократным применением DDoS-атак. Наиболее громкие мировые инциденты были связаны с деятельностью групп Anonymous и LulzSec. В России же самыми нашумевшими стали атаки на LiveJournal.

Обслуговую багато віддалених Linux маршрутизаторів, а проблема одна й та сама — не дає працівникам спокою соціальна мережа! 🙂 Потрібно заблокувати з використанням iptables. Найшов просте рішення:

# deny rules
$IPTABLES -A FORWARD -m string --string "odnoklassniki.ru" --algo kmp --to 65535 -j DROP
$IPTABLES -A FORWARD -m string --string "facebook.com" --algo kmp --to 65535 -j DROP
$IPTABLES -A FORWARD -m string --string "vkontakte.ru" --algo kmp --to 65535 -j DROP
$IPTABLES -A FORWARD -m string --string "vk.com" --algo kmp --to 65535 -j DROP

На своєму домашньому нетбуці я встановив останню версію Ubuntu 10.10. Чудово працює, усі пристрої розпізнав «з коробки». Також завівся і мій iPhone 3Gs, але не в режимі модема… А тут знадобилося вийти в інтернет через Utel.

Як змусити запрацювати модем? Необхідно встановити iPhone USB Ethernet Driver. У глобальній мережі Ви знайдете ось ці 3 пакунки:
dkms_2.1.1.2-3ubuntu1_all.deb
ipheth-dkms_1.0-1ubuntu1.1_all.deb
ipheth-utils_1.0-1ubuntu1.1_i386.deb

Після чого на iPhone для Utel прописуємо точку входу 3g.utel.ua і вмикаємо режим модему:

Інтернет запрацював на нетбуці, швидкість відмінна:

UPD: для мого тарифу Укртелеком заявляє швидкість 1024/256 і тішить, що саме так і є: