Skip to content

Latest commit

 

History

History
344 lines (235 loc) · 20 KB

File metadata and controls

344 lines (235 loc) · 20 KB

Скрипт Sury Unlocker 🌐💡

Linux Distributions Bash Compatible Version 1.0 License

🇺🇸 Manual in English

Sury Unlocker Script — это Bash-скрипт, созданный в ответ на геоблокировку в июле 2024 года, которая ограничила доступ к packages.sury.org для IP-адресов из России. После того как Ондржей Сурый (Ondřej Surý) ввёл географические ограничения для своих PHP PPA-репозиториев, этот скрипт был разработан как законное решение для получения доступа к этим важным ресурсам для разработки. Скрипт использует OpenVPN с поддержкой split-туннелинга для обхода IP-блокировок, поддерживая как дистрибутивы на базе Debian, так и на базе RHEL. Хотя репозитории Sury доступны только для Debian-систем, скрипт можно использовать как на хост-системах, так и в Docker-контейнерах, вне зависимости от операционной системы хоста. Включает поддержку аутентификации VPN и инструменты управления репозиториями.

⚠️ ВНИМАНИЕ: Скрипт НЕ будет работать для локальной разработки на вашем компьютере в России

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

Скрипт предназначен для использования на серверах, находящихся в России

Если вам нужно решение для локальной разработки в России, рассмотрите использование HLVPN: https://t.me/s/highloadofficial

✨ Возможности

  • Поддержка разных дистрибутивов:
    • Системы на базе Debian: Полная поддержка с возможностью установки репозиториев Sury (Debian, Ubuntu, Linux Mint и др.)
    • Системы на базе RHEL: Работают как прокси-хост для VPN-туннеля. Идеально подходят для запуска Docker-контейнеров с Debian/Sury
  • Гибкое развёртывание:
    • На хост-системах RHEL можно запускать Docker-контейнеры с Debian и репозиториями Sury
    • VPN-туннель на хосте автоматически работает для всех контейнеров
  • Автоматическая настройка: Автоматически устанавливает и настраивает OpenVPN и утилиты для работы с DNS
  • Split-туннелинг: Перенаправляет только определённый трафик через VPN
  • Поддержка кастомных конфигураций:
    • Возможность указания пользовательских .ovpn файлов
    • Поддержка VPN-серверов с аутентификацией (логин/пароль)
  • Управление репозиториями Sury:
    • Установка репозиториев официальным методом
    • Возможность полного удаления репозиториев при необходимости

📥 Установка и предварительные требования

Системные требования

  • Поддерживаемые хост-системы:
    • Любой дистрибутив Linux (на базе Debian или RHEL). Системы на базе RHEL предназначены для проксирования трафика к packages.sury.org, в основном для дальнейшего запуска Docker контейнеров с PHP Sury.
  • Для репозиториев Sury:
    • Поддерживаются только системы на базе Debian (хост или контейнер)
  • Docker (опционально):
    • Поддерживается на любой хост-системе для работы в контейнеризированной среде

Конфигурация OpenVPN

  1. Получите .ovpn файл от вашего VPN-провайдера, находящегося за пределами России.
  2. Бесплатные OpenVPN конфигурации можно найти на FreeOpenVPN.org. Обязательно используйте TCP-серверы.
  3. Поместите .ovpn файл в ту же директорию, где находится скрипт.

