Установка и запуск GhostNet

Это руководство поможет вам присоединиться к существующей сети GhostNet
или развернуть собственную приватную оверлейную сеть.


Часть 1: Присоединение к сети (для пользователей)

Если администратор предоставил вам данные для подключения, следуйте этим шагам.

1.1. Что вам понадобится?

Перед началом убедитесь, что у вас есть:

  1. Бинарный файл gna_agent: Для вашей ОС (Windows или Linux). Для Windows также требуется wintun.dll.
  2. Инвайт-токен: Уникальный одноразовый код формата UUID.
  3. Адрес Lighthouse: Публичный IP-адрес и порт сервера (например, 194.34.239.66:50000).
  4. Pre-Shared Key (PSK): Общий ключ сети (если он используется).

1.2. Быстрый старт (Smart Onboarding)

Этот процесс автоматически настроит вашего агента, получит сертификат и IP-адрес.

  1. Запустите gna_agent с правами администратора:

    • Windows: Кликните правой кнопкой по gna_agent.exe -> Запуск от имени администратора.
    • Linux: Откройте терминал в папке с агентом и выполните sudo ./gna_agent.
  2. Выберите "Быстрый старт": В интерактивном меню выберите опцию для присоединения по инвайт-токену.

  3. Введите данные:

    • Когда программа запросит инвайт-токен, вставьте его.
    • Если файл config.json еще не создан, вам будет предложено ввести адрес Lighthouse и PSK.
  4. Активация: Агент свяжется с сервером, обменяет токен на криптографические ключи и получит свой уникальный виртуальный IP (10.0.0.X). В папке появятся файлы node.key, cert.pem и обновленный config.json.

  5. Перезапуск и подключение: После успешной активации перезапустите gna_agent (снова с правами администратора) и выберите в главном меню "1. Подключиться к VPN".

1.3. Проверка подключения

  1. Сетевой интерфейс: В выводе команд ipconfig (Windows) или ip a (Linux) вы должны увидеть новый интерфейс ghost0 с вашим VIP.
  2. DNS и связь: Попробуйте пропинговать другие узлы по их именам, например ping base.ghost. Если пинг проходит, вы успешно подключены.

1.4. Установка доверия к Root CA (Опционально)

