Авг 13 2008
HowTo: Как не стать Supernode в Skype
Skype, пожалуй, самая популярная в мире система IP-телефонии (голосовой связи через Интернет) с возможностью выхода на городские и сотовые телефоны, и работает она по принципу P2P-сетей, т.е. пользователи при необходимости “позвонить” устанавливают прямые соединения друг с другом для передачи голосового (а также видео) трафика.
Если пользователь сидит за NAT или прокси-сервером, то установить соединение к нему извне в общем случае невозможно. Такой пользователь может только сам устанавливать исходящие соединения, а принимать входящие не может. В случае если из двух звонящих только один не может принимать входящие соединения, то соединение инициирует тот, который как раз не может (к тому, который может). А если оба не могут, то тут проблема! И для решения этой проблемы Skype использует специальные узлы, которые могут принимать входящие соединения и выступают посредниками для передачи трафика между двумя пользователями. Такие узлы называются супер-узлами (supernodes) и как правило ими являются обычные пользователи, сетевые настройки и организация сети которых позволяют Skype принимать входящие соединения, а также скорость сетевого канала и мощность компьютера достаточно хороши. Программа Skype переходит в режим супер-узла автоматически, если видит такую возможность, никак не уведомляя при этом пользователя.
Для пользователей с прямым и быстрым выходом в интернет (без прокси-сервера и роутера с функцией NAT) это чревато тем, что Skype будет использовать мощность процессора и память на благо других пользователей Skype, но самое главное — это сетевой трафик. В России все еще в большинстве регионов оплата за Интернет идет помегабайтно, в таком случае Вы можете реально попасть на деньги. Для тех же, кто использует безлимитные тарифы провайдера трафик не так страшен, но вряд ли кому-то будет приятно потерять часть от и без того ограниченной скорости. Нигде точно не сказано какой минимально должна быть скорость соединения, чтобы ее было достаточно для того, чтобы стать супер-узлом. Везде говорится про быстрый канал. Скажем, 1 мегабит это быстро или нет? Кому как…
С одной стороны, супер-узлы нужны, т.к. без них пользователи с симметричными NAT’ами и прокси-серверами не смогли бы связываться, а возможности разместить собственные сервера по всему миру в нужном кол-ве у Skype видимо нет возможности. Но с другой стороны, Skype не спрашивает согласия своих пользователей и не уведомляет их о том, что их компьютер используется как супер-узел. Вместо этого они должны были бы больше уделять внимания правильной настройке того же NAT. В большинстве роутеров с функцией NAT есть возможность реализовать порт-форвардинг (port-forwarding) или, как это еще называется, Virtual Servers, где говорится, что все входящие соединения на такой-то порт роутера пересылать на такой-то порт такого-то компьютера в локальной сети, на котором как раз-таки работает Skype. Порт для входящих соединений Skype выбирает случайным образом сам при установке, его можно увидеть и поменять в настройках (Дополнительно/Соединение). Порт-форвардинг этого порта нужно сделать для протоколов TCP и UDP. При такой настройке пользователи Skype могут связываться напрямую, даже будучи за NAT’ом. Для того, чтобы несколько компьютеров, находящихся за NAT, в одной локальной сети могли принимать входящие соединения для Skype, необходимо назначить различные порты для каждого компьютера и в настройках NAT задать соответствие между портами и локальными адресами компьютеров.
Однако, такой шаг позволит Skype стать супер-узлом будучи за NAT и получается, что вроде как благое намерение разгрузить сеть Skype может привести к тому, что сеть Skype начнет пользоваться Вами в своих интересах. К счастью, начиная с версии 3.0 в Skype появилась возможность запретить использование своего компьютера как супер-узла. Однако, в настройках программы нет такой опции, для ее активации нужно лезть в реестр Windows при помощи программы regedit, создать ветку HKLM\SOFTWARE\Policies\Skype\Phone и в нее добавить параметр DisableSupernode с типом DWORD и значением 1. Либо воспользоваться готовым NoSuperNode.reg файлом, запуск которого выполнит эти действия за Вас. На всякий случай его исходный код:
Windows Registry Editor Version 5.00 [HKEY_LOCAL_MACHINESOFTWAREPoliciesSkype] [HKEY_LOCAL_MACHINESOFTWAREPoliciesSkypePhone] "DisableSupernode"=dword:00000001
(для вступления изменений в силу требуется перезагрузка)
Я призываю всех, кто устанавливает этот Reg-файл одновременно с этим настроить свой файрволл на пропускание через него входящих соединений до вашего компьютера в локальной сети (то, что я говорил выше про порт-форвардинг). Это будет честно по отношению к другим пользователям, которые стали супер-узлами по незнанию, разгрузит Skype-сеть и в то же время должно повысить ваше качество связи. Зачем Вам для связи дополнительные посредники, которые могут работать нестабильно?
Супер-узлами (если по честному) должны пользоваться только пользователи прокси-серверов, у которых нет возможности работы в обход прокси и, как следствие, нет физической возможности принимать входящие соединения, но они должны пользоваться Skype с чувством глубокого осознания того, что они пользуются Skype за чужой счет и не злоупотреблять данной возможностью. Те, у кого есть возможность принимать входящие соединения, должны использовать данную возможность.

