- Подписка на печатную версию:
- Подписка на электронную версию:
- Подшивки старых номеров журнала (печатные версии)
LXF102:Интернет-телефоны
Материал из Linuxformat.
Содержание |
Выбираем VoIP-клиент
- Яркая реклама операторов мобильной и стационарной связи спешит сообщить, что «цены стали еще ниже» – но Андрей Боровский не спешит снимать наушники и отключать микрофон от своего ПК с Linux. А зачем?
Все протоколы IP-телефонии разделяют некоторые общие принципы. Центральный сервер выполняет, прежде всего, функции коммутатора. Когда пользователь IP-телефонии подключается к сети, он регистрируется на таком сервере-коммутаторе. При этом указывается текущий IP-адрес пользователя и другие данные, необходимые для установления связи с ним. Если пользователь VoIP-сети хочет установить соединение с другим пользователем, его клиентская программа обращается к базе данных сервера и выясняет, находится ли запрашиваемый абонент на линии. Далее сервер инициализирует соединение между двумя абонентами. В процессе соединения сервер выполняет некоторые контролирующие функции, сама же передача данных между абонентами выполняется напрямую. Помимо коммутации соединений, серверы-коммутаторы выполняют ряд других функций: например, рассылают заинтересованным абонентам сообщения о присутствии абонента на линии.
Поскольку соединение между двумя IP-телефонами включает две разные фазы – коммутацию и передачу данных, протоколы, используемые в IP-телефонии, делятся на две категории: коммутирующие протоколы и протоколы передачи данных.
Приведенная здесь схема установки соединения несколько упрощена. Во-первых, не всегда удобно требовать от всех абонентов, желающих общаться друг с другом, регистрироваться на одном и том же сервере. Например, открытый VoIP-протокол SIP позволяет устанавливать соединения между пользователями, зарегистрированными на разных серверах. Во-вторых, IP-адрес, как правило, не может однозначно идентифицировать компьютер абонента. Поскольку сегодня практически все пользователи Интернета скрываются за каким-нибудь брандмауэром (собственным или провайдерским) и используют трансляцию адресов (NAT), для клиентов IP-телефонии важна способность работать из-за межсетевого экрана. Существуют, конечно, маршрутизаторы со встроенной поддержкой VoIP, но авторам протоколов и клиентских программ не приходится рассчитывать на наличие такого оборудования у пользователя. Можно также разместить клиент IP-телефонии в демилитаризованной зоне брандмауэра, но поставщикам услуг и на это рассчитывать не следует.
Одним из способов решения проблемы автоматической настройки клиента, работающего в сети, использующей NAT, является протокол STUN (Simple Traversal of UDP through NATs). Обычно клиент IP-телефонии является одновременно и клиентом протокола STUN. При подключении к серверу SIP (который по совместительству является сервером STUN) телефонный клиент посылает серверу специальный запрос. Поскольку сервер находится по другую сторону экрана NAT, он «видит», как NAT преобразует адрес и порт клиента. Эту информацию сервер отправляет клиенту, который настраивается на работу в сети с учетом полученных данных.
Технологии компьютерной связи развиваются диалектически. Не так давно обычные телефонные каналы использовали полосу пропускания частот человеческого голоса для предоставления доступа в Интернет, теперь же высокоскоростные интернет-каналы заменяют собой телефонные линии. Если в 90-х годах пропускная способность телефонных линий ограничивала список сервисов, доступных рядовым пользователям Сети, то сейчас сервисы широкополосного Интернета побуждают людей отказываться от традиционных телефонов. IP-телефония преобразила до неузнаваемости рынок услуг международной телефонной связи и начинает менять рынок услуг связи локальной. В недалеком будущем поставщики услуг традиционной телефонии (как стационарной, так и мобильной) будут предоставлять только среду для передачи сигнала, а сами сервисы обмена информацией целиком уйдут в Интернет. Все это приведет к стиранию грани (прежде всего, ценовой) между локальными и международными телефонными коммуникациями.
Но возможности IP-телефонии не ограничиваются передачей голоса и видео на большие расстояния по невысокой цене. IP-телефон может использоваться для передачи практически любого контента. Фактически, IP-телефония сочетает в себе демократизм пиринговых сетей и возможность адресной доставки. Компьютер с IP-телефоном можно превратить в электронное СМИ, почти такое же, как и web-сервер. Думаю, вы уже поняли, что я хочу сказать: если вы еще не завели себе IP-телефон, сделайте это прямо сейчас (тем более, что это не трудно).
Приятно отметить, что в сфере IP-телефонии пользователи Linux не ущемлены по сравнению с пользователями других систем. Все службы, которыми могут пользоваться приверженцы Windows и Mac OS, доступны и в Linux. Хотите подключаться к проприетарным системам, таким как Skype или Windows Live? Это просто. Вам требуется высокий уровень безопасности? Нет проблем. О подключении к сетям, построенным на основе открытых протоколов, я уж и не говорю.
Подключение к сети IP-телефонии состоит из двух этапов – выбора поставщика услуг и выбора клиентской программы. И хотя ничто не мешает вам пользоваться услугами сразу нескольких провайдеров (и клиентских программ), на практике это не всегда удобно. При выборе поставщика телефонных услуг следует учитывать две вещи: предоставляемые дополнительные сервисы и поддерживаемые протоколы.
Что вам, как продвинутому пользователю, нужно знать о VoIP-протоколах? При выборе поставщика услуг IP-телефонии следует, прежде всего, учитывать используемый поставщиком коммутирующий протокол (подробнее о протоколах см. врезку). На сегодняшний день, одним из самых популярных коммутирующих протоколов является Session Initiation Protocol, или SIP. Помимо SIP, широкое распространение получил протокол под названием H.323. Хотя H.323, как и SIP, может использоваться глобально, он чаще применяется в локальных сетях; кроме того, разработчики открытого ПО оказывают большую поддержку именно SIP (хотя и H.323 вниманием не обходят). Такие службы, как Skype, используют собственные закрытые протоколы. На сегодняшний день сопряжение между разными протоколами отсутствует. Это значит, например, что с IP-телефона, настроенного на работу с SIP, нельзя позвонить на Skype-телефон (точнее говоря, нельзя позвонить напрямую: если оба IP-телефона имеют выход на обычные телефонные линии, можно осуществить звонок с помощью традиционных телефонных сетей, но это, мягко говоря, неудобно).
Чтобы подключиться к одной из сетей IP-телефонии, вам нужно создать учетную запись на сервере, поддерживающем соответствующий протокол. Тут между системами Skype и SIP существует одно важное отличие. Подключение к Skype выполняется одним-единственным регистратором, тогда как серверов SIP существует много (например,http://freeworlddialup.com, http://iptel.org, http://ekiga.org, http://sipphone.com, http://wengophone.com). Зарегистрировавшись на одном из серверов SIP, вы получите «телефонный номер» вида your_name@service.com и сможете звонить абоненту, зарегистрированному на любом другом публичном сервере SIP. Повторюсь: регистрация на сервере SIP, позволяющая звонить другим абонентам, бесплатна.
Из всего сказанного можно сделать вывод, что между разными серверами SIP нет никакого различия (кроме разве что стабильности работы). На самом деле это не так. Кроме соединения «компьютер–компьютер», поставщики IP-телефонии предоставляют ряд дополнительных услуг, самая важная из которых – возможность звонить на обычные телефоны (помимо этого, провайдеры предоставляют такие возможности, как отправка SMS, регистрация для вашей учетной записи «настоящего» телефонного номера, позволяющего принимать входящие звонки с обычных телефонов, и т.д.). Если вы планируете звонить со своего компьютера на настоящие телефоны, вам нужно выбрать сервис, предоставляющий такую услугу (например, http://sipphone.com или http://Ekiga.org). В то время как звонки «компьютер–компьютер» во всех службах SIP бесплатны (мне, по крайней мере, не удалось найти такую, где за звонок с IP на IP берут деньги), за звонки на обычные телефоны необходимо платить.
Как уже отмечалось, весьма популярная телефонная сеть Skype стоит среди других сетей особняком. На вопрос о том, что выбрать, SIP или Skype, я бы ответил – и то, и другое. Спектр дополнительных коммерческих услуг, предоставляемых провайдерами SIP и Skype, в общем один и тот же, а фактическая стоимость этих услуг для вас зависит от многих обстоятельств.
После создания учетной записи на сервере IP-телефонии вам следует выбрать программу-клиент. Если вы пользуетесь Skype, выбирать особо не из чего – компания предоставляет единственную программу. В случае SIP дело обстоит иначе. Хотя многие сервисы SIP предлагают вам свой собственный клиент IP-телефонии, вы не обязаны использовать эту программу (вы даже можете использовать программу, предоставляемую одним провайдером SIP, для работы с другими провайдерами). Таким образом, при работе в сетях SIP вы получаете две степени свободы выбора – выбор поставщика услуг и выбор ПО. Далее мы рассмотрим несколько популярных Linux-клиентов IP-телефонии.
Помимо того, что все рассмотренные ниже программы бесплатны, у них есть и другие общие черты. Все представленные в данном обзоре VoIP-клиенты умеют работать в сети, защищенной брандмауэром. Все программы поддерживают создание нескольких учетных записей SIP.
Linphone
- Сайт: http://www.linphone.org
- Условия распространения: GPL
- Протоколы: SIP
- Чат: Да
- Видеоконференции: Да
- Мгновенные сообщения: Да
- Голосовая почта: Да
- Передача файлов: Нет
Думаю, вы согласитесь со мной в том, что при выборе между несколькими незнакомыми программами их названия играют немалую роль. Приложение под названием Linphone так и просится, чтобы его инсталлировали на компьютер с Linux (впрочем, оно доступно и для Windows). Для установки программы потребуется сначала собрать [или добавить через менеджер пакетов, – прим. ред.] библиотеки libsip, libexosip. Поддержка видео возможна только при наличии библиотеки libffmpeg, которую нужно выгружать из репозитория SVN. Для правильной сборки Linphone мне пришлось создать Make-файл командой
configure --disable-strict
Все это может стать непреодолимым препятствием для «среднестатистического пользователя», если таковой когда-нибудь перейдет на Linux. Если авторы программ для Linux хотят привлечь обычных людей, им следует избавляться от дурных манер.
Одна из неприятных особенностей Linphone заключается в том, что введенные пользователем настройки сохраняются на диске в момент выхода из программы (а не сразу после ввода). Поэтому, если программа в какой-то момент «упадет», что иногда с ней случается, тщательно подобранные параметры окажутся потерянными. Для успешной работы в сети, использующей NAT, программу требуется настраивать специально (как минимум, указать адрес шлюза).
Ekiga
- Сайт: http://www.ekiga.org
- Условия распространения: GPL
- Протоколы: SIP, H.323
- Чат: Да
- Видеоконференции: Да
- Мгновенные сообщения: Да
- Голосовая почта: Да
- Передача файлов: Нет
Этот проект, известный прежде как Gnomemeeting, представляет собой один из наиболее тщательно проработанных открытых коммуникаторов IP-телефонии. По качеству исполнения Ekiga приближается к таким программам, как Gizmo и Skype. Приложение поддерживает отправку SMS и голосовую почту. Помимо самого программного продукта, вам предоставляется доступ к SIP-прокси http://Ekiga.com (ничто не мешает, конечно, воспользоваться услугами любого другого прокси). SIP-сервис http://Ekiga.com позволяет звонить на обычные телефоны (за плату, разумеется), что лишний раз доказывает, что клиент коммерческой IP-телефонии не обязательно должен быть закрытым приложением, использующим проприетарный протокол. Фактически, в случае проекта Ekiga мечта Ричарда Столлмена (программы распространяем свободно, деньги зарабатываются на сопутствующих услугах) становится явью.
Если запустить программу из окна консоли, а потом завершить с помощью Ctrl-C, в терминале появится надпись «Убито» (честно говоря, я впервые такое вижу). Ekiga поддерживает видеоконференции и мгновенные сообщения, а вот средства передачи файлов отсутствуют. Благодаря инструментам Zeroconf, Ekiga сама определяет параметры сети, в которой работает (например, наличие брандмауэра, NAT и адрес шлюза), так что с их настройкой возиться не приходится. Интерфейс программы выполнен очень грамотно. Многочисленные настройки позволяют, при необходимости, контролировать практически все аспекты работы Ekiga, но значения, выставляемые программой по умолчанию, являются в большинстве случаев оптимальными, так что обращаться к окну настроек не требуется.
Gizmo
- Сайт: http://www.gizmoproject.com
- Условия распространения: Бесплатно по закрытой лицензии
- Протоколы: SIP, XMPP
- Чат: Да
- Видеоконференции: Нет
- Мгновенные сообщения: Да
- Голосовая почта: Да
- Передача файлов: Да
Помимо качественно сделанного коммуникатора, проект Gizmo интересен моделью ведения бизнеса. Gizmo – дитя коммерческого предприятия SIPphone, но клиент Gizmo использует открытые протоколы. Зарабатывает SIPphone с помощью собственного SIP-сервиса, предоставляя платные услуги сопряжения с обычными телефонными сетями. При этом SIPphone предоставляет более широкий спектр услуг, чем Skype. Например, очень удобна услуга Gizmo Call, позволяющая получить временный локальный телефонный номер для разговора в любой стране мира. Помимо прочего, клиент Gizmo обладает средствами отправки SMS, связанными с сервисом, предлагаемым службой SIPphone. Таким образом, в случае Gizmo мы имеем полукоммерческий сервис, как и у Skype, и программный продукт, который, в отличие от Skype, может использоваться независимо от этого сервиса.
Процедура установки Gizmo не требует больших умственных усилий (особенно если для подключения вы используете учетную запись Gizmo). Передача файлов работает только при использовании Jabber (XMPP). В отличие от многих других Linux-клиентов VoIP, Gizmo содержит встроенные средства записи разговоров и умеет кодировать данные по протоколу SRTP, при условии, что шифрование поддерживается обеими сторонами.
Любопытная функция Gizmo – возможность географической локализации звонящего абонента (по его IP-адресу). Многоязычная карта Google (географические названия каждой страны выводятся на соответствующем языке), открывающаяся в отдельном окне браузера, позволяет переключаться между схематическим изображением и видом со спутника и поддерживает мощное увеличение (поскольку местоположение абонента определяется, в лучшем случае, с точностью до города, увеличение не имеет особого смысла). Еще одна приятная мелочь – из всех рассмотренных программ Gizmo наиболее полно русифицирована.
WengoPhone
- Сайт: http://www.wengophone.com
- Условия распространения: GPL
- Протоколы: SIP
- Чат: Да
- Видеоконференции: Да
- Мгновенные сообщения: Да
- Голосовая почта: Да
- Передача файлов: Да
Еще один проект, который сочетает открытую программу-коммуникатор и довольно развитую службу SIP с такими коммерческими сервисами, как звонки и отправка SMS на обычные телефоны. Кроме того, на сайте WengoPhone предоставляется много других коммерческих услуг в соответствии с моделью Web 2.0. Поскольку проект открытый, я решил собрать его из исходных текстов (речь идет о версии 2.1.2), и чуть было не разочаровался. Странности начались с самого первого шага: в архиве не оказалось привычных нам скриптов конфигурации! Вместо этого предлагается использовать скрипт установки, который подключается к сети (это при наличии дистрибутива на локальном диске!). После сборки и установки программа не смогла правильно сконфигурировать звуковую систему (все остальные участники теста справились с этим самостоятельно и без затруднений), а ручные манипуляции с настройками так ничего и не дали. По умолчанию коммуникатор устанавливается в глобальный каталог /opt/wengophone; при этом, будучи запущенной из-под обычного пользователя, программа часто аварийно завершается из-за отсутствия прав доступа к каким-то компонентам. После запуска из-под root программа не завершалась сама собой, но и работать как следует не хотела.
Все эти проблемы исчезли после того, как я установил ту же версию WengoPhone из двоичного дистрибутива. Программа корректно настроилась на работу со звуком (используя при этом файлы конфигурации, созданные предыдущим вариантом). Никаких других проблем в работе новой установки WengoPhone замечено не было. Единственный минус – программа не сумела распознать адрес абонента, зарегистрированного у другого провайдера (само соединение с абонентом было установлено успешно). Интересная особенность WengoPhone – интерфейс программирования расширений на языке Python.
TeamSpeak
- Сайт: http://www.goteamspeak.com
- Условия распространения: Бесплатно по закрытой лицензии
- Протоколы: Собственный, закрытый
- Чат:
- Видеоконференции: Нет
- Мгновенные сообщения: Нет
- Голосовая почта: Нет
- Передача файлов: Нет
Программа TeamSpeak представляет собой инструмент довольно узкого профиля с жесткими коммерческими требованиями. Программа бесплатна только для некоммерческого использования, а за коммерческое применение (для звонков с компьютера на компьютер) надо платить. Я бы не стал останавливаться на этой программе, если бы в процедуре установки под Linux мне не померещилось что-то знакомое. Дальнейшее исследование программы подтвердило мои подозрения – TeamSpeak для Linux написан на Kylix. Такой выбор средства разработки (для тех, кто не в курсе, поясним: Kylix, «Delphi для Linux», давно уже заброшен разработчиком и повсеместно вышел из употребления) объясняется, скорее всего, тем что TeamSpeak для Windows написан на Delphi. То, что разработчики умудрились развернуть Kylix-приложение на современных дистрибутивах Linux – уже достижение, в своем роде. В программе есть ряд функций, ориентированных на играющих онлайн, например, возможность быстро переключаться из режима общения с отдельным игроком в режим общения со всей группой. Всем, кто когда-то писал для Kylix, стоит посмотреть на экранный снимок и смахнуть ностальгическую слезу, а вот использовать TeamSpeak в повседневной жизни я не советую.
Skype
- Сайт: http://www.skype.com
- Условия распространения: Бесплатно по закрытой лицензии
- Протоколы: Собственный, закрытый
- Чат: Да
- Видеоконференции: Обещаются
- Мгновенные сообщения: Да
- Голосовая почта: Да
- Передача файлов: Да
Skype – яркий пример того, как можно оттирать конкурентов с помощью вовремя накопленной пользовательской базы. Помимо большого числа уже подключенных пользователей, у Skype нет серьезных преимуществ перед Gizmo и WengoPhone. Однако пользовательская база – действительно серьезный аргумент. Дело не только в том, что почти у каждого пользователя ПК, знакомого с IP-телефонией, есть адрес Skype. Популярность Skype проявляется в таких вещах, как большое количество сервисов оплаты и широкий ассортимент специализированных устройств (Skype-телефоны, Skype-шлюзы и т.д.).
Следует отметить, что клиент Skype для Linux отстает в плане функциональности от своего Windows-аналога. Например, поддержка видеоконференций, реализованная в Skype для Windows больше года назад, на момент написания этой статьи отсутствовала в Skype для Linux (хотя разработчики обещали добавить ее в ближайшем будущем).
Skype предоставляет в распоряжение программиста специальный API, позволяющий создавать программы-расширения (LXF99). Для платформы Windows таких расширений создано уже немало, в том числе и коммерческих.
Jabbin
- Сайт: http://www.jabbin.com
- Условия распространения: GPL
- Протоколы: Jingle, XMPP
- Чат: Да
- Видеоконференции: Нет
- Мгновенные сообщения: Да
- Голосовая почта: Нет
- Передача файлов: Да
Этот клиент поддерживает протоколы Jabber и может применяться только в сетях Jabber/Google Talk. Лучше всего он подойдет тем, кто «живет» в сетях Jabber. По моему личному мнению, устанавливать клиент IP-телефонии только ради поддержки не очень популярного протокола Jingle не имеет смысла, во всем же остальном Jabbin уступает клиенту Gizmo.
Заключение
Взаключение, рассмотрим одну программу, которая, не будучи сама клиентом IP-телефонии, может стать хорошим дополнением для многих из них. Большинство открытых клиентов IP-телефонии либо вообще не поддерживают шифрование данных, либо применяет не очень стойкий протокол низкого уровня SRTP. Разработчики Skype хвалятся своими алгоритмами шифрования, однако, поскольку протоколы Skype закрыты, мы можем только верить (или не верить) им на слово. Что ж делать тем пользователям, которые хотят обеспечить действительно высокий уровень конфиденциальности переговоров? На помощь приходит «отец общедоступной криптографии» [создатель PGP, – прим. ред.] Филипп Циммерман [Philipp Zimmermann]. Под руководством господина Циммермана ведется разработка нового протокола ZRTP, который должен значительно повысить уровень безопасности при передаче данных. Некоторые аспекты работы протокола ZRTP довольно любопытны. Например, для предотвращения атаки посредника абоненты в начале разговора получают специальные числа, которые они должны продиктовать друг другу для того, чтобы убедиться, что полученные ими значения совпадают. Протокол ZRTP не является стандартом IP-телефонии. Хотя Циммерман и его друзья прилагают серьезные усилия по стандартизации протокола, на сегодняшний день ZRTP поддерживается только программным обеспечением, написанным ими самими. Комплекс программ, предназначенных для защиты телефонных переговоров с помощью протокола ZRTP, состоит из пакета Zfone и набора разработчика Zfone SDK. Пакет Zfone представляет собой адаптер, который шифрует на лету данные, передаваемые клиентом IP-телефонии. Поддерживаются протоколы SIP, H.323, Jingle и другие (со Skype Zfone работать не будет). Zfone SDK позволяет встраивать поддержку ZRTP непосредственно в клиентские программы IP-телефонии.
Подводя итоги, я скажу то, что вы и сами, наверное, хорошо знаете. Ваш рабочий стол Linux готов к тому, чтобы превратиться в центр телефонной связи со всем остальным Миром. Осталось только установить выбранную вами программу. LXF