День добрый читатели.

Это моя первая статья за много лет чтения Хабра, поэтому прошу «понять и простить».

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

В моём случае, это был Nintendo Switch, но полагаю, сервис PSN (да и прочие тоже) разблокируется так же. Просто мне повезло и PSN работал изначально. В любом случае, PlayStation у меня есть и я могу поисследовать проблему и написать отдельный пост на эту тему.

Забегая сразу в конец — в моём случае, с Nintendo, это получилось.

Кому лень читать много букв, то рецепт: вбить в настройки приставки зарубежный DNS с другого континента, например отсюда. Не получилось — берём следующий. Хочется системности — читаем дальше.

Теперь ещё один спойлер для продвинутых, которым лень читать нужна только суть:
Доменные имена, куда обращается приставка содержат более одного ip адреса и конечные бекенды сервисов Nintendo располагаются в георазнесённых датацентрах (это можно будет увидеть на картинках ниже). По dns запросу вам отдаётся какой-то адрес и один, но всегда можно узнать полный список всех ip адресов.

Таким образом, в общем случае, получается следующий костыль алгоритм реанимирования для продвинутой аудитории:

  1. Узнаем доменные имена и ip адреса, куда лезет приставка в неработающем кейсе.
  2. Проверяем эти ip адреса на предмет блокировки РКН.
  3. Узнаем все ip адреса, относящиеся к доменному имени, где есть проблема.
  4. «Прибиваем гвоздями» работающие адреса в DNS-е, к которому будет обращаться приставка.

Теперь более подробно

1. Узнаем доменные имена и ip адреса, куда лезет приставка в неработающем кейсе.

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

Набор нам для этого потребуется следующий:

  • Приставка Nintendo Switch, подключенная по wifi к ноутбуку.
  • Ноутбук, с установленным анализатором трафика (напр. Wireshark), со включённым WiFi в режиме HotSpot. Аплинком по Ethernet ноутбук подключён к домашнему роутеру, раздающему интернет. На ноутбуке настроен ICS (в случае Windows), Internet sharing (в случае Mac OS), iptables (в случае Linux).
  • Роутер, раздающий интернет.

1.1 Желательно включить и выключить приставку, прежде чем начать анализировать неработающий сервис. Это нужно для того, чтобы гарантированно отловить DNS запросы от неё.

1.2 Включаем приставку (Power on), запускаем анализатор трафика слушать порт WiFi.

1.3 Подключаем приставку по WiFi и воспроизводим неработающий кейс (в моём случае это была проверка статуса подключения).

1.4 Доходим до точки окончания кейса или ошибки. Останавливаем анализатор.

1.5 Нам нужно посмотреть отловленные DNS запросы. Вбиваем в фильтр анализатора трафика слово dns и переписываем в таблицу доменные имена, которые фигурируют в пакетах запросов (dns query), они нам понадобятся позже. Сопоставляем доменным именам в таблице ip адреса, пришедшие от dns сервера (пакеты dns response). В итоге у нас получается таблица, dns — ip.



DNS адрес, IP адрес
aauth-lp1.ndas.srv.nintendo.net, 54.85.208.211
nncs1-lp1.n.n.srv.nintendo.net, 35.158.74.61
nncs2-lp1.n.n.srv.nintendo.net, 35.157.230.202
ctest-dl-lp1.cdn.nintendo.net — не требуется
ctest-ul-lp1.cdn.nintendo.net — не требуется


Последние 2 доменных имени — точно работают. Они относятся к сервису проверки скорости пропускного канала U/D. Кроме того, они расположены на CDN (дальнейший линк ведет в akamai).

2.Проверяем эти ip адреса на предмет блокировки РКН.

2.1 Открываем проверялку блокированных адресов. Я пользовался телеграм ботом @rknblockbot, но можно воспользоваться и сервисом проверки самого РКН.

2.2 Проверяем ip адреса из таблицы пункта 1.5.

2.3 Заблокированные ip адреса — помечаем.

