Files
Phantom/release/docs/phantom_installation_guide_ru.md

44 KiB
Raw Blame History

Руководство по установке и запуску Phantom Protocol

Автор: Manus AI
Дата: 22 августа 2025 г.
Версия: 1.0
Язык: Русский

Введение

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

Система была разработана для создания анонимных туннелей в интернете с использованием распределенной хеш-таблицы Kademlia и многослойного шифрования. В отличие от традиционных VPN решений, Phantom Protocol использует концепцию "фантомных адресов" и децентрализованную архитектуру, что обеспечивает более высокий уровень анонимности и устойчивости к цензуре.

Данное руководство предназначено для системных администраторов, исследователей в области сетевой безопасности и разработчиков, заинтересованных в изучении и развертывании систем анонимной коммуникации. Предполагается базовое знание операционных систем Linux, сетевых протоколов и основ криптографии.

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

1.1 Операционная система

Phantom Protocol разработан для операционных систем семейства Unix и протестирован на следующих платформах:

  • Ubuntu 18.04 LTS и выше - рекомендуемая платформа для развертывания
  • Debian 10 (Buster) и выше - полная совместимость
  • CentOS 7/8 и RHEL 7/8 - требует дополнительной настройки репозиториев
  • Fedora 30 и выше - поддерживается с минимальными модификациями
  • FreeBSD 12.0 и выше - экспериментальная поддержка

Система требует ядро Linux версии 2.6.24 или выше с поддержкой TUN/TAP интерфейсов. Большинство современных дистрибутивов Linux включают эту поддержку по умолчанию. Для проверки наличия поддержки TUN/TAP выполните команду:

lsmod | grep tun

Если модуль не загружен, его можно загрузить командой:

sudo modprobe tun

1.2 Аппаратные требования

Минимальные аппаратные требования для запуска одного узла Phantom Protocol:

  • Процессор: x86_64 архитектура, минимум 1 ГГц
  • Оперативная память: минимум 512 МБ, рекомендуется 2 ГБ
  • Дисковое пространство: минимум 100 МБ для установки, дополнительно 1 ГБ для данных DHT
  • Сетевое подключение: стабильное интернет-соединение с возможностью входящих соединений

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

  • Процессор: многоядерный процессор x86_64, 2 ГГц и выше
  • Оперативная память: 4 ГБ и выше для обработки множественных соединений
  • Дисковое пространство: SSD диск с минимум 10 ГБ свободного места
  • Сетевое подключение: выделенный канал с минимальной задержкой

1.3 Программные зависимости

Phantom Protocol требует следующие библиотеки и инструменты для сборки и работы:

Обязательные зависимости:

  • GCC 4.8 или выше - компилятор C с поддержкой стандарта C99
  • GNU Make - система сборки проекта
  • OpenSSL 1.0.2 или выше - криптографическая библиотека
  • libxml2 - библиотека для парсинга XML конфигурационных файлов
  • libprotobuf-c - библиотека для работы с Protocol Buffers
  • protoc-c - компилятор Protocol Buffers для языка C
  • pthread - библиотека для многопоточности (обычно входит в glibc)

Дополнительные инструменты:

  • pkg-config - утилита для управления флагами компиляции
  • git - система контроля версий для получения исходного кода
  • openssl - утилиты командной строки для работы с сертификатами
  • tunctl - утилита для управления TUN/TAP интерфейсами (опционально)

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

Для корректной работы Phantom Protocol необходимо обеспечить следующие сетевые условия:

Входящие соединения: Узел должен принимать входящие TCP соединения на настроенном порту (по умолчанию 8080). Это требует соответствующей настройки файрвола и, при необходимости, проброса портов на маршрутизаторе.

Исходящие соединения: Узел должен иметь возможность устанавливать исходящие TCP соединения к другим узлам в сети на различных портах. Большинство корпоративных файрволов разрешают такие соединения по умолчанию.

DNS разрешение: Система использует DNS для разрешения имен узлов, указанных в конфигурационных файлах. Убедитесь, что DNS сервер доступен и корректно настроен.

Пропускная способность: Минимальная пропускная способность 1 Мбит/с для базовой функциональности, рекомендуется 10 Мбит/с и выше для обработки множественных туннелей.

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

2. Установка зависимостей

2.1 Ubuntu/Debian