Для безопасного доступа к внутренним HTTPS-сервисам (например, панели управления на https://base:9000) без предупреждений браузера:

  1. Запустите меню gna_agent с правами администратора.
  2. Выберите пункт "10. Установить доверенный Root CA".
  3. Агент автоматически скачает корневой сертификат и добавит его в системное хранилище доверия.

Часть 2: Развертывание собственной сети (для администраторов)

Для создания своей инфраструктуры GhostNet вам потребуются три компонента: gna_ca_server, gna_lighthouse и gna_agent.

2.1. План развертывания

  • Сервер для CA и Lighthouse: Рекомендуется использовать один VPS (Linux) для простоты. На нем будут работать оба серверных компонента и локальный агент.
  • Сетевая безопасность: Настройте файрвол (например, ufw):
    • Разрешить всем: sudo ufw allow 50000/udp
    • Запретить всем (кроме VPN): sudo ufw deny 9000/tcp, sudo ufw deny 9001/tcp, sudo ufw deny 53/udp.
  • PSK: Придумайте надежный Pre-Shared Key (пароль сети).

2.2. Развертывание gna_ca_server (Центр Сертификации)

Этот компонент управляет ключами и сертификатами.

  1. Первичная инициализация:

    • Скопируйте бинарник gna_ca_server на ваш VPS.
    • Выполните один раз: sudo ./gna_ca_server --init-ca.
    • Результат: В папке появятся ca_key.pem, ca_cert.pem (основа доверия) и ca_database.db (база данных сертификатов).
  2. Запуск как службы:

    • Запустите sudo ./gna_ca_server, чтобы открыть интерактивное меню.
    • Выберите "7. Установка службы (Systemd)". Программа автоматически создаст и активирует ghost_ca.service.
    • Проверьте статус: sudo systemctl status ghost_ca. Служба должна быть active (running).

2.3. Развертывание gna_lighthouse (Сигнальный Сервер)

  1. Конфигурация:

    • Скопируйте gna_lighthouse на тот же VPS.
    • Создайте файл .env рядом с бинарником:
      GHOST_PSK="ваш_придуманный_ключ"
      
  2. Запуск как службы:

    • В gna_lighthouse есть встроенный установщик службы. Запустите его с флагом install: sudo ./gna_lighthouse install
    • Проверьте статус: sudo systemctl status ghost_lighthouse.

2.4. Настройка Локального Агента на сервере (VIP 10.0.0.1)

На сервере должен работать gna_agent, который будет "представлять" сам сервер в VPN-сети под VIP 10.0.0.1.

  1. Создайте конфиг: Рядом с бинарником gna_agent создайте файл config.json:

    {
      "interface_name": "ghost0",
      "local_udp": "0.0.0.0:50001",
      "remote_udp": "127.0.0.1:50000",
      "virtual_ip": "10.0.0.1",
      "psk": "ваш_придуманный_ключ",
      "admin_features": { "enabled": true },
      "is_exit_node": false
    }
    
    • local_udp: 50001 — чтобы не конфликтовать с Lighthouse на порту 50000.
    • remote_udp: 127.0.0.1:50000 — агент подключается к Lighthouse локально.
  2. Получите первый инвайт:

    • Запустите sudo ./gna_ca_server и войдите в меню.
    • Выберите "2. Создать новый инвайт".
    • Укажите Admins в качестве группы и 10.0.0.1 в качестве IP.
    • Скопируйте полученный токен.
  3. Активируйте агента:

    • Выполните sudo ./gna_agent --join ВАШ_ТОКЕН config.json.
  4. Запустите как службу:

    • Запустите sudo ./gna_agent, чтобы открыть меню.
    • Выберите "8. Установить службу". Программа создаст ghostnet.service.
    • Проверьте статус: sudo systemctl status ghostnet.

    2.5. Управление сетью и выдача инвайтов

Теперь, когда вся серверная инфраструктура работает, управление сетью осуществляется через веб-панель.

  1. Доступ к панели:

    • Так как вы настроили локальный агент (10.0.0.1) с admin_features: true, вы можете получить доступ к панели.
    • Запустите на своей рабочей машине (не на сервере) gna_agent и выберите "4. Запустить админ-режим".
    • Агент откроет в браузере защищенный туннель к панели управления.
  2. Выпуск инвайтов для пользователей:

    • В веб-панели перейдите в раздел NETWORK.
    • В левой колонке "New Invite" укажите, какой VIP вы хотите назначить новому узлу, его роль (группу) и срок действия токена.
    • Нажмите "GENERATE TOKEN".
    • Скопируйте полученный токен и отправьте его пользователю вместе с адресом Lighthouse и PSK.

Часть 3: Консольное меню gna_ca_server

Центр Сертификации имеет собственное интерактивное меню для прямого управления базой данных и ключами, минуя веб-интерфейс. Это полезно для первоначальной настройки или экстренного вмешательства.

Запустите меню командой sudo ./gna_ca_server.

=== GHOST-NET CA AUTHORITY v1.0 ===

Статус сервера: ONLINE (Port 9100)

Выберите действие:

  1. Список активных инвайтов
  2. Создать новый инвайт (CLI)
  3. Список выданных сертификатов
  4. Отозвать сертификат (Revoke)
  5. Полное удаление сертификата (Purge)
  6. Перегенерация Root CA (Опасно!)
  7. Установка службы (Systemd/Windows)
  8. Остановка/Запуск API
  9. Выход

Описание пунктов меню:

  1. Список активных инвайтов:

    • Показывает все токены, которые еще не были использованы, их группу, назначенный IP и срок годности.
  2. Создать новый инвайт (CLI):

    • Позволяет сгенерировать токен прямо из консоли. Полезно для создания самого первого административного инвайта для 10.0.0.1.
  3. Список выданных сертификатов:

    • Выводит полный реестр всех когда-либо выпущенных сертификатов, их статус (VALID / REVOKED) и серийный номер.
  4. Отозвать сертификат (Revoke):

    • Помечает сертификат как недействительный по его серийному номеру. Узел с отозванным сертификатом больше не сможет пройти аутентификацию на Lighthouse.
  5. Полное удаление сертификата (Purge):

    • Безвозвратно удаляет запись о сертификате из базы данных. Используйте с осторожностью.
  6. Перегенерация Root CA (Опасно!):

    • Действие: Удаляет старые файлы ca_cert.pem и ca_key.pem и создает новые.
    • Последствия: ВСЕ ранее выданные сертификаты в сети мгновенно станут недействительными. Все агенты потеряют доверие к сети и потребуют повторного онбординга. Используйте только в случае компрометации корневого ключа или для полного сброса сети.
  7. Установка службы:

    • Автоматически создает и активирует systemd сервис (ghost_ca.service) для запуска CA сервера в фоновом режиме.
  8. Остановка/Запуск API:

    • Временно останавливает или запускает веб-сервер на порту 9100, не выходя из меню.