devzone.org.ua/post/vstanovlennia-routera-merezi-mycelium-v-linux.md
2025-11-01 14:28:20 +02:00

4.9 KiB
Raw Blame History

Встановлення роутера мережі Mycelium в Linux

Коротка інструкція по встановленню оверлейної мережі Mycelium в Linux, оскільки навіть з моїми скілами, вона видалась дещо заплутаною, через безлад в репозиторії та відсутність доків.

По суті, Mycelium нічим особливим від Yggdrasil не відрізняється, окрім іншої моделі маршрутизації та реалізації роутера мовою Rust. Також, відомою мені характерною рисою цієї мережі - є наявність traceroute

Варто зауважити, що проєкт в стадії розробки, користуйтесь на власний ризик!

Встановлення

Якщо в системі ще не встановлено інфраструктуру Rust/Cargo, то вам сюди або

curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh

Далі клонуємо та збираємо пакунок з репозиторію:

https://github.com/threefoldtech/mycelium.git
cd mycelium/myceliumd
cargo build --release
sudo install target/release/mycelium /usr/local/bin/mycelium
  • можливо потрібно буде довстановити apt install build-essential pkg-config libssl-dev

systemd

#/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 - це приватний ключ, він створюється автоматично при першому запуску
  • в --peers вказуємо піри для підключення в оверлейному режимі, знайти їх можна тут і тут
  • якщо журнали не потрібні - додайте до exec опцію --silent

Налаштування

Фаєрволи обслуговуються так само, як і у випадку Yggdrasil, тільки діапазон тут - 0400::/7;

Для Alfis DNS існує окремий патч (PR#386), який теоретично вміє сікти все окрім Yggdrasil або Mycelium, але в мене там є деякі питання як і до іншого пірингового софту, які поки що не перевіряв.

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';
}

Тестування