Для установки всех необходимых зависимостей на системах Ubuntu или Debian выполните следующие команды:

# Обновление списка пакетов
sudo apt update

# Установка основных инструментов разработки
sudo apt install -y build-essential gcc make pkg-config git

# Установка криптографических библиотек
sudo apt install -y libssl-dev openssl

# Установка библиотеки для работы с XML
sudo apt install -y libxml2-dev

# Установка Protocol Buffers для C
sudo apt install -y libprotobuf-c-dev protobuf-c-compiler

# Установка дополнительных утилит
sudo apt install -y uml-utilities net-tools

После установки проверьте версии установленных компонентов:

gcc --version
openssl version
pkg-config --version
protoc-c --version

2.2 CentOS/RHEL/Fedora

Для систем на базе Red Hat используйте следующие команды:

CentOS/RHEL 7/8:

# Установка EPEL репозитория (для CentOS/RHEL)
sudo yum install -y epel-release

# Установка основных инструментов
sudo yum groupinstall -y "Development Tools"
sudo yum install -y gcc make pkg-config git

# Установка криптографических библиотек
sudo yum install -y openssl-devel openssl

# Установка библиотеки для работы с XML
sudo yum install -y libxml2-devel

# Установка Protocol Buffers для C
sudo yum install -y protobuf-c-devel protobuf-c-compiler

Fedora:

# Установка основных инструментов
sudo dnf groupinstall -y "Development Tools"
sudo dnf install -y gcc make pkg-config git

# Установка криптографических библиотек
sudo dnf install -y openssl-devel openssl

# Установка библиотеки для работы с XML
sudo dnf install -y libxml2-devel

# Установка Protocol Buffers для C
sudo dnf install -y protobuf-c-devel protobuf-c-compiler

2.3 Сборка зависимостей из исходного кода

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

Сборка libprotobuf-c:

# Загрузка исходного кода
wget https://github.com/protobuf-c/protobuf-c/releases/download/v1.4.1/protobuf-c-1.4.1.tar.gz
tar -xzf protobuf-c-1.4.1.tar.gz
cd protobuf-c-1.4.1

# Конфигурация и сборка
./configure --prefix=/usr/local
make -j$(nproc)
sudo make install

# Обновление библиотечного кэша
sudo ldconfig

Сборка OpenSSL (если требуется новая версия):

# Загрузка исходного кода
wget https://www.openssl.org/source/openssl-1.1.1k.tar.gz
tar -xzf openssl-1.1.1k.tar.gz
cd openssl-1.1.1k

# Конфигурация и сборка
./config --prefix=/usr/local/ssl --openssldir=/usr/local/ssl shared zlib
make -j$(nproc)
sudo make install

# Добавление в PATH
echo 'export PATH="/usr/local/ssl/bin:$PATH"' >> ~/.bashrc
echo 'export LD_LIBRARY_PATH="/usr/local/ssl/lib:$LD_LIBRARY_PATH"' >> ~/.bashrc
source ~/.bashrc

2.4 Проверка установки зависимостей

После установки всех зависимостей выполните проверку их доступности:

# Проверка компилятора C
gcc --version | head -1

# Проверка OpenSSL
openssl version

# Проверка libxml2
xml2-config --version

# Проверка protobuf-c
protoc-c --version

# Проверка pkg-config
pkg-config --version

# Проверка наличия необходимых заголовочных файлов
ls /usr/include/openssl/ssl.h
ls /usr/include/libxml2/libxml/parser.h
ls /usr/include/protobuf-c/protobuf-c.h

Если какие-либо файлы отсутствуют, убедитесь, что установлены пакеты разработки (dev или devel пакеты) для соответствующих библиотек.

2.5 Настройка окружения

Для корректной работы системы сборки может потребоваться настройка переменных окружения:

# Добавление путей к библиотекам (если установлены в нестандартные места)
export PKG_CONFIG_PATH="/usr/local/lib/pkgconfig:$PKG_CONFIG_PATH"
export LD_LIBRARY_PATH="/usr/local/lib:$LD_LIBRARY_PATH"

# Добавление в профиль пользователя для постоянного использования
echo 'export PKG_CONFIG_PATH="/usr/local/lib/pkgconfig:$PKG_CONFIG_PATH"' >> ~/.bashrc
echo 'export LD_LIBRARY_PATH="/usr/local/lib:$LD_LIBRARY_PATH"' >> ~/.bashrc