Шаги установки

  1. Клонируйте репозиторий:

    Для систем на базе Debian:

    apt install git -y && \
    git clone https://github.com/alex2276564/sury-unlocker.git && \
    cd sury-unlocker

    Для систем на базе RHEL:

    yum install git -y && \
    git clone https://github.com/alex2276564/sury-unlocker.git && \
    cd sury-unlocker
  2. Подготовьте конфигурацию OpenVPN:

    • Поместите ваш .ovpn файл в директорию sury-unlocker.
    • Имя файла может быть любым, главное, чтобы он находился в одной папке со скриптом.
  3. Сделайте скрипт исполняемым:

    chmod +x sury-unlocker.sh
  4. Запустите скрипт:

    • С настройками по умолчанию:
    ./sury-unlocker.sh
    • Или с указанием пользовательского имени файла .ovpn:
    ./sury-unlocker.sh -path=your_custom_name.ovpn
  5. Удалите репозитории Sury (опционально):

    • Если после блокировки у вас появляется ошибка при apt update, используйте эту команду для удаления Sury репозиториев:
    ./sury-unlocker.sh -deletesuryrepositories
  6. Добавьте репозитории Sury официальным методом:

    ./sury-unlocker.sh -addsuryrepositories
    • Если появляется ошибка при выполнении команды addsuryrepositories, попробуйте следующее:
      • Завершите текущее VPN-соединение командой disableovpn:

        ./sury-unlocker.sh -disableovpn
      • Удалите старый .ovpn файл из текущей директории, если вы не использовали опцию -path.

      • Найдите новый бесплатный VPN-сервер, например, на FreeOpenVPN.org или OpenTunnel.net.

      • Снова подключитесь к VPN, используя новый .ovpn файл, и попробуйте снова добавить репозитории Sury. Повторяйте эти шаги до тех пор, пока репозитории не будут добавлены успешно.

  7. Установите необходимый PHP:

    • После успешного добавления репозиториев Sury вы можете установить нужную версию PHP, например:
    apt install php7.4
    • Обратите внимание, что установка PHP возможна только при активном VPN-соединении. Если VPN отключится, вам нужно будет повторно подключиться, используя новый VPN-сервер, и повторить попытку.

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

Перед запуском убедитесь, что ваш .ovpn файл находится в той же папке, что и скрипт.

Скрипт поддерживает множество опций для настройки его работы. Вот как его можно использовать:

Просмотреть справку

Чтобы увидеть все доступные опции и их описание:

./sury-unlocker.sh -help

Базовое использование

Запустите скрипт без аргументов, чтобы автоматически настроить OpenVPN с поддержкой split-туннелинга для доступа к packages.sury.org:

./sury-unlocker.sh

(Опционально) Кастомная конфигурация OpenVPN

Укажите пользовательский файл .ovpn с помощью опции -path:

./sury-unlocker.sh -path=/путь/к/вашему/имени_файла.ovpn

(Опционально) Предоставление учетных данных VPN

Если ваш VPN требует аутентификации, вы можете указать имя пользователя и пароль:

./sury-unlocker.sh -username=ваше_имя_пользователя -password=ваш_пароль

Установка репозиториев Sury

Чтобы установить репозитории Sury с помощью официального установщика (только для систем на базе Debian или Docker-контейнеров на базе Debian, использовать только при включённом VPN):

./sury-unlocker.sh -addsuryrepositories

Удаление репозиториев Sury

Чтобы удалить репозитории Sury и связанные с ними файлы из вашей системы, используйте опцию -deletesuryrepositories:

./sury-unlocker.sh -deletesuryrepositories

Отключение OpenVPN

Если нужно остановить демон OpenVPN, используйте опцию -disableovpn:

./sury-unlocker.sh -disableovpn

🐳 Интеграция с Docker

Вы можете включить Sury Unlocker Script в свой Dockerfile, чтобы обойти блокировку Sury.org при создании или запуске контейнеризированных приложений. В этом примере убедитесь, что ваш файл конфигурации OpenVPN your_custom_name.ovpn находится в той же директории, что и Dockerfile. Этот файл будет скопирован в контейнер в процессе сборки.

Важные замечания

  1. Чтобы запустить OpenVPN внутри контейнера, необходимо предоставить контейнеру дополнительные привилегии. Это можно сделать двумя способами:

    С использованием docker run:

    docker run --cap-add=NET_ADMIN --device=/dev/net/tun:/dev/net/tun your-image-name

    С использованием docker-compose.yml:

    services:
      your-service:
        build: .
        cap_add:
          - NET_ADMIN
        devices:
          - /dev/net/tun:/dev/net/tun
  2. Для хост-систем на базе Debian/RHEL: Если вы используете хост-систему на базе Debian или RHEL, вы можете запускать скрипт напрямую на хосте. После активации VPN на хосте все Docker-контейнеры автоматически будут использовать VPN-соединение через сеть хоста.

  3. В примере Dockerfile ниже: OpenVPN будет активен только на этапе сборки (например, при установке PHP 7.4). После запуска контейнера VPN-соединение в этом примере не будет автоматически установлено.

Пример Dockerfile

FROM debian:latest

# Обновляем систему и устанавливаем зависимости для Sury Unlocker Script
# Эти пакеты необходимы для запуска скрипта и управления OpenVPN
RUN apt-get update && apt-get install -y \
    git \
    openvpn \
    dnsutils

# Клонируем и настраиваем Sury Unlocker Script
RUN git clone https://github.com/alex2276564/sury-unlocker.git /opt/sury-unlocker
WORKDIR /opt/sury-unlocker
RUN chmod +x sury-unlocker.sh

