habrahabr

О блокировании мобильного приложения Yota со стороны МТС

  • пятница, 12 сентября 2014 г. в 03:11:27
http://habrahabr.ru/company/yota/blog/236515/

Привет, Хабр. Как вы знаете, 13 августа мы начали выдавать из предзаказа SIM-карты Yota. Прошло чуть больше недели с того момента – и сначала в Twitter, потом в других соцмедиа, а затем и в обращениях в нашу службу поддержки стали появляться однотипные жалобы от пользователей – они сообщали о неработающем мобильном приложении Yota. В результате анализа выяснилось, что проблемы возникали только у абонентов МТС, пытавшихся запустить приложение Yota, и именно при подключении к мобильному интернету. При подключении через Wi-Fi приложение работало без нареканий. Также у абонентов МТС не открывался раздел Voice на сайте yota.ru.

Мы предположили, что МТС заблокировал работу нашего приложения в своей сети. И вскоре наши догадки подтвердились. Но обо всём по порядку.

Несколько слов о приложении


С помощью приложения Yota любой пользователь смартфона может заказать, активировать SIM-карту Yota и выбрать необходимый пакет услуг. Такой подход является нестандартным для российского рынка — приложение позволяет как заказать новую SIM-карту Yota, так и перейти к нам со своим текущим номером от другого оператора.

Завязка


Первые сообщения о проблеме с мобильным приложением Yota появились 19 августа, об этом написал в своём микроблоге в Twitter один из абонентов МТС. Приложение успешно скачивалось и устанавливалось, но на первом же экране зависало. Опытным путём пользователь выяснил, что такое поведение приложения наблюдается только при использовании мобильного интернета в сети МТС, при подключении по Wi-Fi всё начинало работать корректно.









После получения этой информации мы проверили работу нашего приложения в сетях других мобильных операторов. Во всех случаях, кроме сети МТС, приложение работало корректно. То есть описанная пользователем проблема действительно была воспроизведена при использовании SIM-карты нашими тестировщиками.

Первый акт


После приличного количества жалоб от пользователей наши специалисты обратились в службу поддержки МТС. На сайте mts.ru по всем правилам была зарегистрирована проблема с доступом к определённым ресурсам и просьбой решить её.



Также мы продублировали свою жалобу в контактный центр МТС. Со второго раза, после длительного ожидания ответа оператора, после нескольких переключений на разных специалистов, удалось получить ответ, что вопросом займутся. Спустя несколько дней раздался звонок: звонили из контактного центра, спрашивали, не решилась ли проблема. Сотрудник Yota ответил, что не решилась. Звонивший пообещал перевести заявку на другого специалиста. Больше служба поддержки МТС никаких действий не предпринимала, мы не получили ни письменного ответа на наш запрос, ни звонков.

К моменту нашего обращения в службу поддержки в сети было уже много сообщений от других пользователей МТС, которые столкнулись с фактом блокировки. Эта ситуация даже успела привлечь внимание журналистов. Однако оператор всякий раз отрицал факт блокирования, причём глава их пресс-службы в ответ обвинил Yota в «наглом вранье» и попытках «выдавать фейлы за злую волю оператора-конкурента».



Второй акт


Параллельно с попытками достучаться до МТС мы изучали, каким образом осуществляется блокировка. Было ясно, что это делается гораздо тоньше, чем полное обрезание трафика, поскольку все IP-адреса пингуются без проблем. Также выяснилось, что причина неработоспособности приложения и раздела Voice на сайте заключается в следующем: для их корректной работы необходим доступ к служебным ресурсам static.yota.ru и wa.yota.ru. Когда для установления сессии с ними осуществляется обмен пакетами, этому процессу ничто не препятствует. В нашем же случае все последующие пакеты с данными «режутся». То есть формально связь устанавливается, однако обмен «полезными» данными с удалённым ресурсом сразу блокируется.

Третий акт