Перезагрузите терминал или выполните source ~/.bashrc для применения изменений.

3. Получение и сборка исходного кода

3.1 Извлечение архива

Если у вас есть архив с исходным кодом Phantom Protocol, извлеките его в подходящую директорию:

# Создание рабочей директории
mkdir -p ~/phantom-protocol
cd ~/phantom-protocol

# Извлечение архива (замените на путь к вашему архиву)
tar -xzf phantom-r30-2011-09-12-181357.tar.gz

# Переход в директорию проекта
cd phantom

3.2 Структура проекта

После извлечения вы увидите следующую структуру директорий:

phantom/
├── README                 # Основная документация
├── LICENSE               # Лицензионное соглашение
├── docs/                 # Дополнительная документация
├── protos/               # Protocol Buffers схемы
│   ├── generate_protos.sh
│   ├── kademlia.proto
│   └── setuppackage.proto
├── scripts/              # Вспомогательные скрипты
├── src/                  # Исходный код
│   ├── Makefile
│   ├── *.c и *.h файлы
│   └── test/             # Тестовые конфигурации
└── trunk/                # SVN trunk (альтернативная версия)

3.3 Генерация Protocol Buffers

Перед сборкой основного проекта необходимо сгенерировать C код из Protocol Buffers схем:

# Переход в директорию с protobuf схемами
cd protos

# Выполнение скрипта генерации
./generate_protos.sh

