### Резюме проєкту: DrewCyber/yggstack
### Резюме проєкту: DrewCyber/yggstack
**Назва проєкту:** yggstack
**Опис:** yggstack — це форк оригінального репозиторію yggstack, який інтегрує мережу Yggdrasil (end-to-end зашифровану IPv6-мережу) з Netstack для надання SOCKS5-проксі та перенаправлення портів TCP/UDP, без потреби в TUN-інтерфейсі. Це дозволяє використовувати Yggdrasil у ситуаціях, де немає root-прав, підтримки TUN або для доступу з веб-браузера (аналогічно TOR).
**Основна мета:**
Дозволити маршрутизацію трафіку через Yggdrasil без створення віртуального TUN-адаптера, роблячи мережу доступною на системах без привілейованого доступу. Замість TUN використовується Netstack для обробки мережевого стеку безпосередньо, з SOCKS5-проксі та перенаправленням портів.
**Ключові особливості:**
- SOCKS5-проксі-сервер (для TCP та UDP) для маршрутизації трафіку через Yggdrasil.
- Перенаправлення портів TCP/UDP (локальне та віддалене) для доступу до сервісів у мережі Yggdrasil.
- Вбудований DNS-резолвер для доменів `<publickey>.pk.ygg` без зовнішніх DNS-серверів.
- Не вимагає привілейованого доступу — можна запускати кілька інстансів з різними конфігураціями.
- Підтримка статичної конфігурації (HJSON/JSON) та авто-конфігурації.
- Крос-платформенність (Go-компіляція).
**Як це працює (Yggdrasil + Netstack замість TUN):**
Yggdrasil забезпечує зашифровану IPv6-мережу, але стандартна версія потребує TUN для інтеграції з ядром. yggstack замінює це на Netstack — користувацький мережевий стек у Go, який обробляє трафік безпосередньо. Застосунки маршрутизують дані через SOCKS5 або перенаправлення портів, без втручання в системне мережеве ядро.
**Технології:**
- Основна мова: Go (96%).
- Допоміжні: Shell-скрипти (4%).
- Залежності: Go 1.22+.
- Система збірки: Стандартна Go з підтримкою крос-компіляції (GOOS/GOARCH).
**Встановлення:**
1. **Бінарники:** Завантажити з [trunk-релізу](https://github.com/yggdrasil-network/yggstack/releases/tag/trunk) або тегованих релізів.
2. **Зібрати з джерел:**
- Встановіть Go 1.22+.
- `git clone https://github.com/DrewCyber/yggstack`
- `./build` (або з крос-компіляцією, напр. `GOOS=windows GOARCH=amd64 ./build`).
**Використання (приклади):**
- Генерація конфігурації: `./yggstack -genconf > yggdrasil.conf` (або з `-json`).
- SOCKS5-проксі (TCP): `./yggstack -useconffile yggdrasil.conf -socks 127.0.0.1:1080`.
- Віддалене перенаправлення TCP: `./yggstack -useconffile yggdrasil.conf -remote-tcp 80:127.0.0.1:8080`.
- Авто-конфігурація: `./yggstack -autoconf -socks 127.0.0.1:1080`.
- Тест DNS: `curl -x socks5h://127.0.0.1:1080 http://d40d4a7153cf288ea28f1865f6cfe95143a478b5c8c9e7cb002a0633d10a53eb.pk.ygg`.
**Поточний статус:**
- Гілка: `develop` (59 комітів).
- Активність: Низька (1 зірка, 0 спостерігачів, 1 форк).
- Останнє оновлення: Не вказано точно, але форк з активним розвитком на гілці `develop`.
- Проблеми: Немає даних про відкриті issues.
- Розробка: Активна, але мінімальна спільнота.
**Контриб'ютори:**
- Основний: [DrewCyber](https://github.com/DrewCyber) (форк від [yggdrasil-network/yggstack](https://github.com/yggdrasil-network/yggstack)).
**Метрики:**
- Зірки: 1
- Форки: 1
- Мови: Go (96%), Shell (4%)
- Ліцензія: LGPLv3 з винятком для бінарних дистрибутивів.
**Важливі розділи з README:**
- Підтримувані платформи: Linux, macOS, Windows, FreeBSD, OpenBSD, OpenWrt, Ubiquiti EdgeRouter, VyOS.
- DNS: Використовуйте `-nameserver` для зовнішніх серверів, якщо `.ygg` не резолвиться.
- Спільнота: Matrix (#yggdrasil:matrix.org), IRC (#yggdrasil на libera.chat).
- Документація: [yggdrasil-network.github.io](https://yggdrasil-network.github.io).
Цей форк успадковує функціональність оригіналу, але може містити кастомні зміни. Для глибшого занурення — перевірте репозиторій! 🚀
ІІ.
### Приклади та можливості yggstack
Привіт! Ось детальний огляд **прикладів використання** та **можливостей** проєкту yggstack (форк від DrewCyber). Я базуюся на актуальній документації з репозиторію. Цей інструмент ідеально підходить для маршрутизації трафіку через Yggdrasil без TUN-інтерфейсу, з акцентом на SOCKS5-проксі та перенаправлення портів. Він не вимагає root-прав, підтримує кілька інстансів і крос-платформенний (Linux, macOS, Windows тощо).
#### Ключові можливості
yggstack поєднує Yggdrasil (зашифрована IPv6-мережа) з Netstack (користувацький мережевий стек у Go), дозволяючи:
- **SOCKS5-проксі**: Для TCP та UDP-трафіку (аналогічно `ssh -D`). Підтримка TCP-портів або UNIX-сокетів.
- **Перенаправлення портів (Port Forwarding)**:
- **Віддалене (remote)**: Експонує локальні сервіси в мережу Yggdrasil (TCP/UDP).
- **Локальне (local)**: Перенаправляє віддалені Yggdrasil-сервіси на локальну машину (аналогічно `ssh -L` для TCP/UDP).
- **DNS-резолвінг**:
- Вбудований резолвер для доменів `<publickey>.pk.ygg` (без зовнішніх DNS).
- Підтримка зовнішніх DNS-серверів через флаг `-nameserver` (IPv6-адреси).
- **Авто-конфігурація**: Генерує випадкові ключі та дефолтні налаштування на кожний запуск (`-autoconf`).
- **Без привілеїв**: Запускається як звичайний користувач, без TUN. Можна запускати кілька копій з різними конфігами.
- **Конфігурація**: HJSON/JSON-файли, з опціями для ключів, peers, MTU тощо (успадковано від Yggdrasil).
- **Відмінності від оригіналу**: Це форк з одним комітом попереду — невідтестований фікс для WireGuard-підключень через UDP-порти. Інших змін не вказано.
#### Приклади використання
Всі приклади використовують бінарник `./yggstack` (збудований з Go). Спочатку згенеруйте конфіг, якщо потрібно.
1. **Генерація конфігурації (HJSON-формат)**
Створює шаблонний файл конфігурації Yggdrasil.
```bash
./yggstack -genconf > yggdrasil.conf
```
2. **Генерація конфігурації (JSON-формат)**
Аналогічно, але в JSON для зручності.
```bash
./yggstack -genconf -json > yggdrasil.conf
```
3. **Запуск SOCKS5-проксі на TCP-порті 1080**
Маршрутизує весь трафік через Yggdrasil (використовуйте в браузерах чи curl з `-x socks5h://`).
```bash
./yggstack -useconffile yggdrasil.conf -socks 127.0.0.1:1080
```
4. **SOCKS5-проксі на UNIX-сокеті**
Корисно для локальних додатків без мережевих портів.
```bash
./yggstack -useconffile yggdrasil.conf -socks /tmp/yggstack.sock
```
5. **Експозиція локального TCP-сервісу в Yggdrasil (remote TCP)**
Робить локальний веб-сервер на порту 8080 доступним у мережі Yggdrasil на порту 80.
```bash
./yggstack -useconffile yggdrasil.conf -remote-tcp 80:127.0.0.1:8080
```
6. **Експозиція локального UDP-сервісу (remote UDP)**
Наприклад, для DNS-сервера на порту 53.
```bash
./yggstack -useconffile yggdrasil.conf -remote-udp 53:127.0.0.1:53
```
7. **Перенаправлення віддаленого Yggdrasil TCP-порту на локальний (local TCP)**
Аналог `ssh -L`: Тунелює віддалений сервіс на локальний порт 8080. Замініть `<remote-yggdrasil-ipv6>` на реальну IPv6-адресу.
```bash
./yggstack -useconffile yggdrasil.conf -local-tcp 127.0.0.1:8080:<remote-yggdrasil-ipv6>:8080
# Або з IPv6-локальним хостом:
./yggstack -useconffile yggdrasil.conf -local-tcp [::1]:8080:<remote-yggdrasil-ipv6>:8080
```
8. **Перенаправлення віддаленого Yggdrasil UDP-порту (local UDP)**
Наприклад, для DNS на віддаленому хості.
```bash
./yggstack -useconffile yggdrasil.conf -local-udp 127.0.0.1:5353:<remote-yggdrasil-ipv6>:53
```
9. **Запуск як standalone-вузла (без проксі/форвардингу)**
Просто підключається до Yggdrasil для фону.
```bash
./yggstack -useconffile yggdrasil.conf
```
10. **Авто-конфігурація з SOCKS-проксі**
Ідеально для тестів — генерує все автоматично.
```bash
./yggstack -autoconf -socks 127.0.0.1:1080
```
11. **Вказівка зовнішнього DNS-сервера (IPv6-приклад)**
Якщо потрібно резолвити не-.ygg домени.
```bash
./yggstack -useconffile yggdrasil.conf -nameserver '[324:71e:281a:9ed3::53]:53' -socks 127.0.0.1:1080
```
12. **Тест DNS-резолву через SOCKS5**
Перевіряє доступ до Yggdrasil-сайту (наприклад, web.mc.ygg).
```bash
curl -x socks5h://127.0.0.1:1080 http://web.mc.ygg
```
13. **Доступ до сайту через вбудований .pk.ygg-резолвер**
Використовує публічний ключ як домен.
```bash
curl -x socks5h://127.0.0.1:1080 http://d40d4a7153cf288ea28f1865f6cfe95143a478b5c8c9e7cb002a0633d10a53eb.pk.ygg
```
#### Поради
- **Комбінування флагів**: Можна комбінувати, напр. `-socks` + `-remote-tcp` для проксі + експозиції.
- **Логування**: Додайте `-logto /path/to/log` для дебагу.
- **Peers**: Редагуйте `Peers` у конфігу для підключення до мережі.
- **Тестування**: Почніть з авто-конфігу, потім перейдіть на кастомну.
Якщо потрібно більше деталей, приклади для конкретної ОС чи тест на твоїй машині — дай знати! 🚀
Коментарі
Дописати коментар