Поскольку мы не получили ответа от МТС, а блокирование продолжилось, мы направили их руководству официальное письмо. Сам факт блокировки был заверен у нотариуса. Также мы обратились в независимую экспертную компанию СПИИРАН, которая провела собственный анализ и выдала многостраничное официальное заключение, в котором подтверждались сделанные нами «открытия». Общий объём документа составил более 100 страниц, поэтому мы приведём лишь поставленные задачи и сделанные в ходе исследования выводы:

Базовое исследование / расширенное исследование

Цель: подтвердить или опровергнуть факт наличия проблем с работоспособностью мобильного приложения и сайта Yota с точки зрения абонента при использовании SIM-карт и сети оператора связи МТС, а также определить источники проблем работоспособности мобильного приложения и раздела /voice сайта Yota при использовании сети оператора связи МТС.



Сценарий:
1. Выключить телефон
2. Поместить SIM-карту в телефон
3. Включить телефон, подключиться к сети оператора связи
4. Зафиксировать оператора связи, к которому установилось соединение, и условия подключения
5. Проверить работоспособность услуги передачи данных: через штатный браузер операционной системы открыть сайты yandex.ru, google.ru, lenta.ru
6. Проверить отсутствие доступа через прокси-сервер – зайти на сайт 2ip.ru, зафиксировать внешний IP-адрес, через базу данных IP-адресов убедиться, что IP-адрес принадлежит оператору, к которому произведено подключение
7. Измерить скорость передачи данных при помощи приложения Speedtest
8. Установить на мобильное устройство мобильное приложение Yota
9. Выполнить базовые проверки работы мобильного приложения Yota
10. Через штатный браузер операционной системы открыть раздел сайта yota.ru/voice
11. Зафиксировать результаты
Сценарий должен быть выполнен на каждом телефоне и с каждой SIM-картой, используемыми для текущего исследования.

Выводы: результаты исследования подтверждают наличие проблем работоспособности мобильного приложения и раздела /voice сайта Yota с точки зрения абонента при использовании всех закупленных для исследования SIM-карт МТС и сети оператора связи МТС. Одновременно с этим подтверждается, что при использовании альтернативного оператора связи «Билайн» работоспособность мобильного приложения Yota соответствует заявленному поведению, раздел /voice сайта Yota штатными средствами операционной системы открывается.

Результаты расширенного исследования показали, что для всех SIM-карт МТС, всех используемых в исследовании устройств и для всех проблемных сценариев актуальна одна проблема, с симптомами, свойственными всем подключениям клиента к серверам Yota с IP-адресами 94.25.232.254, 94.25.232.127. При использовании альтернативного оператора связи «Билайн» проблема подключения к этим IP-адресам не воспроизводится, все сетевые соединения устанавливаются корректно. Проблема заключается в том, что после корректного установления TCP-соединения дальнейший сетевой обмен прерывается из-за отсутствия ответа сервера на TCP-запрос клиента.

Определение причины возникновения проблем

Цель: путем проведения углубленного исследования определить причины возникновения проблемы нарушения сетевого взаимодействия при обращении абонентов МТС к серверам Yota с IP-адресами 94.25.232.254, 94.25.232.127.



Для проведения углубленного исследования было разработано специализированное программное обеспечение, эмулирующее различные этапы TCP-соединения. Специализированное ПО запускалось со стороны тестового компьютера (2), подключенного к тестовому телефону (1) по интерфейсу Wi-Fi.

С целью дальнейшего анализа промежуточных результатов исследования производился съем данных сетевых соединений с интерфейса Wi-Fi тестового компьютера (2) при помощи программного комплекса WIRESHARK. Одновременно с этим со стороны серверов Yota также запускался съем данных сетевых соединений утилитой TCPDUMP.

