Skip to content

debelisimo/discord-voice-ips

 
 

Repository files navigation

Что это и зачем?

Этот репозиторий содержит:

  • Списки доменов и IP-адресов используемых голосовыми серверами Discord и в целом (gui, api и т.д.)
  • Скрипт для парсинга IP с готового списка сабдоменов голосовых каналов и создания IPset списка с последующей загрузкой получившихся IP списков
  • Скрипты для генерации списка сабдоменов голосовых серверов в формате region[1-15000].discord.gg и их резолв с последующей записью в фолдер regions
  • Скрипт для преобразования списков IP-адресов в JSON формат для удобного импорта в Amnezia

Репозиторий будет полезен тем, кто хочет настроить "корректную" маршрутизацию для обеспечения "стабильной" работы Discord.

Структура Репозитория

  • discord-domains-list - список доменных имён Discord
  • amnezia-discord-domains.json - тот же список, но уже подготовленный к импорту в Amnezia
  • discord-voice-domains-list - общий список из доменов голосовых каналов Discord для регионов: Россия, Нидерланды, Швеция, Италия, Германия, Испания, Польша, Румыния
  • discord-voice-ip-list - список из IP голосовых каналов Discord для вышеназванных регионов
  • discord-voice-ipset-list - тот же список, но в формате IPset
  • amnezia-voice-ip.json - тот же список, но уже подготовленный к импорту в Amnezia
  • regions - фолдер со списками IP голосовых каналов разбитых по регионам (сгенерированный силами voice-domains-generator)
  • custom-solutions - фолдер с решениями от заинтересованных и неравнодушных
  • voice-domains-generator.sh - генератор и резолвер доменов голосовых серверов Discord
  • voice-domains-generator-fast.sh [САМОЕ ОПТИМАЛЬНОЕ РЕШЕНИЕ] - тоже самое, но в разы шустрее (зависит от CPU)
  • voice-ip-parser.sh - IP резолвер по списку discord-voice-domains-list с функцией создания и добавления IP в IPset список unblock
  • json-voice-ip-converter.sh - скрипт преобразовывает в JSON списки IP голосовых серверов Discord для последующего ручного импорта в Amnezia

Использование с IPset

  1. Создайте новый список unblock:
$ ipset create unblock hash:net
  1. Склонируйте этот репозиторий:
$ git clone https://github.com/GhostRooter0953/discord-voice-ips.git
  1. Перейдите в директорию с клонированным репозиторием:
$ cd discord-voice-ips
  1. Добавьте адреса из файла discord-voice-ipset-list в ваш ipset:
$ ipset restore < discord-voice-ipset-list
  1. Добавьте соответствующее правило в ваш фаерволл, чтобы настроить маршрутизацию
-A PREROUTING -m set --match-set  dst -j DNAT --to-destination <IP-адрес_интерфейса_туннеля>
-A OUTPUT -m set --match-set  dst -j DNAT --to-destination <IP-адрес_интерфейса_туннеля>

p.s. Этот вариант наиболее удобен в сценарии с KVAS, т.к. при его установке будут добавлены аналогичные цепочки и списки

Скрипт voice-ip-parser

Предназначен для парсинга IP-адресов голосовых серверов Discord из файла со списком доменов и их дальнейшего добавления в IPset.

Скрипт может:

  • Автоматически почистить предыдущие списки (как IPset так и файлы)
  • Создать список unblock если таковой отсутствует
  • Предоставить пользователю возможность подтверждать действия (касающиеся IPset) вручную
  • Просто порезолвить IP адреса из discord-voice-domains-list и записать их в discord-voice-ip-list

Подготовка и использование

  1. Убедитесь, что у вас установлены необходимые утилиты:

    • dig (часть пакета dnsutils)
    • ipset
  2. Склонируйте репозиторий:

$ git clone https://github.com/GhostRooter0953/discord-voice-ips.git
  1. Перейдите в директорию репо:
$ cd discord-voice-ips
  1. Запустите скрипт:
$ ./voice-ip-parser.sh