# Проверка созданных файлов
ls -la ../src/*.pb-c.*

Скрипт должен создать следующие файлы в директории src/:

  • kademlia.pb-c.c и kademlia.pb-c.h
  • setuppackage.pb-c.c и setuppackage.pb-c.h

3.4 Сборка основного проекта

Теперь можно приступить к сборке основного проекта:

# Переход в директорию с исходным кодом
cd ../src

# Проверка Makefile
cat Makefile | head -20

# Сборка проекта
make clean  # Очистка предыдущих сборок
make all    # Сборка всех целей

Процесс сборки должен создать два исполняемых файла:

  • phantom - основной демон
  • phantomd - упрощенная версия демона

3.5 Устранение проблем сборки

Проблема: отсутствуют заголовочные файлы

# Ошибка: fatal error: openssl/ssl.h: No such file or directory
sudo apt install libssl-dev

# Ошибка: fatal error: libxml/parser.h: No such file or directory  
sudo apt install libxml2-dev

# Ошибка: fatal error: protobuf-c/protobuf-c.h: No such file or directory
sudo apt install libprotobuf-c-dev

Проблема: ошибки линковки

# Ошибка: undefined reference to SSL_*
# Убедитесь, что libssl установлена
pkg-config --libs openssl

# Ошибка: undefined reference to protobuf_c_*
# Убедитесь, что libprotobuf-c установлена
pkg-config --libs libprotobuf-c

Проблема: устаревший компилятор

# Проверка версии GCC
gcc --version

# Для Ubuntu/Debian - обновление до более новой версии
sudo apt install gcc-9
export CC=gcc-9
make clean && make all

3.6 Проверка сборки

После успешной сборки проверьте созданные файлы:

# Проверка исполняемых файлов
ls -la phantom phantomd

# Проверка зависимостей
ldd phantom

# Тестовый запуск с выводом справки
./phantom --help 2>&1 || echo "Справка недоступна, но файл собран"

3.7 Установка в систему (опционально)

Для установки в системные директории:

# Создание директорий
sudo mkdir -p /usr/local/bin
sudo mkdir -p /usr/local/share/phantom
sudo mkdir -p /etc/phantom

# Копирование исполняемых файлов
sudo cp phantom phantomd /usr/local/bin/

# Копирование конфигурационных файлов
sudo cp -r test/ /usr/local/share/phantom/examples

# Установка прав доступа
sudo chmod 755 /usr/local/bin/phantom
sudo chmod 755 /usr/local/bin/phantomd

3.8 Сборка дополнительных утилит

В директории scripts/ находятся дополнительные утилиты:

# Переход в директорию скриптов
cd ../scripts

# Сборка утилит (если есть Makefile)
make

# Или ручная сборка tunctl утилиты
gcc -o tunctl tunctl.c
sudo cp tunctl /usr/local/bin/

Эти утилиты помогают в настройке TUN интерфейсов для работы с Phantom Protocol.

4. Настройка и конфигурация

4.1 Генерация криптографических материалов

Phantom Protocol требует несколько типов сертификатов для каждого узла. В директории test/ находится скрипт для генерации тестовых сертификатов:

# Переход в директорию тестов
cd test

# Просмотр скрипта генерации сертификатов
cat gencerts.sh

# Выполнение скрипта (создает сертификаты для тестовой сети)
./gencerts.sh

Для создания собственных сертификатов используйте следующие команды:

# Создание директории для сертификатов
mkdir -p ~/phantom-certs
cd ~/phantom-certs

# Генерация приватного ключа для communication certificate
openssl genrsa -out comm-privkey.pem 2048

# Создание самоподписанного communication certificate
openssl req -new -x509 -key comm-privkey.pem -out comm-cert.pem -days 365 \
    -subj "/C=RU/ST=Moscow/L=Moscow/O=Phantom/OU=Node/CN=phantom-node"

# Генерация ключей для construction certificate
openssl genrsa -out const-privkey.pem 2048
openssl req -new -x509 -key const-privkey.pem -out const-cert.pem -days 365 \
    -subj "/C=RU/ST=Moscow/L=Moscow/O=Phantom/OU=Construction/CN=phantom-construction"

# Генерация ключей для routing certificate  
openssl genrsa -out route-privkey.pem 2048
openssl req -new -x509 -key route-privkey.pem -out route-cert.pem -days 365 \
    -subj "/C=RU/ST=Moscow/L=Moscow/O=Phantom/OU=Routing/CN=phantom-routing"

# Установка правильных прав доступа
chmod 600 *-privkey.pem
chmod 644 *-cert.pem

4.2 Создание конфигурационного файла

Создайте конфигурационный файл на основе примера:

# Создание директории конфигурации
mkdir -p ~/phantom-config
cd ~/phantom-config

# Создание основного конфигурационного файла
cat > phantom.conf << 'EOF'
<?xml version="1.0" encoding="iso-8859-1" ?>

<phantomconfig>
    <!-- Сетевые настройки -->
    <ip>0.0.0.0</ip>
    <port>8080</port>
    
    <!-- Параметры алгоритма -->
    <rsa_len>2048</rsa_len>
    <xnodes>4</xnodes>
    <ynodes>14</ynodes>
    <keys>30</keys>
    
    <!-- Настройки Kademlia DHT -->
    <kadnodefile>kadnodes.list</kadnodefile>
    <kaddata>/tmp/phantom-kad</kaddata>
    
    <!-- Пути к сертификатам -->
    <communicationcertificate>~/phantom-certs/comm-cert.pem</communicationcertificate>
    <constructioncertificate>~/phantom-certs/const-cert.pem</constructioncertificate>
    <routingcertificate>~/phantom-certs/route-cert.pem</routingcertificate>
    
    <!-- Пути к приватным ключам -->
    <communicationcertificateprivate>~/phantom-certs/comm-privkey.pem</communicationcertificateprivate>
    <constructioncertificateprivate>~/phantom-certs/const-privkey.pem</constructioncertificateprivate>
    <routingcertificateprivate>~/phantom-certs/route-privkey.pem</routingcertificateprivate>
</phantomconfig>
EOF

4.3 Создание файла начальных узлов

Создайте файл со списком известных узлов для подключения к сети:

# Создание файла начальных узлов (пример)
cat > kadnodes.list << 'EOF'
# Формат: IP:PORT
# Замените на реальные адреса узлов Phantom Protocol
127.0.0.1:8080
192.168.1.100:8080
phantom.example.com:8080
EOF

4.4 Настройка сетевого окружения

Настройка файрвола (iptables):

# Разрешение входящих соединений на порту Phantom
sudo iptables -A INPUT -p tcp --dport 8080 -j ACCEPT

# Разрешение исходящих соединений
sudo iptables -A OUTPUT -p tcp --dport 8080 -j ACCEPT

# Сохранение правил (Ubuntu/Debian)
sudo iptables-save > /etc/iptables/rules.v4

Настройка файрвола (ufw):

# Разрешение порта для Phantom Protocol
sudo ufw allow 8080/tcp

# Проверка статуса
sudo ufw status

Создание TUN интерфейса:

# Создание TUN интерфейса для туннелирования
sudo ip tuntap add dev phantom0 mode tun

# Назначение IP адреса интерфейсу
sudo ip addr add 10.0.0.1/24 dev phantom0

# Активация интерфейса
sudo ip link set phantom0 up

# Проверка создания интерфейса
ip addr show phantom0

4.5 Настройка системных сервисов

Создание systemd сервиса:

# Создание файла сервиса
sudo tee /etc/systemd/system/phantom.service << 'EOF'
[Unit]
Description=Phantom Protocol Node
After=network.target

[Service]
Type=simple
User=phantom
Group=phantom
WorkingDirectory=/home/phantom
ExecStart=/usr/local/bin/phantom /home/phantom/phantom.conf
Restart=always
RestartSec=10

[Install]
WantedBy=multi-user.target
EOF

# Создание пользователя для сервиса
sudo useradd -r -s /bin/false phantom
sudo mkdir -p /home/phantom
sudo chown phantom:phantom /home/phantom

# Копирование конфигурации
sudo cp ~/phantom-config/* /home/phantom/
sudo chown phantom:phantom /home/phantom/*

# Включение и запуск сервиса
sudo systemctl daemon-reload
sudo systemctl enable phantom

4.6 Настройка логирования

Создание директории для логов:

# Создание директории логов
sudo mkdir -p /var/log/phantom
sudo chown phantom:phantom /var/log/phantom

# Настройка ротации логов
sudo tee /etc/logrotate.d/phantom << 'EOF'
/var/log/phantom/*.log {
    daily
    missingok
    rotate 30
    compress
    delaycompress
    notifempty
    create 644 phantom phantom
}
EOF

4.7 Проверка конфигурации

Перед запуском проверьте корректность конфигурации:

# Проверка синтаксиса XML конфигурации
xmllint --noout phantom.conf

# Проверка доступности сертификатов
openssl x509 -in ~/phantom-certs/comm-cert.pem -text -noout

# Проверка соответствия ключа и сертификата
openssl x509 -noout -modulus -in ~/phantom-certs/comm-cert.pem | openssl md5
openssl rsa -noout -modulus -in ~/phantom-certs/comm-privkey.pem | openssl md5

# Проверка сетевой доступности
netstat -tuln | grep :8080

4.8 Настройка безопасности

Ограничение доступа к файлам:

# Установка правильных прав доступа
chmod 600 ~/phantom-certs/*-privkey.pem
chmod 644 ~/phantom-certs/*-cert.pem
chmod 644 ~/phantom-config/phantom.conf
chmod 644 ~/phantom-config/kadnodes.list

# Создание резервных копий ключей
tar -czf phantom-keys-backup.tar.gz ~/phantom-certs/
gpg -c phantom-keys-backup.tar.gz
rm phantom-keys-backup.tar.gz

Настройка SELinux (если используется):

# Проверка статуса SELinux
sestatus

# Создание политики для Phantom (если необходимо)
sudo setsebool -P allow_execstack 1
sudo semanage port -a -t http_port_t -p tcp 8080

5. Запуск и тестирование

5.1 Первый запуск

Перед первым запуском убедитесь, что все зависимости установлены и конфигурация корректна:

# Переход в директорию с исполняемыми файлами
cd ~/phantom-protocol/phantom/src

# Проверка наличия всех необходимых файлов
ls -la phantom phantomd
ls -la ~/phantom-config/phantom.conf
ls -la ~/phantom-certs/*.pem

# Тестовый запуск с выводом отладочной информации
./phantom ~/phantom-config/phantom.conf

При первом запуске система выполнит следующие действия:

  • Загрузка и проверка конфигурационного файла
  • Инициализация криптографических модулей
  • Создание сетевого сервера на указанном порту
  • Инициализация Kademlia DHT
  • Попытка подключения к узлам из файла kadnodes.list

5.2 Мониторинг запуска

Для мониторинга процесса запуска используйте следующие команды в отдельных терминалах:

Мониторинг сетевых соединений:

# Проверка прослушивания порта
sudo netstat -tuln | grep :8080

# Мониторинг активных соединений
watch "sudo netstat -tun | grep :8080"

# Проверка с помощью ss (современная альтернатива netstat)
ss -tuln | grep :8080

Мониторинг системных ресурсов:

# Мониторинг использования CPU и памяти
top -p $(pgrep phantom)

# Детальная информация о процессе
ps aux | grep phantom

# Мониторинг файловых дескрипторов
lsof -p $(pgrep phantom)

Мониторинг логов:

# Если используется systemd
sudo journalctl -u phantom -f

# Если используются файлы логов
tail -f /var/log/phantom/phantom.log

5.3 Проверка функциональности

Проверка DHT функциональности:

# Проверка подключения к другим узлам
# (эта информация должна появиться в логах)
grep -i "connected\|node" /var/log/phantom/phantom.log

# Проверка операций DHT
grep -i "store\|find\|ping" /var/log/phantom/phantom.log

Проверка криптографических операций:

# Проверка загрузки сертификатов
grep -i "certificate\|key" /var/log/phantom/phantom.log

# Проверка SSL соединений
grep -i "ssl\|tls" /var/log/phantom/phantom.log

Тестирование сетевой связности:

# Проверка доступности узла извне
telnet localhost 8080

# Проверка с другого компьютера
telnet YOUR_IP_ADDRESS 8080

# Проверка с помощью nmap
nmap -p 8080 localhost

5.4 Диагностика проблем

Проблемы с запуском:

# Проверка ошибок в конфигурации
./phantom ~/phantom-config/phantom.conf 2>&1 | grep -i error

# Проверка доступности файлов сертификатов
for cert in ~/phantom-certs/*.pem; do
    echo "Checking $cert:"
    openssl x509 -in "$cert" -noout -text 2>/dev/null || echo "Invalid certificate"
done

# Проверка прав доступа
ls -la ~/phantom-certs/
ls -la ~/phantom-config/

Проблемы с сетью:

# Проверка занятости порта
sudo lsof -i :8080

# Проверка файрвола
sudo iptables -L | grep 8080
sudo ufw status | grep 8080

# Проверка доступности DNS
nslookup phantom.example.com

Проблемы с зависимостями:

# Проверка динамических библиотек
ldd phantom

# Проверка отсутствующих библиотек
ldd phantom | grep "not found"

# Проверка версий библиотек
pkg-config --modversion openssl
pkg-config --modversion libxml-2.0
pkg-config --modversion libprotobuf-c

5.5 Тестирование туннелирования

После успешного запуска и подключения к сети можно протестировать функциональность туннелирования:

Создание тестового туннеля:

# Проверка создания TUN интерфейса
ip addr show phantom0

# Тестирование маршрутизации через туннель
ping -I phantom0 8.8.8.8

# Проверка трафика через туннель
tcpdump -i phantom0 -n

Тестирование анонимности:

# Проверка реального IP адреса
curl ifconfig.me

# Проверка IP через туннель (если настроен)
curl --interface phantom0 ifconfig.me

5.6 Производительное тестирование

Тестирование пропускной способности:

# Установка iperf3 для тестирования
sudo apt install iperf3

# Запуск сервера iperf3
iperf3 -s -p 5001

# Тестирование через туннель (с другого узла)
iperf3 -c TARGET_IP -p 5001 -t 60

Тестирование задержки:

# Измерение задержки до других узлов
ping -c 10 TARGET_NODE_IP

# Измерение задержки через туннель
ping -I phantom0 -c 10 TARGET_IP

Мониторинг ресурсов под нагрузкой:

# Мониторинг CPU и памяти
htop

# Мониторинг сетевого трафика
iftop -i phantom0

# Мониторинг дискового I/O
iotop

5.7 Автоматизация тестирования

Создайте скрипт для автоматического тестирования:

#!/bin/bash
# phantom-test.sh - Скрипт тестирования Phantom Protocol

echo "=== Тестирование Phantom Protocol ==="

# Проверка процесса
if pgrep phantom > /dev/null; then
    echo "✓ Процесс phantom запущен"
else
    echo "✗ Процесс phantom не найден"
    exit 1
fi

# Проверка порта
if netstat -tuln | grep :8080 > /dev/null; then
    echo "✓ Порт 8080 прослушивается"
else
    echo "✗ Порт 8080 не прослушивается"
fi

# Проверка TUN интерфейса
if ip addr show phantom0 > /dev/null 2>&1; then
    echo "✓ TUN интерфейс phantom0 создан"
else
    echo "✗ TUN интерфейс phantom0 не найден"
fi

# Проверка подключений
CONNECTIONS=$(netstat -tun | grep :8080 | wc -l)
echo " Активных соединений: $CONNECTIONS"

# Проверка использования ресурсов
CPU=$(ps -o %cpu -p $(pgrep phantom) --no-headers)
MEM=$(ps -o %mem -p $(pgrep phantom) --no-headers)
echo " Использование CPU: ${CPU}%"
echo " Использование памяти: ${MEM}%"

echo "=== Тестирование завершено ==="

Сделайте скрипт исполняемым и запустите:

chmod +x phantom-test.sh
./phantom-test.sh

6. Устранение неполадок

6.1 Частые проблемы и решения

Проблема: "Permission denied" при запуске

# Решение: проверка прав доступа
ls -la phantom
chmod +x phantom

# Проверка прав на конфигурационные файлы
ls -la ~/phantom-config/
chmod 644 ~/phantom-config/phantom.conf

Проблема: "Address already in use"

# Поиск процесса, использующего порт
sudo lsof -i :8080
sudo netstat -tuln | grep :8080

# Завершение конфликтующего процесса
sudo kill -9 PID_ПРОЦЕССА

# Или изменение порта в конфигурации
sed -i 's/<port>8080<\/port>/<port>8081<\/port>/' ~/phantom-config/phantom.conf

Проблема: "Certificate verification failed"

# Проверка валидности сертификатов
openssl x509 -in ~/phantom-certs/comm-cert.pem -noout -dates

# Регенерация сертификатов
cd ~/phantom-certs
rm *.pem
# Повторите процедуру генерации из раздела 4.1

Проблема: "Cannot create TUN interface"

# Проверка поддержки TUN/TAP
lsmod | grep tun

# Загрузка модуля TUN
sudo modprobe tun

# Проверка прав доступа к /dev/net/tun
ls -la /dev/net/tun
sudo chmod 666 /dev/net/tun

6.2 Диагностические команды

Полная диагностика системы:

#!/bin/bash
# phantom-diagnostics.sh

echo "=== Диагностика Phantom Protocol ==="

echo "1. Проверка зависимостей:"
echo -n "GCC: "; gcc --version 2>/dev/null | head -1 || echo "НЕ УСТАНОВЛЕН"
echo -n "OpenSSL: "; openssl version 2>/dev/null || echo "НЕ УСТАНОВЛЕН"
echo -n "libxml2: "; xml2-config --version 2>/dev/null || echo "НЕ УСТАНОВЛЕН"
echo -n "protobuf-c: "; protoc-c --version 2>/dev/null || echo "НЕ УСТАНОВЛЕН"

echo -e "\n2. Проверка файлов:"
echo -n "Исполняемый файл: "; ls phantom 2>/dev/null && echo "НАЙДЕН" || echo "НЕ НАЙДЕН"
echo -n "Конфигурация: "; ls ~/phantom-config/phantom.conf 2>/dev/null && echo "НАЙДЕНА" || echo "НЕ НАЙДЕНА"

echo -e "\n3. Проверка сертификатов:"
for cert in ~/phantom-certs/*.pem; do
    if [[ -f "$cert" ]]; then
        echo -n "$(basename $cert): "
        openssl x509 -in "$cert" -noout -subject 2>/dev/null && echo "ВАЛИДНЫЙ" || echo "НЕВАЛИДНЫЙ"
    fi
done

echo -e "\n4. Проверка сети:"
echo -n "Порт 8080: "; netstat -tuln | grep :8080 >/dev/null && echo "ЗАНЯТ" || echo "СВОБОДЕН"
echo -n "TUN интерфейс: "; ip addr show phantom0 >/dev/null 2>&1 && echo "СОЗДАН" || echo "НЕ СОЗДАН"

echo -e "\n5. Проверка процессов:"
if pgrep phantom >/dev/null; then
    echo "Phantom процесс: ЗАПУЩЕН (PID: $(pgrep phantom))"
    echo "CPU: $(ps -o %cpu -p $(pgrep phantom) --no-headers)%"
    echo "Память: $(ps -o %mem -p $(pgrep phantom) --no-headers)%"
else
    echo "Phantom процесс: НЕ ЗАПУЩЕН"
fi

echo "=== Диагностика завершена ==="

6.3 Логирование и отладка

Включение детального логирования:

Модифицируйте конфигурационный файл для включения отладочного режима:

<!-- Добавьте в phantom.conf -->
<debug>true</debug>
<loglevel>DEBUG</loglevel>
<logfile>/var/log/phantom/phantom-debug.log</logfile>

Анализ логов:

# Поиск ошибок в логах
grep -i error /var/log/phantom/*.log

# Поиск предупреждений
grep -i warning /var/log/phantom/*.log

# Анализ сетевой активности
grep -i "connection\|socket" /var/log/phantom/*.log

# Анализ DHT операций
grep -i "kademlia\|dht\|store\|find" /var/log/phantom/*.log

6.4 Восстановление после сбоев

Автоматическое восстановление:

Создайте скрипт мониторинга и автоматического перезапуска:

#!/bin/bash
# phantom-watchdog.sh

PHANTOM_PID=$(pgrep phantom)
CONFIG_FILE="$HOME/phantom-config/phantom.conf"
LOG_FILE="/var/log/phantom/watchdog.log"

if [ -z "$PHANTOM_PID" ]; then
    echo "$(date): Phantom не запущен, перезапуск..." >> $LOG_FILE
    cd ~/phantom-protocol/phantom/src
    ./phantom $CONFIG_FILE >> $LOG_FILE 2>&1 &
    echo "$(date): Phantom перезапущен с PID $!" >> $LOG_FILE
else
    echo "$(date): Phantom работает (PID: $PHANTOM_PID)" >> $LOG_FILE
fi

Добавьте в crontab для автоматического выполнения:

# Редактирование crontab
crontab -e

# Добавьте строку для проверки каждые 5 минут
*/5 * * * * /path/to/phantom-watchdog.sh