Сценарий:
1. Выключить мобильное устройство (1)
2. Поместить SIM-карту в мобильное устройство (1)
3. Включить мобильное устройство (1), подключиться к сети оператора связи
4. Зафиксировать оператора связи, к которому произвелось подключение, а также условия подключения
5. Выполнить базовые проверки работы услуги передачи данных
6. Подключить тестовый компьютер (2) к интерфейсу Wi-Fi мобильного устройства (1)
7. Провести базовые проверки доступности IP-адресов и маршрутизации к IP-адресам по протоколу ICMP штатными средствами TRACEROUTE и PING.
8. Зафиксировать и проанализировать промежуточные результаты
9. Провести специализированный тест по разработанной методике (см. описание методики ниже) по прохождению TCP пакета по сетевому маршруту до IP-адресов серверов Yota
10. Зафиксировать и проанализировать результаты.
Сценарий необходимо провести на каждой SIM-карте МТС.

Методика специализированного исследования: Методика состоит в эмуляции TCP-соединения с сервером Yota и последовательным изменением TTL TCP-пакетов с запросом данных от клиента к серверу по аналогии с методикой определения маршрута к серверу по протоколу ICMP (команда TRACEROUTE).



При определении маршрута к серверу клиент передает ICMP Echo Request пакеты со временем жизни пакета от TTL=1 до TTL=(длина маршрута). Каждый сетевой узел, получив пакет, уменьшает его на единицу и передает дальше по маршруту. Получив IP-пакет с TTL=1, если это не конечный узел-получатель пакета, сетевой узел отбрасывает пакет и посылает отправителю пакет ICMP Time-to-live exceeded, указывающий отправителю на то, что пакет не был перенаправлен далее. Если узел-получатель является конечным узлом, то он отвечает на запрос пакетом ICMP Echo Reply. Анализируя заголовки полученных пакетов, клиент может определить полный маршрут к узлу-получателю. Также данным способом возможно отследить потенциальную фильтрацию IP- и ICMP-пакетов на сетевом оборудовании.

Методика текущего исследования повторяет алгоритм определения маршрута до узла-получателя за исключением того, что для исследования используется не протокол ICMP, а протокол TCP. При этом сначала клиент устанавливает корректное TCP-соединение, а затем передает TCP-пакет запроса данных к серверу с заданным TTL. Увеличивая время жизни TCP пакета от TTL=1 до TTL=(длина маршрута), возможно проверить наличие фильтрации на сетевом оборудовании TCP-пакетов при условии, что на том же оборудовании отсутствует фильтрация ICMP пакетов Echo Request/Reply и ICMP Time-to-live Exceeded.

Сценарий исследования:
1. Определение «длины» маршрута до сервера. Для этого используется информация из результатов выполнения команды TRACEROUTE.
2. Эмулируется установление TCP-соединения (TCP handshake)
3. Посыл TCP-пакета с заданным TTL
4. Ожидание ответа от оборудования (сервера).

Сценарий повторяется количество раз, согласно длине маршрута, до тех пор пока не обнаружится хост, на котором ICMP-ответ на пакет не приходит при условии наличия ICMP-ответа во время определения длины маршрута. Сценарий проводится на каждой SIM-карте МТС. Если на каком-либо из узлов сети присутствует фильтрация сетевых пакетов, то от этого оборудования ответ на тестовый пакет не придет. Оператор связи, фильтрующий пакеты на пути маршрута, определяется по IP-адресу оборудования, не отвечающего на тестовый пакет.

Результаты: по результатам можно сделать вывод, что сервера доступны по протоколу IP, маршрутизация функционирует корректно – расстояние до IP-адресов Yota составляет 15 сетевых узлов, включая тестовый телефон, IP-пакеты доставляются до сервера, от сервера приходят ответы, среднее время ответа сервера составляет 90 мс.