Процесс работы скрипта

  1. Очистка старых списков: Скрипт очищает файлы discord-voice-ip-list и discord-voice-ipset-list.

  2. Сброс кэша DNS: Производится сброс кэша DNS через отправку сигнала к dnsmasq.

  3. Парсинг доменов: Скрипт читает домены из файла discord-voice-domains-list, резолвит их в IP-адреса и записывает в discord-voice-ip-list и discord-voice-ipset-list.

  4. Создание списка unblock:

    • Если список unblock не существует, будет запрошено подтверждение на его создании.
    • В автоматическом режиме список создается без подтверждения.
  5. Очистка списка unblock:

    • Если список существует, будет запрошено подтверждение на его очистку.
    • В автоматическом режиме список очищается без подтверждения.
  6. Загрузка IP адресов в IPset:

    • После завершения парсинга, пользователю предлагается загрузить адреса из файла discord-voice-ipset-list в IPset.
  7. Вывод результатов: После выполнения всех действий выводится количество загруженных IP адресов.

Пример запуска в ручном режиме (без опций)

$ ./voice-ip-parser.sh
Очистка IP листов
Начинаем парсить IP голосовых серверов Discord
Парсим... Прогресс: 100%
Парсинг завершён
Чистим список 'unblock'? (Y/N): Y
Список 'unblock' очищен
Загружаем адреса в IPset? (Y/N): Y
Загружено 1430 IP адреса(ов) в список 'unblock'

Опции

  1. auto: Автоматический режим. В этом режиме все действия выполняются без запроса подтверждения у пользователя, а именно:
  • Создаётся IPset список unblock, если его нет
  • Очищается IPset список unblock
  • Загружаются IP в список unblock из discord-voice-ipset-list

Пример запуска в автоматическом режиме:

$ ./voice-ip-parser.sh auto
Очистка IP листов
Начинаем парсить IP голосовых серверов Discord
Парсим... Прогресс: 100%
Парсинг завершён
Список 'unblock' очищен
Загружено 1429 IP адреса(ов) в список 'unblock'
  1. noipset: Автоматический режим без IPset. Нужен для простого резолва IP с последующей записью вывода в файлы discord-voice-ip-list и discord-voice-ipset-list.

Пример запуска в режиме noipset:

$ ./voice-ip-parser.sh noipset
Очистка IP листов
Начинаем парсить IP голосовых серверов Discord
Парсим... Прогресс: 100%
Парсинг завершён
Пропускаем танцы с IPset... Список с IP можно найти в 'discord-voice-ip-list'

Примечания

  • Убедитесь, что вы запускаете скрипт с правами, достаточными для выполнения команд ipset и управления сетевыми настройками.
  • Убедитесь, что у вас установлены необходимые утилиты:
    • dig (часть пакета dnsutils)
    • ipset
  • Для получения информации об использовании утилиты ipset можно использовать следующую команду:
$ man ipset

Скрипт voice-domains-generator-fast

Этот скрипт предназначен для быстрой генерации и резолвинга доменных имен голосовых каналов Discord по заданным регионам. Задействуется parallel, что позволяет выполняться в несколько параллельных процессов (по умолчанию 60) значительно ускоряя генерацию и резолвинг.

Подготовка и использование

  1. Перед запуском убедитесь, что у вас установлены следующие компоненты:
  • bash
  • dig (часть пакета dnsutils)
  • parallel
  1. Склонируйте репозиторий:
$ git clone https://github.com/GhostRooter0953/discord-voice-ips.git
  1. Перейдите в директорию репо:
$ cd discord-voice-ips
  1. Запустите скрипт с опциональным аргументом в виде валидного региона либо без:
$ ./voice-domains-generator-fast dubai

Если аргументы не переданы, зарезолвятся домены регионов по 'умолчанию':

  • russia
  • bucharest
  • finland
  • frankfurt
  • madrid
  • milan
  • rotterdam
  • stockholm
  • warsaw

