mirror of
https://codeberg.org/postscriptum/gemlog.git
synced 2026-02-18 22:12:40 +00:00
152 lines
No EOL
9.1 KiB
Text
152 lines
No EOL
9.1 KiB
Text
# Безпечний перегляд сайтів 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 - мережа з децентралізованою маршрутизацією |