Как подружить Skype и прокси

  • Tutorial


Всем добра, хабровчане! В статье расскажу как победить этот долбаный Skype и заставить его работать с Squid, но применимо к любому http(s) прокси. Будем использовать последний скайп. На данный момент это 7.40 и конечно, с упором на то, что очередной апдейт ничего не сломает, а если и сломает то надо будет чуток докрутить, а не откатывать версию. Сразу скажу, по сути описанный метод — это хак, т.к. актуальный скайп со сквидом работать не умеет, ну или мне не удалось победить, да и в интернете я не нашел решения, которое бы для меня взлетело. В общем, обо всём по-порядку и .

tl;dr
Включить QoS через GPO на клиентах для процессов Skype.exe и SkypeBrowserHost.exe, сказать iptables`у чтобы пропускал отмаркированный ToS`ом трафик, сказать сквиду, чтобы пускал всех на apps.skypeassets.com и mscrl.microsoft.com

Итак, мой расклад: все клиенты на Win7x64, AD DS 2008R2, Skype 7.40 x32, squid 2.7, настройки прокси в IE прилетают через GPO. Для начала расскажу зачем мне этот проклятый скайп стал так нужен. Где-то с полгода-год назад скайп 6й версии приказал долго жить, обновление на 7ку не помогло, ну ок, пересадил юзеров в веб-версию. Да, она глючная, но просто текст там вполне работает, а голос/видео можно и на личном смартфоне при надобности. Не так давно назрела необходимость брать и записывать интервью по скайпу и юзеры меня достали. Пришлось дать ноут с вафлей и начать разбираться. Оказалось, что слету «оно», т.е. скайп (эвфемизм) нигде не работает, если есть прокси, да еще и NAT полный хочет. Естественно, такого не бывает, всё настраивается, тут же прикинул я и решил вновь поднять тему. Разворачиваю, в надежде (чем черт не шутит), последний 7.40, запускаю скайп и опять вижу эту чертову рожу с КДПВ. Достаточно продолжительная война со сквидом и гуглеж привел на интересный комментарий в котором автор предлагает использовать QoS. Идея однозначно хороша, вот только у меня не взлетела из коробки и пришлось допиливать. В итоге порядок действий ниже.

Включаем QoS для клиентов


Маркируем пакеты скайпа. Открываем Групповые политики и идем Конфигурация компьютераПолитикиКонфигурация WindowsQoS oна основе политики. Нужна пара правил для процессов Skype.exe и SkypeBrowserHost.exe. Думаю, из скрина ниже всё понятно.



DSCP 36 я взял, фактически, от фонаря, достаточно высокий, но не слишком, всё же у нас цель не в максимальной приоретизации трафика для скайпа, а его маркировка. Далее делаем gpupdate на клиенте или перезагружаемся. Проверить корректность настройки можно так:
gpresult.exe /H d:\gpresult.html

В полученном отчете ищите упоминание про QoS

Говорим iptables чтобы пускал отмаркированный трафик