# Копируем пользовательский файл .ovpn в контейнер
COPY your_custom_name.ovpn /opt/sury-unlocker/your_custom_name.ovpn

# Запускаем Sury Unlocker Script с пользовательской конфигурацией OpenVPN
RUN ./sury-unlocker.sh -path=/opt/sury-unlocker/your_custom_name.ovpn

# Устанавливаем репозитории Sury с помощью скрипта
RUN ./sury-unlocker.sh -addsuryrepositories

# Устанавливаем PHP 7.4 (или любой другой пакет из репозиториев Sury)
RUN apt-get install -y php7.4

Примечание

Без предоставления контейнеру соответствующих привилегий (включая возможность использовать устройство TUN и способность управлять сетью через NET_ADMIN) OpenVPN не будет работать внутри контейнера. Убедитесь, что вы запускаете ваш контейнер с необходимыми привилегиями, как показано в примерах выше.

🌐 Как это работает

Скрипт выполняет следующие шаги:

  1. Определение ОС и проверка зависимостей

    • Определяет операционную систему (Debian-based, RHEL-based или другая поддерживаемая система)
    • Проверяет наличие необходимых инструментов и устанавливает их, если нужно:
      • openvpn для подключения через VPN
      • dnsutils (для Debian) или bind-utils (для RHEL) для работы с DNS
  2. Определение IP-адреса Скрипт определяет IPv4-адрес packages.sury.org с помощью команды nslookup, обеспечивая использование актуального IP, даже если он изменится

  3. Обработка аутентификации VPN

    • Проверяет наличие параметров username/password
    • При наличии создает временный файл аутентификации
    • Автоматически интегрирует учетные данные в конфигурацию OpenVPN
  4. Изменение конфигурации OpenVPN Внесение изменений в предоставленный .ovpn файл для включения split-туннелинга:

    • route-nopull: предотвращает перенаправление всего трафика через VPN
    • Добавляет маршрут только для IP-адреса packages.sury.org
  5. Запуск OpenVPN-демона Запускает OpenVPN-демон в фоновом режиме с изменённой конфигурацией, перенаправляя через VPN только определённый трафик

  6. Управление репозиториями Sury (только для Debian-систем) При использовании соответствующих опций:

    • -addsuryrepositories: устанавливает репозитории через официальный установщик
    • -deletesuryrepositories: полностью удаляет все файлы репозиториев Sury
    • Автоматически проверяет совместимость системы перед операциями
  7. Управление VPN-соединением

    • -disableovpn: корректно останавливает OpenVPN процессы
    • Автоматически очищает временные файлы аутентификации
    • Восстанавливает стандартное сетевое поведение

🆘 Устранение неисправностей

Частые проблемы

  1. OpenVPN не запускается

    • Проверьте корректность файла .ovpn и его конфигурации.

    • Изучите системные логи:

      # Для систем на основе systemd
      journalctl -u openvpn
      
      # Или логи OpenVPN
      tail -f /var/log/openvpn.log
  2. Проблемы с подключением к VPN

    • Убедитесь, что VPN-сервер доступен.
    • Используйте .ovpn конфигурации с TCP.
    • Попробуйте альтернативные .ovpn файлы с FreeOpenVPN.org или OpenTunnel.net.

🆘 Поддержка

Если у вас возникнут какие-либо проблемы или у вас есть предложения по улучшению, пожалуйста, создайте issue в этом репозитории.

📄 Лицензия

Проект распространяется по лицензии MIT. Подробнее см. в файле LICENSE.

👨‍💻 Автор

[Alex] - [https://github.com/alex2276564]

Если вам понравился этот проект или он оказался полезным, поставьте ⭐ на GitHub!

🤝 Вклад в проект

Будем рады вашим предложениям, улучшениям и исправлениям. Пожалуйста, создавайте issue и отправляйте запросы на слияние.

Как внести вклад

  1. Сделайте форк репозитория.
  2. Создайте новую ветку (git checkout -b feature/YourFeature).
  3. Закоммитьте ваши изменения (`git commit -m 'Add some feature').
  4. Отправьте изменения в ветку (git push origin feature/YourFeature).
  5. Откройте Pull Request.

Спасибо, что используете Sury Unlocker Script! Надеемся, он поможет вам обойти блокировку Sury.org через OpenVPN. 🚀🔓🌐