2.4 В итоге, у нас получилась таблица, в которой видны доменные имена, куда, без вмешательства, мы не сможем попасть.

Доменое имя, ip адрес блокированный.
nncs1-lp1.n.n.srv.nintendo.net, 35.158.74.61
nncs2-lp1.n.n.srv.nintendo.net, 35.157.230.202


3. Узнаем все ip адреса, относящиеся к доменному имени, где есть проблема.

3.1 Я решил эту задачу в лоб, просто загуглив сервисы, где можно посмотреть все адреса.



На ней как раз видно, что сервера георазнесены по разным континентам.

3.2 Проверяем весь список полученных адресов на предмет блокировки. Добавляем незаблокированные адреса в таблицу. У меня получилось так:

Доменое имя, ip адрес блокированный, новый ip адрес.
nncs1-lp1.n.n.srv.nintendo.net, 35.158.74.61, 52.14.47.244
nncs2-lp1.n.n.srv.nintendo.net, 35.157.230.202, 52.14.237.148


4.«Прибиваем гвоздями» работающие адреса в DNS-е, к которому будет обращаться приставка.

4.1 Вариантов решения этой задачи — много (например найти зарубежный dns, возвращающий нужные ip адреса, как я указал выше, или свой поднять свой собственный dns).
Я выбрал для себя свой простой вариант. В настройках своего роутера (МГТС GPON ZTE F660), я указал на вкладке LAN, что нужно использовать DNS роутера 192.168.1.1, а в Application->DNS Service прописал проблемным доменным именам новые ip адреса (по факту, этот контент идёт непосредственно в файл /etc/hosts на роутере).

4.2 Перегружем роутер, с ноутбука проверяем утилитой nslookup/dig, что возвращаются нужные ip адреса.

4.3 Переподключаем приставку к роутеру, проверяем.



И да, незабудьте, что «рабочий тип NAT» (в терминах Nintendo) для онлайн игры- это NAT type A,B. Для этого нужно сделать, на мой взгляд, форменное безобразие: Прописать port forwarding входящих UDP 49000-65535 (ага..) на ip адрес вашей приставки. Адрес приставки должен быть статический, либо прописан в связках DHCP вашего роутера.

Моё личное мнение — это лень/сроки программистов. Можно было спокойно поднять на приставке UDP ServerSocket и ожидать на нём ответы из внешнего мира. Роутеры бы настраивались более корректно. Да и UPnP никто не отменял. Ну это всё фантазии..

Но это лучше, чем рекоммендация Nintendo открыть UDP 1-65535.

В дополнение:
Splatoon 2 лечится таким же алгоритмом. Скажу сразу связку:
Nncs2.app.nintendowifi.net 52.14.237.96

Login в PSN лечится так:
elb001-csla-edge01.csla.usw2.np.cy.s0.playstation.net 52.88.123.195



Надо понимать, что схема не вечная, и рано или поздно что-то в ней поломается (например сменится ip-адрес). Здесь лекарство только одно — бомбить горячо любимый РКН письмами с просьбой разблокировать собранные адреса.

