gemlog/public/uk/install-mycelium-network-router-in-linux.gmi
2025-09-16 23:44:13 +03:00

108 lines
No EOL
4.4 KiB
Text
Raw 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.

# Встановлення роутера мережі Mycelium в Linux
Коротка інструкція по встановленню оверлейної мережі Mycelium в Linux, оскільки навіть з моїми скілами, вона видалась дещо заплутаною, через безлад в репозиторії та відсутність доків.
По суті, Mycelium нічим особливим від Yggdrasil не відрізняється, окрім іншої моделі маршрутизації та реалізації роутера мовою Rust. Також, відомою мені характерною рисою цієї мережі - є наявність traceroute.
Варто зауважити, що проєкт в стадії розробки, користуйтесь на власний ризик!
## Встановлення
Якщо в системі ще не встановлено інфраструктуру Rust/Cargo, то вам сюди:
=> https://rustup.rs
або
``` bash
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
```
Далі клонуємо та збираємо пакунок з репозиторію:
``` bash
https://github.com/threefoldtech/mycelium.git
cd mycelium/myceliumd
cargo build --release
sudo install target/release/mycelium /usr/local/bin/mycelium
```
можливо потрібно буде довстановити:
``` bash
apt install build-essential pkg-config libssl-dev
```
### systemd
``` /etc/systemd/system/mycelium.service
#/etc/systemd/system/mycelium.service
[Unit]
Wants=network.target
After=network.target
[Service]
ProtectHome=true
ProtectSystem=true
SyslogIdentifier=mycelium
CapabilityBoundingSet=CAP_NET_ADMIN
ExecStartPre=+-/sbin/modprobe tun
ExecStart=/usr/local/bin/mycelium -k /etc/mycelium.bin --peers tcp://xxx.xx.xxx.x:xxxx
# Адреси підмереж
#ExecStartPost=/bin/sleep 5s
#ExecStartPost=/bin/ip address add xxx:xxxx:xxxx:xxxx::x1/64 dev mycelium
#ExecStartPost=/bin/ip address add xxx:xxxx:xxxx:xxxx::x2/64 dev mycelium
#Restart=always
#RestartSec=5
TimeoutStopSec=5
# mkdir /var/log/mycelium
StandardOutput=file:/var/log/mycelium/debug.log
StandardError=file:/var/log/mycelium/error.log
```
* `/etc/mycelium.bin` - це приватний ключ, він створюється автоматично при першому запуску
* якщо журнали не потрібні - додайте до `exec` опцію ` --silent`
## Налаштування
Фаєрволи обслуговуються так само, як і у випадку Yggdrasil, тільки діапазон тут - 0400::/7
Для Alfis DNS існує окремий патч PR#386, який теоретично вміє сікти все окрім Yggdrasil або Mycelium, але в мене там є деякі питання як і до іншого пірингового софту, які поки що не перевіряв.
### PAC
Мій файл конфігурації для окремого браузеру виглядає якось так:
``` config.pac
function FindProxyForURL(url, host)
{
if (/^0{0,1}[2-3][a-f0-9]{0,2}:/.test(host) || /\.ygg$/.test(host))
{
return 'DIRECT';
}
if (/^0{0,1}[4-5][a-f0-9]{0,2}:/.test(host))
{
return 'DIRECT';
}
return 'PROXY 127.0.0.1:123';
}
```
* тобто обслуговуються конекти Yggdrasil та Mycelium, а все інше йде на фіктивний проксі
* детальніше про PAC читайте за посиланнями нижче
## Посилання
=> https://github.com/threefoldtech/mycelium Проєкт Mycelium на GitHub
=> https://github.com/YGGverse/Alfis/tree/mycelium-network-mode Модифікація резольвера Alfis DNS з підтримкою діапазону Mycelium
=> https://devzone.org.ua/post/vstanovlennia-routera-merezi-mycelium-v-linux Веб-версія цього матеріалу з коментарями на DevZone
### Читайте також
=> yggdrasil-is-network-with-distributed-routing.gmi Yggdrasil - мережа з децентралізованою маршрутизацією
=> alfis-dns-domain-registration-in-blockchain.gmi Alfis DNS - реєстрація домену в блокчейн
=> safe-yggdrasil-websites-browsing-with-yggstack.gmi Безпечний перегляд сайтів Yggdrasil з Yggstack