Реанимируем игровой сервис Nintendo Switch после блокировок РКН
День добрый читатели.
Это моя первая статья за много лет чтения Хабра, поэтому прошу «понять и простить».
В ней я хочу поделиться тем, как попытаться вернуть к жизни игровые сервисы, адреса которых заблокированы РКН в агонии попытках запретить Telegram.
В моём случае, это был Nintendo Switch, но полагаю, сервис PSN (да и прочие тоже) разблокируется так же. Просто мне повезло и PSN работал изначально. В любом случае, PlayStation у меня есть и я могу поисследовать проблему и написать отдельный пост на эту тему.
Забегая сразу в конец — в моём случае, с Nintendo, это получилось.
Кому лень читать много букв, то рецепт: вбить в настройки приставки зарубежный DNS с другого континента, например отсюда. Не получилось — берём следующий. Хочется системности — читаем дальше.
Теперь ещё один спойлер для продвинутых, которым лень читать нужна только суть:
Доменные имена, куда обращается приставка содержат более одного ip адреса и конечные бекенды сервисов Nintendo располагаются в георазнесённых датацентрах (это можно будет увидеть на картинках ниже). По dns запросу вам отдаётся какой-то адрес и один, но всегда можно узнать полный список всех ip адресов.
Таким образом, в общем случае, получается следующий костыль алгоритм реанимирования для продвинутой аудитории:
- Узнаем доменные имена и ip адреса, куда лезет приставка в неработающем кейсе.
- Проверяем эти ip адреса на предмет блокировки РКН.
- Узнаем все ip адреса, относящиеся к доменному имени, где есть проблема.
- «Прибиваем гвоздями» работающие адреса в 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
Надо понимать, что схема не вечная, и рано или поздно что-то в ней поломается (например сменится ip-адрес). Здесь лекарство только одно — бомбить горячо любимый РКН письмами с просьбой разблокировать собранные адреса.