Авг 13 2008

HowTo: Как не стать Supernode в Skype

Категория: Lifehack, Безопасностьgugglegum @ 13:14

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 за чужой счет и не злоупотреблять данной возможностью. Те, у кого есть возможность принимать входящие соединения, должны использовать данную возможность.

15 отзывов на “HowTo: Как не стать Supernode в Skype”

  1. maxd says:

    Павел, респегд.
    как всегда познавательно и доходчиво -)

  2. bolzamo says:

    Рецепт хороший, но для windows, а есть ведь и другие операционные системы. Приду домой - поищу нужный конфиг в Linux-версии Skype

  3. gugglegum says:

    Есть мнение, что Super-нодами могут быть только пользователи Windows. Но достоверных подтверждений этого мнения я пока не находил.

  4. Shurio says:

    Есть вопрос к автору статьи. Имееем две локальные машины, одна из них подключена к интернету, как сделать так, что бы на второй не подключенной к интернету машине работал skype?

  5. gugglegum says:

    Есть только один способ сделать это — подключить вторую машину к интернету. Подключить два компьютера к Интернет через одно соединение можно либо через роутер (если у вас ADSL-модем, то скорее всего он у вас уже есть), либо на первом компьютере в настройках соединения “разрешить другим пользователям сети использовать подключение к Интернет данного компьютера”, а на втором компьютере подключиться к интернет, используя первый как шлюз. При этом оба компьютера должны быть в одной локальной сети.

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

    Обсуждение данного вопроса немного не в формате данного места, я дал достаточно начальной информации, подробности ищите на специализированных форумах.

  6. guardx says:

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

    пробросить порты можно и в винде. так что рутер не обязателен.

  7. gugglegum says:

    Кстати да, можно и в винде. Забыл про то, что и там есть такая возможность.

  8. BadBoy says:

    Чуть подробнее о настройке форвардинга, цитата из Skype FAQ -
    Как минимум для работы Skype нужны неограниченные исходящие подключения на все порты больше 1024 или порты 80 и 443 (первый вариант предпочтительней). Если вы не сделаете одно из этих действий Skype вообще может не заработать. Качество связи и другие аспекты работы Skype можно значительно улучшить если вы откроете также исходящие UDP соединения для портов больше 1024 и позволите UDP запросам возвращаться.

    К вопросу о лучшем качестве голоса также можно добавить об открытии входящего TCP и/или UDP трафика на отдельный порт, который вы можете увидеть в настройках Skype. Этот порт выбирается случайным образом при установке программы Skype. В случае файерволла его можно легко настроить. В некоторых роутерах, вы не можете сконфигурировать входящие UDP для всех (но вы все таки можете настроить переадресацию входящих TCP портов, что и надо сделать).

  9. N6260 says:

    Прочитал. Даже не знаю радоваться такой уникальной возможности стать супер-узлом или нет… У меня скайп на двое суток напрочь забил канал интернета и я мучился выискивая причину и виновных… Вообще подобную фишку я расцениваю как баг - т.е. недоделку в программе. Программа без моего ведома и без какого либо уведомления занимает мой канал, чихая на мои личные интересы. Практически прямо какой-то вирус :) Спасибо автору - теперь я знаю как с этим бороться. Автору большое спасибо. ЯА вот разработчикам желательно как-то этот момент изменить надо бы…

  10. Vit says:

    А в Висте также настраивать нужно?

  11. martbor says:

    я еще чайник и не врубаюсь как создать ветку HKLM\SOFTWARE\Policies\Skype\Phone и в нее добавить параметр DisableSupernode с типом DWORD и значением 1. реестр открыть могу а дальше вот не очень понятно ,подскажите кому не трудно!

  12. Bb says:

    Для общения голосом в локальной сети (да и в интернете) можно пользоваться Mumble! Имхо, это гораздо разумнее и приятнее.

  13. Роман says:

    А для Mac OS X есть настройки?

  14. Oleg says:

    Все вышеописанное справедливо при условии, что у Вас внешний IP.

  15. Павел says:

    “Все вышеописанное справедливо при условии, что у Вас внешний IP.”

    Даже если IP не внешний, у некоторых провайдеров можно выпросить пробрасывать на Вас входящие соединения по определенным портам.

Напишите что Вы об этом думаете


*


*


rel=nofollow включен, спам не поднимет Page Rank Вашего сайта



Anti-Spam Image
Введите этот код, чтобы подтвердить, что вы человек
*

* — Обязательно для заполнения

Перейти на главную страницу