Есть ли SIP за NAT-ом? Или как заставить работать Microsoft Communicator 2007 в домашней сети.

Microsoft Communicator 2007 R2NAT –  преобразование сетевых адресов – вещь очень даже неплохая. Один интернет-адрес (если по простому – входящий от провайдера кабель) можно “размножить” на несколько компьютеров, получая внутреннюю сеть, которая легко может пользоваться благами интернета. Каждая машинка в сети получает свой внутренний адрес, а NAT-устройство обеспечивает прозрачное преобразование TCP-запросов в сеть и из нее, подменяя необходимую техническую информацию прямо на лету. Но не все так просто для VoIP телефонии, которая работает по протоколу SIP.

C SIP все сложнее. Если остальные сетевые протоколы (например HTTP, FTP) не интересуются адресами отправителя-получателя, то SIP – внутри своей текстовой информации вписывает текущий адрес.

Представьте, что хотите отправить письмо обычной (не электронной) почтой. Вы его запечатываете в конверт и несете на почту. Конверт – это техническая информация, а NAT – это почтовый работник, которые ставит штемпели на конверт и отправляет его куда нужно. А вот SIP пишет свой адрес внутри конверта, поэтому конверт нужно вскрыть и, если нужно, исправить, чего NAT не умеет.

И получается, что два телефона SIP, которые расположены за устройствами преобразования адресов, не могут связаться между собой без дополнительных ухищрений. Но как же работают IP телефоны да и тот же Skype?

Для решения проблемы преобразования адресов создаются специальные серверы SIP-proxy, которые работают аналогично NAT – преобразователям, только для протокола SIP. Так, если вы запустили Skype, то он каждые N миллисекунд лезет на свой сервер и считывает информацию, получает данные, через какой адрес он сейчас работает и какие адреса можно использовать для прогона SIP пакетов. Поэтому Skypе не требует открытых портов, внешних адресов и т.п. Он сам ищет дырки в вашей “защищенной” сети, и через них гоняет свою информацию. Есть еще технология STUN, которая делает нечто подобное, подробности в Wiki

Теперь перейдем к Microsoft Office Communicator. Во внутренней сети видео-аудио конференции будут работать без дополнительных усилий, поскольку технология peer-to-peer позволяет качать информацию между компьютерами одной сети. Если компьютеры пингуются (ping), то коммуникатор будет легко соединять их в аудио-видео конференцию.

Но если мы хотим подключить внешних пользователей, например, работающих дома, необходимо установить EDGE сервер. И на нем расположить минимум два (!) внешних IP адреса и один внутренний. Один адрес для информации и отдельно для голоса. На семинаре Microsoft рекомендовали вообще сделать три адреса – дополнительный еще для Web-конференций.

При этом, если пытаться использовать всего один адрес, то соединения не происходит и  возникает ошибка “Звонок не выполнен или уже закончен” При звонке Коммуникаторы сначала пытаются установить подключение между собой, т.е. точка-точка (peer to peer). Если это не удается, то задействует сервер Edge. Внутри него стоит свой сервер STUN, который и осуществляет необходимые преобразования SIP трафика.

Так что с уверенностью можно сказать, что Microsoft Communicator работает за NAT, но с обязательным коннектом к EDGE серверу.

Единственное, что нужно помнить – это нагрузка на сам сервер. Если при соединении точка-точка, нагрузка распределяется между компьютерами и трафик идет напрямую, то при соединении через EDGE, сервер прокачивает через через себя всю аудио-видео информацию, что предполагает довольно высокие требования к аппаратному обеспечению. С учетом того, что сервер рассчитан на работу с несколькими тысячами пользователей.

Вот выдержка из документации:

Hardware component Minimum requirement
CPU Dual processor, quad-core 2.0 GHz+4-way processor, dual-core 2.0 GHz+
Memory 8 GB
Disk 2x 72 GB, 15K or 10K RPM, RAID 0 (striped) or equivalent
Network 2-port 1 Gbps network adapter (recommended)
  1. nat_vv

    Сергей! ЛВС организована так, что подсети не видят друг друга, а видят только сервера.
    Видеозвонки(MSCommunicator) проходят в пределах одной подсети.
    При видеозвонке в другую подсеть, сообщение типа не могу звук. Мгновенные сообщения проходят. Как же так? Ведь обе сети видят Communication Server 2007? Это что надо настраивать EDGE-сервер? Жду ответа. Спасибо!

  2. Приветсвую!
    Если коммуникаторы не могут связаться точка-точка, т.е. как я уже писал, не пингуются компьютеры, то остается единственное – нестраивать EDGE сервер. Или устанавливать маршрутизацию, чтобы компьютеры разных подсетей могли пинговать друг друга. Рекомендую посмотреть трафик от коммуникаторов при помощи Microsoft Network Monitor 3.3 (бесплатная софтина, можно скачать с сайта Microsoft)

  3. Марат

    Добрый день Сергей. У меня такой вопрос.. есть сервер Communicator с белым адресом, в другом городе стоит маршрутизатор с NAT, за ним пользователь с серыми адресами. Пользователь пингует сервер, но соединение коммуникатора к серверу не происходит (не логинится) С Чем это может быть связано? На маршрутизаторе всё прозрачно, закрытых портов нет. Ошибка сервер не доступен, попробуйте использовать TLS и т.д.