В GP указывается DSCP, а iptables оперирует ToS`ом. Подробнее про QoS тут . Но в двух словах, эти значения отличаются ровно в 4 раза. Чтобы получить tos умножаем значение DSCP на 4 и получаем 144. Разрешающее правило для транзита трафика с tos 144 из своей подсети куда угодно будет выглядеть как-то так:
iptables -I FORWARD 2 -s localnet/24 -m tos --tos 144 -j ACCEPT

iptables запишет tos как 0х90, т.е. в hex формате. Выбирем жертву для теста и пытаемся зайти в скайп. На шлюзе можно глянуть, что там идет с клиента, например через tcpdump
tcpdump -i eth0 -v host 192.168.0.71

получим что-то типа
00:00:00.000001 IP (tos 0x90, ttl 128, id 13954, offset 0, flags [none], proto UDP (17), length 62)
192.168.0.71.20344 > 65.55.223.43.40012: UDP, length 34

tos 0x90 — то, что надо. Видно что с клиента пришел пакет с нужным флагом. Вот только скайп по прежнему не работает.

Позволяем ходить на пару сайтов всем


Фишка в том, что Skype смотрит в настройки IE. Отключить использование прокси в этом чудесном мессенджере невозможно (лучи добра тому, кто это придумал). А у нас настройки прокси из определения выше прилетают в IE через GPO. Короче, добавляем разрешающее правило для всех в сквид на сайты apps.skypeassets.com и mscrl.microsoft.com. В противном случае я ловил TCP_DENIED/407 и скайп не подключался. Ну где-то так:
#Options for Skype

acl for_skype dstdomain apps.skypeassets.com mscrl.microsoft.com
http_access allow for_skype

не забудьте reload сквида

Не вздумайте схитрить, обойтись изменением GPO настройки IE «Не использовать прокси сервер с адресов, начинающихся с:» для упомянутых адресов. Отвалится куча сервисов МС. и web skype в первую очередь.

Снова идем тестить на жертве и получаем то, что требовалось. Скайп подключился, работает, можно писать и звонить. Ура, блин :)

Кстати, вы можете заметить, что есть варианты поиграть с правилами сквида, чтобы кое как пропустить хотя бы подключение к скайпу, но это не наш метод, в ключевой момент не состоявшийся звонок для нас критичен.

Как развернуть Skype через WSUS. Постскриптум, до кучи


Не знаю чем думал МС, но скайп через WSUS не обновляется, можно только 1 раз установить с нуля или обновить версию из exe. При чем не то, чтобы штатно не обновляется, а даже через LUP/WPP версия в msi не прилетает. Да, я знаю, что у всех версий скайпа один Product ID, но в итоге несколько часов убил пытаясь колдовать с правилами. В итоге глянул на онлайн-каталог апдейтов и обнаружил только (WAT!?) бизнес-версию, понял, что это фича — сделать скайп в msi, но даже не раздавать его и убрать вообще возможность автоматического деплоя. Да, думаю можно было взять ORCA и наколдовать, но ну его, каждый раз что ли трансформации делать при обновлении версии… Вариант, что только у меня лыжи не едут, но короче, взял на www.skype.com/ru/get-skype классическую версию в exe и развернул через LUP. Подробности здесь.

За сим всё, надеюсь статья была полезной, жду ваших вопросов и дополнений.
Поделиться публикацией
Ой, у вас баннер убежал!

Ну. И что?
Реклама
Комментарии 30
    +2
    На самом деле этот гениальный мессенджер использует некую свою логику работы с прокси. И выбор «HTTPS/SOCKS» в параметрах вовсе не означает, что это будет работать.
    Вот эту ссылку можете выкинуть, ничего она не даёт.
    К тому же, похоже, для общего счастья там создаются не-ТСР сокеты:
    image

    Автор молодец, конечно, но я бы просто проблему решил посредством VPN. Меньше метаний.

    P.S. Не принимайте лично — но я бы несколько привёл язык изложения к литературному. Не то, чтобы я — ханжа, но некоторые обороты пришлось перечитывать несколько раз, прежде чем стал понятен смысл.
      0
      Вот эту ссылку можете выкинуть, ничего она не даёт.

      Я такую ссылку не давал.

      Чем вы смотрите активность по процессам?
      Автор молодец, конечно, но я бы просто проблему решил посредством VPN. Меньше метаний.

      Внутри LAN? у меня и 10G есть, зачем мне лишнее? только 802.1x осваиваю.

      P.S. Не принимайте лично — но я бы несколько привёл язык изложения к литературному. Не то, чтобы я — ханжа, но некоторые обороты пришлось перечитывать несколько раз, прежде чем стал понятен смысл.

      Я старался, часа 3 перечитывал и переписывал. Буду стараться, спасибо за критику.
        0
        1. Ссылка не к Вам, просто при поиске помощи в настройке прокси для Skype она появляется одной из первых. И якобы это официальный ответ Microsoft. Да только ответ нерабочий.
        2. Лог выдаст любой локальный прокси типа AdvOr. Но это — детский лепет на лужайке, если бы было время, я бы сделал исследование посерьёзнее, тем же Wireshark. К сожалению, не до того.
      0
      Кстати, работоспособность рецепта проверяли для 8-й версии? Вроде как пишут, что там хром с аддоном, должно быть полегче…
        0
        7.40 Последняя с офф сайта по ссылке в статье. 8 это «для десктоп», не проверял, но он встает рядом с классик версией.
        0
        По моему наличие адекватной поддержки прокси в продуктах постепенно становиться экзотикой (виноват IPv6?): у вас прокси стоит по «историческим» причинам или нечто другое?
          +1
          В первую очередь прокси стоит как инструмент защиты.
            0
            А можно пожалуйста более развернутый ответ? Защита кого и от чего?
              0
              Защита в том, чтобы не пускать напрямую через NAT всё, что попало, многие шифровальщики не начинают процесс пока не отправят ключ на сервер. Ну и не только шифровальщики, вообще мало ли какая информация может уйти. Да, прокси — не панацея, но лучше чем ничего.
          0
          Была подобная проблема, решили открытием ip адресов и днс имен на которые ходит скайп на сквиде. Причем открывать необходимо абсолютно для всех, в том числе для неавторизованных пользователей.
            0
            В том числе об это в статье сказано. Пару сайтов надо открыть.
            0

            С обновлением можно сильно проще:
            http://www.skype.com/go/getskype-msi
            Вот родной пакет. Он по wsus нормально ставится и обновляется.

              0
              Нет. Попробуйте его развернуть на любую версию, а потом, когда выйдет новая обновиться на неё
                +1

                Именно так и обновляем — 2 года полет нормальный.

                  0
                  Хм, а у меня не взлетело в msi. Уж не знаю тогда с чем связано.
              +5
              Дожили. А когда-то скайп был программой, которая в любую дырку пролезет, даже если эта дырка находится у соседа тремя этажами ниже.
                0
                Да, кстати. Когда деревья были зеленее нужно было постараться, чтобы эту гадину придушить. Даже через прокси.
                0

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

                  0
                  Качество аудиозвонков всё ещё отвратительное и вряд ли видео они сделают лучше.
                    0
                    Ещё хуже, Skype хотя бы номер телефона не просит в принудительном порядке
                    0

                    Древний сервер (15 лет) с насколько возможно обновленным Centos (5), клиенты с последней верисией скайпа- полет нормальный, давно..

                      0

                      На работе skype работает именно через squid (ещё и с отключенным connect). После какого-то из обновлений, skype действительно перестал выходить в online сразу после запуска, но за 10-15 минут таки подключается и работает уже нормально.

                        0
                        А можно чуть более развернуто пояснить некоторые моменты?
                        1. с QOS понятно, трафик по признаку отбираем фаерволом и передаем дальше. Но, нет подмены адреса, то есть просто форвард в мир? Нас не интересует ответ?
                        Да, дамп показывает что там UDP, но все же как то странно
                        2. в сквиде разрешение на 2 адреса, даже без метода connect. Или это разрешено где то еще?
                          0
                          1.Это обычное разрешение в цепочке FORWARD таблицы filter, естественно есть еще правило в таблице nat, которое маскардит весь транзитный трафик.
                          2. Да, есть еще правила. Пока не прописал эти два адреса подключиться было нельзя, сквид в логах писал TCP_DENIED/407.
                            0
                            Раз уж это туториал, может добавите для полноты картины?
                              0
                              Настройка маршрутизации в Linux выходит за рамки данной статьи, но, например так:
                              iptables -t nat -A POSTROUTING -s localnet/24 -j MASQUERADE
                              .
                              Т.е. маскардится абсолютно весь трафик, а вот разрешения уже идут через таблицу filter.
                                0
                                отлично, полный NAT, зачем тогда сквид? его ставят как раз для фильтрации трафика и ограничения доступа. Получается что мы разрешили в сквиде конекты на 2 сайта, все остальное — натится, тоесть не 443 и не 80 порты проходят через нат. Скорее тут обход того что скайп получает прокси из политики. Так как вы специально матчите и пропускаете трафик сгенерированный skype.exe. В итоге для него получается натинг, и сквид тут сбоку, по скольку трафик собственно в него и не попадает.
                                Статья познавательна, спасибо.
                                  0
                                  Скорее тут обход того что скайп получает прокси из политики… сквид тут сбоку, по скольку трафик собственно в него и не попадает.
                                  Все верно, НАТ нужен для обхода, но одной маркировки недостаточно и часть трафика скайпа как раз попадает на сквид, я об этом упомянул в статье:
                                  Фишка в том, что Skype смотрит в настройки IE. Отключить использование прокси в этом чудесном мессенджере невозможно (лучи добра тому, кто это придумал). А у нас настройки прокси из определения выше прилетают в IE через GPO.
                                    0
                                    отлично, полный NAT, зачем тогда сквид? его ставят как раз для фильтрации трафика и ограничения доступа.

                                    А какое тут противоречие?

                            0
                            Вот млин. Пару месяцев назад мучался с такой-же проблемой, но с прокси Kerio. Не удавался именно первичный вход Скайпа. Решилось путем попытки создания новой учетной записи из Скайпа, а потом возврат ко входу с существующей учеткой. И оно потом работало. Что это такое — так и не понял.

                            Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.

                            Самое читаемое