Август 13th, 2008 at 13:57
Павел, респегд.
как всегда познавательно и доходчиво -)
Сентябрь 12th, 2008 at 12:06
Рецепт хороший, но для windows, а есть ведь и другие операционные системы. Приду домой - поищу нужный конфиг в Linux-версии Skype
Сентябрь 12th, 2008 at 13:59
Есть мнение, что Super-нодами могут быть только пользователи Windows. Но достоверных подтверждений этого мнения я пока не находил.
Октябрь 9th, 2008 at 15:32
Есть вопрос к автору статьи. Имееем две локальные машины, одна из них подключена к интернету, как сделать так, что бы на второй не подключенной к интернету машине работал skype?
Октябрь 9th, 2008 at 15:47
Есть только один способ сделать это — подключить вторую машину к интернету. Подключить два компьютера к Интернет через одно соединение можно либо через роутер (если у вас ADSL-модем, то скорее всего он у вас уже есть), либо на первом компьютере в настройках соединения “разрешить другим пользователям сети использовать подключение к Интернет данного компьютера”, а на втором компьютере подключиться к интернет, используя первый как шлюз. При этом оба компьютера должны быть в одной локальной сети.
Первый способ лучше, т.к. на роутере почти всегда можно настроить IP Forwarding (про который я писал в статье). При втором же способе Skype будет ограничен и не сможет принимать входящие соединения и будет использовать других пользоватей как Supernode.
Обсуждение данного вопроса немного не в формате данного места, я дал достаточно начальной информации, подробности ищите на специализированных форумах.
Декабрь 22nd, 2008 at 16:49
Первый способ лучше, т.к. на роутере почти всегда можно настроить IP Forwarding (про который я писал в статье). При втором же способе Skype будет ограничен и не сможет принимать входящие соединения и будет использовать других пользоватей как Supernode.
пробросить порты можно и в винде. так что рутер не обязателен.
Декабрь 22nd, 2008 at 18:28
Кстати да, можно и в винде. Забыл про то, что и там есть такая возможность.
Июль 9th, 2009 at 13:26
Чуть подробнее о настройке форвардинга, цитата из Skype FAQ -
Как минимум для работы Skype нужны неограниченные исходящие подключения на все порты больше 1024 или порты 80 и 443 (первый вариант предпочтительней). Если вы не сделаете одно из этих действий Skype вообще может не заработать. Качество связи и другие аспекты работы Skype можно значительно улучшить если вы откроете также исходящие UDP соединения для портов больше 1024 и позволите UDP запросам возвращаться.
К вопросу о лучшем качестве голоса также можно добавить об открытии входящего TCP и/или UDP трафика на отдельный порт, который вы можете увидеть в настройках Skype. Этот порт выбирается случайным образом при установке программы Skype. В случае файерволла его можно легко настроить. В некоторых роутерах, вы не можете сконфигурировать входящие UDP для всех (но вы все таки можете настроить переадресацию входящих TCP портов, что и надо сделать).
Июль 27th, 2009 at 23:19
Прочитал. Даже не знаю радоваться такой уникальной возможности стать супер-узлом или нет… У меня скайп на двое суток напрочь забил канал интернета и я мучился выискивая причину и виновных… Вообще подобную фишку я расцениваю как баг - т.е. недоделку в программе. Программа без моего ведома и без какого либо уведомления занимает мой канал, чихая на мои личные интересы. Практически прямо какой-то вирус
Спасибо автору - теперь я знаю как с этим бороться. Автору большое спасибо. ЯА вот разработчикам желательно как-то этот момент изменить надо бы…
Октябрь 15th, 2009 at 12:56
Класс)мне понра)особенно!
Январь 28th, 2010 at 00:15
А в Висте также настраивать нужно?
Февраль 24th, 2010 at 23:57
я еще чайник и не врубаюсь как создать ветку HKLM\SOFTWARE\Policies\Skype\Phone и в нее добавить параметр DisableSupernode с типом DWORD и значением 1. реестр открыть могу а дальше вот не очень понятно ,подскажите кому не трудно!
Сентябрь 6th, 2010 at 14:26
Для общения голосом в локальной сети (да и в интернете) можно пользоваться Mumble! Имхо, это гораздо разумнее и приятнее.
Ноябрь 12th, 2010 at 07:54
А для Mac OS X есть настройки?
Декабрь 22nd, 2011 at 18:40
Все вышеописанное справедливо при условии, что у Вас внешний IP.
Май 15th, 2012 at 00:23
fzsddd viagra
Май 17th, 2012 at 00:11
zyovpzio buy viagra