Проверка прохождения IP-пакетов ICMP Echo Request до IP-адресов серверов Yota прошла успешно. Проверка прохождения пакетов ICMP Echo Request и пакетов ICMP Time-to-live exceeded при инкрементальном изменении TTL-пакетов выявила частичную фильтрацию пакетов ICMP на этапе между IP адресами 37.29.4.162 и 94.25.208.193. При этом фильтрация затрагивает только ICMP-ответы, независимо от наличия данного типа фильтрации пакеты запросов доходят до IP адресов Yota.

Выводы: результаты проведения углубленного исследования показывают, что причиной проблемы, из-за которой клиентское мобильное устройство после посылки TCP-пакета с данными не получает ответ от сервера, является наличие фильтрации TCP-пакетов с данными на стороне оператора связи МТС в районе сетевого оборудования, которое является первым оборудованием сетевого уровня, на которое поступает трафик с абонентских устройств.




Результат выполнения команды TRACERT для сервера static.yota.ru

Доставка IP-пакетов и маршрутизация пакетов от и до IP-адресов серверов Yota производятся корректно. Обнаружена фильтрация служебных IP-пакетов, не влияющая на конечное установление соединения и передачу данных в случае использования TCP-протокола транспортного уровня с гарантированной доставкой пакетов.

Углубленное исследование по специально разработанной методике прохождения TCP-пакета запроса данных с различными значениями TTL показала наличие фильтрации TCP-пакета запроса на оборудовании МТС с IP адресом 10.25.132.90, которое является первым оборудованием сетевого уровня, на которое поступает трафик с абонентских устройств.


Результат передачи TCP пакета с TTL=1 для сервера static.yota.ru


Результат передачи TCP пакета с TTL=2 для сервера static.yota.ru


Результат передачи TCP пакета с TTL=3 для сервера static.yota.ru


Результат выполнения команды TRACERT для сервера wa.yota.ru


Результат передачи TCP пакета с TTL=14 для сервера wa.yota.ru


Результат передачи TCP пакета с TTL=15 для сервера wa.yota.ru

Заключение


Итак, по результатам экспертизы было подтверждено блокирование вспомогательных ресурсов, обеспечивающих работоспособность приложения и раздела сайта — 94.25.232.254 (wa.yota.ru) и 94.25.232.127 (static.yota.ru). Это наблюдалось на всех использованных в ходе тестирования SIM-картах МТС. В сетях других операторов приложение и раздел Voice на сайте yota.ru работают корректно.

Проведённая экспертиза подтвердила, что на сетевом оборудовании МТС, на которое поступает трафик с абонентских устройств, происходит избирательная фильтрация сетевых пакетов запросов данных. Причём фильтрация осуществлялась не от IP-адресов наших серверов, а к ним. При этом служебные пакеты, предназначенные для корректного установления и завершения соединения, не фильтруются.

В результате мобильное приложение устанавливало соединение с сервером, некоторое время отправляло запросы на получение данных, но не дождавшись, закрывало соединение. Всё это приводило к тому, что «со стороны пользователя наблюдалось весьма характерное поведение приложения – длительное “зависание” и отсутствие реакции на действия пользователя, которые могут быть расценены как ошибки и некорректная работа самого приложения». В результате пользователи не могли воспользоваться какими-либо функциями приложения, в том числе заказать SIM-карту Yota.

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

Действия МТС косвенно нанесли ущерб и нашей репутации, поскольку в неработоспособности приложения пользователи обвиняют Yota. Это не говоря о времени, силах и средствах, потраченных нами на проведение вышеописанного расследования.



Кульминация (или ещё нет?)


С 21 августа мы неоднократно обращались к представителям МТС на разных уровнях с требованием разблокировать приложение Yota. Никаких мер ими принято не было. Сегодня по результатам тестов и обратной связи от клиентов МТС, ранее испытывавших проблемы с приложением, мы подтверждаем, что приложение начало работать корректно. Мы связываем это с тем, что сегодня широкой общественности стало известно о подготовке нами заявления в ФАС, и МТС оперативно принял меры по разблокировке Yota. Несмотря на решение проблемы, мы все равно будем подавать жалобу.