gemlog/public/uk/safe-yggdrasil-websites-browsing-with-yggstack.gmi
2025-09-11 12:43:12 +03:00

152 lines
No EOL
9.1 KiB
Text
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Безпечний перегляд сайтів Yggdrasil з Yggstack
Враховуючи специфіку сучасних Веб-стандартів, при відвідуванні веб-сайтів у мережі Yggdrasil, можливі та цілком ймовірні фонові запити до зовнішніх Інтернет вузлів. Таким чином, може не контрольовано здійснюватись підвантаження сторонніх ресурсів сторінки, зокрема - графіки, стилів, скриптів та іншого. Наприклад, це може бути випадкове або спеціальне звернення веб сайту до ресурсів у зоні .ru (зокрема Yandex) або ви просто не бажаєте витоків персональної IP адреси до не відомих вузлів Інтернет, наприклад - користуючись Yggdrasil в режимі меш / інкогніто.
Нижче наведу невеличку нотатку, про те, як особисто я фільтрую не бажаний вихідний трафік з використанням SOCKS5 проксі Yggstack і окремо налаштованим браузером для навігації в мережі - LibreWolf, на прикладі системи Fedora Linux.
Звертаю увагу, що дана інструкція не включає кроки з анонімізації - маскування відбитків, оновлення сесій, cookies, вимкнення акселерації та іншого. Це окрема тема, для якої існують спеціалізовані софт, додатки і навички. Тут ми просто контролюємо вихідний трафік в режимі Yggdrasil-only.
## Yggstack
Yggstack - це невеличкий проксі сервер на базі Netstack, який містить в собі ізольований екземпляр вузла Yggdrasil (так само, як Yggmail) і надає локальний інтерфейс для підключення до нього браузеру (чи іншого додатку) для проксування в діапазоні адрес IPv6 0200::/7.
### Залежності
Тут достатньо встановити актуальну версію Go. Про це я вже писав у матеріалі:
=> install-latest-golang-version-on-debian-linux.gmi Встановлення останньої версії Go в Debian
### Встановлення
Збираємо приблизно так само, як Yggdrasil:
``` bash
git clone https://github.com/yggdrasil-network/yggstack.git && cd yggstack
./build
sudo ./yggstack -genconf > /etc/yggstack.conf
sudo mv yggstack /usr/local/bin/yggstack
sudo restorecon -rv /usr/local/bin/yggstack
```
* остання команда корегує доступи на виконання yggstack, який пускається не від root.
Якщо користуєтесь в оверлеї, також не забудьте вказати вихідний вузол до "Peers":
=> https://publicpeers.neilalexander.dev
### Systemd
Оскільки Yggstack, в принципі, створений щоб запускатись без tun інтерфейсу і root, створимо системний сервіс з виконанням від поточного системного користувача. Якщо не плануєте його запускати на фоні, можна цей крок пропустити і запуститись командою:
``` bash
/usr/local/bin/yggstack -useconffile /etc/yggstack.conf -socks 127.0.0.1:1080
```
Або ж створіть файл конфігурації командою:
``` bash
sudo nano /etc/systemd/system/yggstack.service
```
та додайте наступний вміст:
``` yggstack.service
[Unit]
After=network-online.target
Wants=network-online.target
[Service]
Type=simple
# вкажіть актуальні значення для User/Group
User=USER
Group=GROUP
ExecStart=/usr/local/bin/yggstack -useconffile /etc/yggstack.conf -socks 127.0.0.1:1080
# можна вказати як "file:///path/to/log", якщо потрібне ведення журналу у файл
StandardOutput=null
StandardError=null
Restart=on-failure
[Install]
WantedBy=multi-user.target
```
Керування процесом відбувається наступними командами:
``` bash
systemctl daemon-reload
```
* оновлюємо конфігурацію systemd
``` bash
systemctl enable yggstack
```
* автостарт при запуску системи
``` bash
systemctl start yggstack
```
* запуск
## Браузер
Як писав вище, для цієї мережі я користуюсь окремим браузером LibreWolf з трохи іншим пресетом, для зручності. В принципі, ті само кроки актуальні й для FireFox.
* Переходимо в "Settings" -> "Proxy" / "Network settings" -> "Manual proxy configuration"
* В "SOCKS Host" пишемо наші локальні хост "127.0.0.1" і порт "1080"
* Переконуємось, щоб версія була відмічена як "SOCKS v5"
### Конфігурація PAC
Я додатково користуюсь файлом PAC:
=> https://en.wikipedia.org/wiki/Proxy_auto-config
Цей формат дозволяє в рамках браузеру перенаправити запити, що не відносяться до мережі Yggdrasil на "фіктивний" проксі, щоб швидше прискорити відвантаження сторінки.
Інакше браузер буде намагатись відрезольвити ресурси з незначною затримкою.
Цього можна не робити, адже Yggstack і так відфільтрує подібні запити, оскільки він працює виключно в діапазоні IPv6 0200::/7. Але приклад нижче лишу, якщо ви захочете користуватись цим проксі на обидві мережі, закоментувавши останній "return":
``` yggstack.pac
function FindProxyForURL(url, host)
{
// спрямовуємо трафік Yggdrasil по регулярному виразу на проксі Yggstack
// цей приклад також включає доменні зони .ygg якщо користуєтесь Alfis DNS
if (/^0{0,1}[2-3][a-f0-9]{0,2}:/.test(host) || /\.ygg$/.test(host)) {
return 'SOCKS5 127.0.0.1:1080';
}
return 'PROXY 127.0.0.1:123'; // видаліть цей рядок, якщо хочете працювати з усіма мережами
// або вкажіть окремий проксі для цих мереж, наприклад Tor
}
```
* шлях до даного файлу потрібно вказати у полі "Automatic proxy configuration URL" у форматі "file:///path/to/file" (якщо зберігаєте його локально)
* також, в мене працює окремий від Yggstack інтерфейс Yggdrasil для інших служб, таких як Bittorrent і радіо Rhythmbox. Тому для основного браузеру Firefox, я створив інший файл PAC з протилежними умовами, щоб виключити випадкове звернення до ресурсів Yggdrasil з нього.
* щоб не плутатись в обох клонах Firefox, я користуюсь різними темами оформлення.
### Тестування підключення
Відкриваємо будь який сайт з каталогу, наприклад:
=> http://[21e:a51c:885b:7db0:166e:927:98cd:d186]
і переходимо в режим дебагу "Ctrl+Shift+i" та дивимось заблоковані запити, якщо такі є.
Щоб вимкнути форсований редірект "HTTP" > "HTTPS", в "about:config" встановіть опцію:
```
browser.fixup.fallback-to-https:false
```
Для аналізу пакетного трафіку, мені подобається TUI iptraf (iptraf-ng), або GUI etherape, Sniffnet, тощо.
## Фаєрвол
### Debian
Варто додати правила на iptables, особливо це зручно, якщо користуєтесь окремим контейнером:
``` bash
ufw default deny outgoing
ufw allow out to PUBLIC_PEER_IP
ufw allow out to 0200::/7 from any
```
### Fedora
Для firewalld я надаю перевагу GUI firewall-config.
## Читайте також
=> yggdrasil-is-network-with-distributed-routing.gmi Yggdrasil - мережа з децентралізованою маршрутизацією