Переменные

  • default_regions: Массив регионов, с которых будут генерироваться домены. По умолчанию это массив из девяти регионов. Вы можете переопределить его при запуске скрипта.

  • total_domains: Общее количество доменных имен для генерации (по умолчанию 15000). Вы можете изменить это значение в самом начале скрипта, если хотите проверить меньше или больше доменов.

  • job или -j: Параметр, который позволяет задать количество параллельных процессов при резолвинге доменов. По умолчанию используется значение 60. Это число можно изменить в строке с вызовом команды parallel.

Результаты

Результаты резолвинга сохраняются в директориях под названием каждого региона:

  • regions/region/region-voice-resolved: Зарезолвленные домены.
  • regions/region/region-voice-domains: Список всех запрашиваемых доменов.
  • regions/region/region-voice-ip: IP адреса соответствующих доменов.
  • regions/region/region-voice-ipset: Команды для добавления IP адресов в ipset.

Пример работы скрипта voice-domains-generator-fast:

$ ./voice-domains-generator-fast.sh
Генерируем и резолвим домены для региона: russia
Прогресс: 100%
Успех!
Время запуска: 10.10.2024 в 21:00:07
Время выполнения: 00:00:46
Доменов зарезолвили: 166

Генерируем и резолвим домены для региона: bucharest
Прогресс: 100%
Успех!
Время запуска: 10.10.2024 в 21:00:53
Время выполнения: 00:00:43
Доменов зарезолвили: 67

...и так далее по дефолтному списку...

Скрипт voice-domains-generator

Этот скрипт имеет несколько ключевых отличий по сравнению с предыдущим. Вот основные моменты:

  1. Стиль написания и оболочка. Скрипт написан с использованием sh, в то время как первый использует bash - сделано для совместимости

  2. Определение регионов. В этом скрипте переменная default_regions определена как строка, а не массив:

  3. Обработка доменов. Вместо использования parallel для параллельного выполнения функций, этот скрипт обрабатывает каждое имя домена последовательно в цикле for и в один поток (очень медленно).

Пример работы скрипта voice-domains-generator:

$ ./voice-domains-generator.sh singapore
Генерируем и резолвим домены для региона: singapore
Прогресс: 100%
Успех!
Время запуска: 10.10.2024 в 21:22:23
Время выполнения: 00:06:43
Доменов зарезолвили: 336

Заключение

Хотя оба скрипта выполняют одну и ту же основную задачу — генерацию и резолвинг доменных имен, они различаются по стилю, эффективности и методам обработки данных. Второй скрипт более простой, но менее эффективный из-за последовательной обработки запросов к DNS-серверу.

Скрипт json-voice-ip-converter

  • Запускать его нужно после того как отработает генератор (чтобы конвертировать актуальные списки)
  • Результат работы автоматически запишется в каждый фолдер региона в формате amnezia-region-voice-ip.json
  • В корень репо также запишется общий список всех регионов в формате amnezia-voice-ip.json

Пример работы скрипта json-voice-ip-converter:

$ ./json-voice-ip-converter.sh
Конвертируем в JSON: bucharest
Конвертируем в JSON: dubai
Конвертируем в JSON: finland
Конвертируем в JSON: frankfurt
Конвертируем в JSON: madrid
Конвертируем в JSON: milan
Конвертируем в JSON: rotterdam
Конвертируем в JSON: russia
Конвертируем в JSON: singapore
Конвертируем в JSON: stockholm
Конвертируем в JSON: warsaw
Содержимое всех списков записано в amnezia-voice-ip.json.

Короткий мануал по работе с Amnezia

  • Стянуть репу
  • Включить раздельное туннелирование в Amnezia, в селекторе выбрать "Только адреса из списка должны открываться через VPN"
  • Импортировать список с общими доменами
  • Импортировать (без замены) список с голосовыми каналами (также можно взять и конкретный регион)
  • Подключиться к Amnezia и проверить работу Discord

To Do

  • Сканер и резолвер сабдоменов, т.к. периодчески возникают подобные сиутации
  • Механизм автоматической актуализации списков в репозитории
  • Всяческие мануалы

About

Discord Voice IPs

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • TeX 55.0%
  • HTML 43.6%
  • Python 1.1%
  • Shell 0.3%