Комментарии (22)


  1. Alexsey
    01.05.2018 16:27
    +1

    Надо понимать, что схема не вечная, и рано или поздно что-то в ней поломается (например сменится ip адрес сменится). Здесь лекарство только одно — бомбить горячо любимый РКН письмами с просьбой разблокировать собранные адреса.

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


    1. Hile
      01.05.2018 16:31

      Не забудьте страны другие подвинуть, поближе, чтоб пинги и производительность была ок, а то всеж некоторым 500 мс пинги не оч подойдут, тем более в играх.


      1. Alexsey
        01.05.2018 17:00

        Вот буквально на днях тестировали со знакомым private internet access. Пинг на швейцарском vpn не превышал 70мс. Для многих игр это вполне терпимая задержка.


        1. Hile
          01.05.2018 17:16

          Это если вы на западной части россии и роутер тут практически не аффектит. Если роутер стабильно может держать VPN и канал свободен, гонять игровой траф не проблема.


        1. Am6er Автор
          01.05.2018 17:19

          Выше верно подмечено, что в онлайн играх, где latency, packet loss имеют большое значение — vpn применим плохо. К сожалению, на моём роутере из поста нельзя создать и настроить vpn тоннель, тогда бы пост был о другом. К тому же нужно будет как-то решить задачу по приземлению udp пакетов снаружи через тоннель на консоль за двойным натом. Хотя если это свой выделенный сервер, то проблем нет.


          1. Massacre
            02.05.2018 09:51

            В случае прогрессирования блокировок РКН, простая подмена DNS и выбор серверов из другого региона AWS, скорее всего, уже не поможет…


            1. Am6er Автор
              02.05.2018 09:58

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


  1. Scorpi
    02.05.2018 17:03

    Немного оффтопик на тему блокировок и доступа к играм.
    Для тех кто играет в PUBG и у кого проблемы с подключением:
    1) prod-live-entry.playbattlegrounds.com — отвечает за подключение к сервисам игры (матчмейкинг, покупка кейсов и.т.д.)
    2) prod-live-front.playbattlegrounds.com — домен отвечающий за интерфейс в главном меню

    У кого постоянный/частый RECONNECT — биндить нужно первый домен.
    У кого у кого при заходе в игру только фон без интерфейса (такого уже не должно случаться, т.к. они сменили адреса на не заблокированные) — биндить нужно второй домен.
    Решения проблемы таймута при заходе в сам матч пока что не нашёл, только использование VPN.

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

    Заходим сюда — isitblockedinrussia.com
    Вводим домены данные выше, берём любой не заблокированный адрес (напротив которого зелёная галочка) и прописываем себе в hosts или DNS.
    Например:
    54.88.197.10 prod-live-entry.playbattlegrounds.com

    Напомню расположение файла hosts — C:\Windows\System32\drivers\etc

    Вот домены использующиеся в тестовых клиентах:
    Test Server
    test-live-front.playbattlegrounds.com
    test-live-userproxy.playbattlegrounds.com

    Closed Experimental Server
    test-xlive-front.playbattlegrounds.com
    test-xlive-entry.playbattlegrounds.com


    1. Am6er Автор
      02.05.2018 18:32

      Вполне себе не оффтопик. Очень полезная информация, спасибо.


  1. maelle
    02.05.2018 18:31

    Пожалуйста, напишите применительно к psn


    1. Am6er Автор
      02.05.2018 18:34

      Могу. Попытаюсь выпытать кейс: есть что-то конкретное или просто логин в PSN?


      1. iSage
        02.05.2018 20:29

        Да там примерно все не работает: логин через раз, трофеи не синхронизируются, сейвы тоже, магазин работает кое-как.
        Доменов довольно много, часть ведет на akamai и вроде работает, а часть ведет на AWS и, естественно, не работает


        1. Am6er Автор
          03.05.2018 19:58

          Потыкался сегодня с PS. Пока искал — у меня PSN тоже перестал коннектиться :)))
          Появился стимул. Пока следующая информация. Наткнулся только на одно проблемное имя:


          elb001-csla-edge01.csla.usw2.np.cy.s0.playstation.net адреса: 54.68.116.180 52.88.123.195 54.68.7.178
          заблокированы.


          Можно тут использовать адреса 52.10.225.252 52.11.91.241 52.26.9.16


          Возможно, когда это починю, то после логина в PSN найду что-то ещё.


          1. Am6er Автор
            03.05.2018 20:20

            Upd. Ошибся. На указанное мною доменное имя по запросу от восьмерок возвращаются 4 записи:
            54.68.116.180 34.213.28.168 52.88.123.195 54.68.7.178

            Единственная рабочая из них — это 52.88.123.195
            Наряду с нею можно попытаться использовать и те адреса, что указал в конце сообщения.


    1. Am6er Автор
      03.05.2018 23:45

      В PSN зайти можно. Upd.


  1. iSage
    02.05.2018 20:25

    Можно обойтись без ноута с точкой доступа. Дампить через ссх+tcpdump на роутере и пайпить сразу в вайршарк.
    Придумать бы, как это все автоматизировать.


    1. iSage
      03.05.2018 01:35

      В общем, я решил проблему в лоб и набросал на коленке прокси-днс github.com/isage/lua-proxy-dns
      Оно автоматом выкидывает из ответов забаненые (по мнению апи антизапрета) адреса.
      А чтобы не остаться с пустым списком — дергает апстримовые днс 3 раза.
      Сонивские сервисы у меня через него работают.
      Поскольку эта штука однопоточная, не кеширующая и дергает стороннее апи — резолвит она довольно медленно, особенно на старте приставки, т.к. там дофига запросов.
      В идеале надо добавить кеш, проверку по готовой базе адресов, а вместо апстримовых днс найти апи, которое отдавало бы все адреса. Но мне лень и и так норм.


      1. Am6er Автор
        03.05.2018 20:02

        Интересная идея
        Я как-то поленился скрипт делать.
        Есть один нюанс: адреса выдаются в зависимости от местоположения на сети того, кто спрашивает. Поэтому отдаётся не весь набор, а лишь его часть. Если сделать трансфер зоны (dig -t axfr), то вернется полный список. Но трансфер всем подояд не дают делать, поэтому я лез гуглить веб сервисы, которые могут показать мне всю зону целиком.


        1. iSage
          03.05.2018 20:22

          Да, но, куски каждый раз разные и в 2-3 ответах гарантировано найдется несколько незаблокированных ип. Да и полные наборы у сони не такие большие, у них там, кажется, по cname-ам разнесено. А веб-сервисы с полным набором не имеют никакого апи.
          Можно, впринципе, чуть изменить логгирование и получить за пять минут рабочие наборы ип, которые уже можно статически вбить в любой другой днс.


    1. Am6er Автор
      03.05.2018 20:05

      У меня роутер под управлением МГТС (GPON ZTE F660). Тут на хабре один товарищ пытался под него собрать самостоятельно прошивку, так заметил, что вероятность получить кирпич весьма велика.


  1. bromium
    03.05.2018 23:29

    В моем случае с nat d можно было играть.

    Но есть в москве один нехороший провайдер, который, как я понял, режет порты на своей стороне и не признается в этом. Хотя в сети можно найти полно подтверждений этому.

    Во-первых, этот провадйер не позволяет менять dns — можно использовать только те, что выдал провайдер.

    Затем у него стал nat f — то есть онлайн-игры становятся не доступны в принципе.

    Белый ip и port forwarding не помогают — как отметил выше, я опытным путем выяснил, что пров режет порты на своей стороне и не признается.

    При чем после перепалок в их форуме (телефонная тп просто некомпетентна) они настроили мне неким образом, что консоль получала свой внутренний ip и тогда все работало, но потом они все эти настройки грохнули и сделали вид, что не понимают, о чем речь.

    Поэтому единственным выходом для меня стала установка дополнительного роутера. На нем я настроил vpn (pptp), а сам роутер выходил в сеть через модем прова.

    Только в этом случае мне удалось добиться nat b.

    Естественно, существенная просадка по скорости, но хоть играть стало возможно.

    Конечно, рекомендации тп нинтендо открыть все порты это фэйспалм, и, как правило, это не помогает. Я понял одно, что если в настройках роутера upnp включен, то этого должно быть достаточно, а если с ним не работает, то и port forwarding и dmz не помогут.

    Так что, помимо ркн, блокировки бывают на стороне прова, которые тот еще и не признает.

    Не знаю, может, мой опыт, кому-то поможет


    1. Am6er Автор
      04.05.2018 12:05

      Начиная с NAT type C и дальше в Splatoon мультиплеер непоиграть, так как нет связности по UDP между клиентами.