Всем добра, хабровчане! В статье расскажу как победить этот долбаный Skype и заставить его работать с Squid, но применимо к любому http(s) прокси. Будем использовать последний скайп. На данный момент это 7.40 и конечно, с упором на то, что очередной апдейт ничего не сломает, а если и сломает то надо будет чуток докрутить, а не откатывать версию. Сразу скажу, по сути описанный метод — это хак, т.к. актуальный скайп со сквидом работать не умеет, ну или мне не удалось победить, да и в интернете я не нашел решения, которое бы для меня взлетело. В общем, обо всём по-порядку и .
Итак, мой расклад: все клиенты на Win7x64, AD DS 2008R2, Skype 7.40 x32, squid 2.7, настройки прокси в IE прилетают через GPO. Для начала расскажу зачем мне этот проклятый скайп стал так нужен. Где-то с полгода-год назад скайп 6й версии приказал долго жить, обновление на 7ку не помогло, ну ок, пересадил юзеров в веб-версию. Да, она глючная, но просто текст там вполне работает, а голос/видео можно и на личном смартфоне при надобности. Не так давно назрела необходимость брать и записывать интервью по скайпу и юзеры меня достали. Пришлось дать ноут с вафлей и начать разбираться. Оказалось, что слету «оно», т.е. скайп (эвфемизм) нигде не работает, если есть прокси, да еще и NAT полный хочет. Естественно, такого не бывает, всё настраивается, тут же прикинул я и решил вновь поднять тему. Разворачиваю, в надежде (чем черт не шутит), последний 7.40, запускаю скайп и опять вижу эту чертову рожу с КДПВ. Достаточно продолжительная война со сквидом и гуглеж привел на интересный комментарий в котором автор предлагает использовать QoS. Идея однозначно хороша, вот только у меня не взлетела из коробки и пришлось допиливать. В итоге порядок действий ниже.
Включаем QoS для клиентов
Маркируем пакеты скайпа. Открываем Групповые политики и идем Конфигурация компьютера — Политики — Конфигурация Windows — QoS 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)
tbp2k5
16.12.2017 15:34По моему наличие адекватной поддержки прокси в продуктах постепенно становиться экзотикой (виноват IPv6?): у вас прокси стоит по «историческим» причинам или нечто другое?
yosemity Автор
16.12.2017 16:02В первую очередь прокси стоит как инструмент защиты.
Sidoran
18.12.2017 12:09А можно пожалуйста более развернутый ответ? Защита кого и от чего?
yosemity Автор
18.12.2017 12:11Защита в том, чтобы не пускать напрямую через NAT всё, что попало, многие шифровальщики не начинают процесс пока не отправят ключ на сервер. Ну и не только шифровальщики, вообще мало ли какая информация может уйти. Да, прокси — не панацея, но лучше чем ничего.
ivachkin
16.12.2017 16:02Была подобная проблема, решили открытием ip адресов и днс имен на которые ходит скайп на сквиде. Причем открывать необходимо абсолютно для всех, в том числе для неавторизованных пользователей.
AVZlobin
16.12.2017 16:04С обновлением можно сильно проще:
http://www.skype.com/go/getskype-msi
Вот родной пакет. Он по wsus нормально ставится и обновляется.
Vitalley
16.12.2017 18:30Добавили бы в телегу видеосвязь и можно этот скайп сворачивать.
navion
18.12.2017 03:05Качество аудиозвонков всё ещё отвратительное и вряд ли видео они сделают лучше.
FreeManOfPeace
18.12.2017 23:22Ещё хуже, Skype хотя бы номер телефона не просит в принудительном порядке
sasa_mi
16.12.2017 18:33Древний сервер (15 лет) с насколько возможно обновленным Centos (5), клиенты с последней верисией скайпа- полет нормальный, давно..
HSerg
16.12.2017 18:35На работе skype работает именно через squid (ещё и с отключенным connect). После какого-то из обновлений, skype действительно перестал выходить в online сразу после запуска, но за 10-15 минут таки подключается и работает уже нормально.
H3xus
18.12.2017 12:03А можно чуть более развернуто пояснить некоторые моменты?
1. с QOS понятно, трафик по признаку отбираем фаерволом и передаем дальше. Но, нет подмены адреса, то есть просто форвард в мир? Нас не интересует ответ?
Да, дамп показывает что там UDP, но все же как то странно
2. в сквиде разрешение на 2 адреса, даже без метода connect. Или это разрешено где то еще?yosemity Автор
18.12.2017 12:081.Это обычное разрешение в цепочке FORWARD таблицы filter, естественно есть еще правило в таблице nat, которое маскардит весь транзитный трафик.
2. Да, есть еще правила. Пока не прописал эти два адреса подключиться было нельзя, сквид в логах писал TCP_DENIED/407.H3xus
18.12.2017 12:54Раз уж это туториал, может добавите для полноты картины?
yosemity Автор
18.12.2017 13:44Настройка маршрутизации в Linux выходит за рамки данной статьи, но, например так:
iptables -t nat -A POSTROUTING -s localnet/24 -j MASQUERADE
.
Т.е. маскардится абсолютно весь трафик, а вот разрешения уже идут через таблицу filter.H3xus
18.12.2017 18:13отлично, полный NAT, зачем тогда сквид? его ставят как раз для фильтрации трафика и ограничения доступа. Получается что мы разрешили в сквиде конекты на 2 сайта, все остальное — натится, тоесть не 443 и не 80 порты проходят через нат. Скорее тут обход того что скайп получает прокси из политики. Так как вы специально матчите и пропускаете трафик сгенерированный skype.exe. В итоге для него получается натинг, и сквид тут сбоку, по скольку трафик собственно в него и не попадает.
Статья познавательна, спасибо.yosemity Автор
18.12.2017 19:07Скорее тут обход того что скайп получает прокси из политики… сквид тут сбоку, по скольку трафик собственно в него и не попадает.
Все верно, НАТ нужен для обхода, но одной маркировки недостаточно и часть трафика скайпа как раз попадает на сквид, я об этом упомянул в статье:Фишка в том, что Skype смотрит в настройки IE. Отключить использование прокси в этом чудесном мессенджере невозможно (лучи добра тому, кто это придумал). А у нас настройки прокси из определения выше прилетают в IE через GPO.
Shtucer
18.12.2017 20:44отлично, полный NAT, зачем тогда сквид? его ставят как раз для фильтрации трафика и ограничения доступа.
А какое тут противоречие?
slavius
18.12.2017 13:54Вот млин. Пару месяцев назад мучался с такой-же проблемой, но с прокси Kerio. Не удавался именно первичный вход Скайпа. Решилось путем попытки создания новой учетной записи из Скайпа, а потом возврат ко входу с существующей учеткой. И оно потом работало. Что это такое — так и не понял.
gjf
На самом деле этот гениальный мессенджер использует некую свою логику работы с прокси. И выбор «HTTPS/SOCKS» в параметрах вовсе не означает, что это будет работать.
Вот эту ссылку можете выкинуть, ничего она не даёт.
К тому же, похоже, для общего счастья там создаются не-ТСР сокеты:
Автор молодец, конечно, но я бы просто проблему решил посредством VPN. Меньше метаний.
P.S. Не принимайте лично — но я бы несколько привёл язык изложения к литературному. Не то, чтобы я — ханжа, но некоторые обороты пришлось перечитывать несколько раз, прежде чем стал понятен смысл.
yosemity Автор
Я такую ссылку не давал.
Чем вы смотрите активность по процессам?
Внутри LAN? у меня и 10G есть, зачем мне лишнее? только 802.1x осваиваю.
Я старался, часа 3 перечитывал и переписывал. Буду стараться, спасибо за критику.
gjf
1. Ссылка не к Вам, просто при поиске помощи в настройке прокси для Skype она появляется одной из первых. И якобы это официальный ответ Microsoft. Да только ответ нерабочий.
2. Лог выдаст любой локальный прокси типа AdvOr. Но это — детский лепет на лужайке, если бы было время, я бы сделал исследование посерьёзнее, тем же Wireshark. К сожалению, не до того.