7. Заключение

7.1 Резюме установки

Данное руководство предоставило полную инструкцию по установке, настройке и запуску системы Phantom Protocol. Основные этапы включали:

  1. Подготовка системы - установка необходимых зависимостей и инструментов разработки
  2. Сборка проекта - компиляция исходного кода и создание исполняемых файлов
  3. Генерация криптографических материалов - создание сертификатов и ключей для безопасной работы
  4. Настройка конфигурации - создание конфигурационных файлов и настройка сетевого окружения
  5. Запуск и тестирование - проверка функциональности и диагностика проблем

7.2 Рекомендации по эксплуатации

Для успешной эксплуатации системы Phantom Protocol рекомендуется:

Безопасность:

  • Регулярно обновляйте криптографические материалы
  • Мониторьте логи на предмет подозрительной активности
  • Используйте файрвол для ограничения доступа
  • Создавайте резервные копии конфигурации и ключей

Производительность:

  • Мониторьте использование ресурсов системы
  • Оптимизируйте сетевые настройки для вашего окружения
  • Регулярно очищайте логи и временные файлы
  • Используйте SSD диски для лучшей производительности

Надежность:

  • Настройте автоматический перезапуск при сбоях
  • Используйте мониторинг состояния системы
  • Ведите документацию изменений конфигурации
  • Тестируйте восстановление после сбоев

7.3 Дальнейшее развитие

Phantom Protocol является исследовательским проектом, демонстрирующим передовые концепции анонимной сетевой коммуникации. Для практического использования рекомендуется:

  • Изучение современных альтернатив (Tor, I2P, Freenet)
  • Адаптация кода для современных версий библиотек
  • Интеграция с современными протоколами и стандартами
  • Разработка пользовательских интерфейсов

7.4 Поддержка и сообщество

Поскольку проект является историческим, активная поддержка может быть ограничена. Для получения помощи рекомендуется:

  • Изучение исходного кода и документации
  • Поиск в архивах конференций и публикаций
  • Обращение к сообществам исследователей анонимности
  • Консультации с экспертами по сетевой безопасности

7.5 Заявление об ответственности

Phantom Protocol является экспериментальной системой, предназначенной для исследовательских и образовательных целей. Использование в производственной среде требует тщательного анализа безопасности и соответствия местному законодательству. Авторы руководства не несут ответственности за последствия использования данной системы.

Данное руководство предоставляет техническую информацию для понимания принципов работы систем анонимной коммуникации и не является призывом к нарушению законодательства или обходу систем безопасности.