# Встановлення роутера мережі 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 [Install] WantedBy=multi-user.target ``` * `/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