### Резюме проєкту: 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` у конфігу для підключення до мережі.

- **Тестування**: Почніть з авто-конфігу, потім перейдіть на кастомну.


Якщо потрібно більше деталей, приклади для конкретної ОС чи тест на твоїй машині — дай знати! 🚀

Коментарі

Популярні дописи з цього блогу

🎮 How to easily transcode a video to the desired size | An honest review of simple programs for Windows 10

📊 Моя реферальная статистика на Richamster