Jump to content

Yggdrasil на Keenetic


Recommended Posts

Доброго времени суток пользователи keenetic! Представляю вам реализацию mesh сети yggdrasil, с полноценной выдачей адресов на все устройства в сети.

Начнем с установки yggdrasil и radvd -

opkg update

opkg install yggdrasil-go radvd iptables

После установки

переходим в CLI по адресу -

http://192.168.1.1/a

И вводим туда следующие команды -

no ipv6 subnet Default

system configuration save

Сгенерим конфиг -

yggdrasil -genconf > /opt/etc/yggdrasil.conf

Далее настраиваем yggdrasil согласно документации - https://yggdrasil-network.github.io/

После этого нужно создать сервис для запуска yggdrasil и radvd

nano /opt/etc/init.d/S83yggdrasil

В него вставим содержимое из прикрепленного файла

Далее создадим конфиг для radvd

nano /opt/etc/radvd.conf

В него вставим содержимое из прикрепленного файла

Далее создадим сервис radvd

nano /opt/etc/init.d/S84radvd

В него вставим содержимое из прикрепленного файла

После этого запускаем сервис и прописываем команду -

yggdrasilctl getself

Она выведет нам ipv6 адрес с префиксом /7 и вашу подсеть с префиксом /64

Копируем адрес, который начинается на 2 (пример: 200:66a2:a345:fb11:56ee:a9f1:a448:1114)

Далее если у вас начинается на 200, то меняем на 300, если на 201, то на 301. В итоге вид такой: 300:66a2:a345:fb11:56ee:a9f1:a448:1114/64

Копируем ваш адрес в новом виде и идем редактировать файл S84radvd

nano /opt/etc/init.d/S84radvd

Меняем строку ADDRESS='301:ВАШ АДРЕС/64' на ADDRESS='300:66a2:a345:fb11:56ee:a9f1:a448:1114/64'

После этого вставляем ваш адрес в файл по пути /opt/etc/radvd.conf в таком же виде: 300:66a2:a345:fb11:56ee:a9f1:a448:1114/64

Теперь нужно настроить межсетевой экран -

nano /opt/etc/ndm/netfilter.d/iptables.sh

cd /opt/etc/ndm/netfilter.d

chmod +x iptables.sh

В него вставим содержимое из прикрепленного файла

После этого перезагружаем кинетик и тестируем работу.

ping 200:6223::d35b:1fd8:be0d:2841

http://[200:6223::d35b:1fd8:be0d:2841]/

 

НЕ ЗАБУДЬТЕ ВЫДАТЬ ПРАВА НА ВСЕ СКРИПТЫ И ПРАВИЛЬНО ПРОПИСАТЬ СВОЙ IP!!!!!!!!!!

 

Отдельное спасибо @niks255 за помощь в конфигурации :)

 

iptables.sh radvd.conf S82radvd.sh S83yggdrasil.sh

Edited by Ncleis
  • Thanks 3
  • Upvote 1
Link to comment
Share on other sites

  • 3 weeks later...

"Баловался" когда-то игдрассилем на роутере, остановился тогда из-за лени накатать скрипт автозапуска и - особенно, - правила для iptables, так что большое спасибо за них 👍

От себя правда добавлю то, что и в тех тогдашних опытах, и в нынешних по следам темы, вместо radvd из Entware воспользовался функционалом ipv6 непосредственно роутера - пускай и не особо элегантным способом: прописал дополнительным соединением тоннель SixInFour на адрес роутера, указав в нём полученные из конфига адреса ipv6 и префикс:

TunnelSixInFour.png.b25c36b6a475c8a4a9543dad4632d2c3.png

после чего в CLI задал mtu на тоннеле, прописал маршрут до подсети Yggdrasil, и сохранил, с последующей перезагрузкой роутера:

interface TunnelSixInFour0 ip mtu 1280
ipv6 route 200::/7 TunnelSixInFour0
system configuration save

IPv6_Routes.thumb.png.76db0a6949eceff3f5b14112e7b1de96.png

Ну, и т.к. скорости в Yggdrasil только через роутер (KN-1011 в моём случае; интересно было бы посмотреть на скорости от роутера на ARM-процессоре вроде KN-2710 - процессор мощнее, а значит и шифрование пройдёт быстрее и с увеличением скоростей...) будут заведомо меньше чем от связки "Yggdrasil что на роутере, что на ПК", то дополнительно - ради стабильности соединения, - сменил всё в том же CLI роутера планировщик пакетов на интерфейсе тоннеля с дефолтного fq_codel на cake, с последующим сохранением:

interface TunnelSixInFour0 tx-queue scheduler cake
system configuration save

Под катом - сравнение по замерам "до" и "после" смены планировщика пакетов на интерфейсе (хотя не буду отрицать, что могла также сказаться и нагрузка непосредственно на сервер тестирования скорости), из отмеченного - уменьшение колебания пинга (jitter):

Скрытый текст

 

Yggdrasil_Speedtest_without_cake.png.a5a8efea15d7229164db5dd95ff264b5.pngYggdrasil_Speedtest_with_cake.png.9bdf6873d98b442cc72cbe6d32d8ded2.png

 

 

Edited by UweStrich
  • Thanks 1
Link to comment
Share on other sites

  • 1 year later...
  • 2 months later...
В 05.11.2023 в 00:33, Heggi сказал:

Я так понимаю, что поддержка пакета умерла?

Актуальная версия - 0.5.1, а в репозитории лежит версия 0.4.7-1

Да, поддержка мёртвая. Из-за этого пришлось собирать из исходников. Вот бинари под mipsel, для ленивых (но лучше собрать из исходников самостоятельно! а то мало ли я туда какой малвари засунул!):
https://w3s.link/ipfs/bafybeidxmsjvxpmj65k4wwmudhi65zc5p3yjdwpo3x5vn4zxwvukavdh6a

Их нужно в sbin засунуть, заменив старые.

Собирал так (команды для линукса с установленным докером. эти команды не для запуска на роутере!):

git clone --depth 1 https://github.com/yggdrasil-network/yggdrasil-go # клонируем исходники
rm -rf ./yggdrasil-go/.git # удаляем git папочку чтобы go не крашился при сборке из за неправильных прав
# собираем
docker run --rm -it --name golang \
  -e GOOS=linux -e GOARCH=mipsle \
  -v $(pwd)/yggdrasil-go:/src \
  golang \
  bash -c 'cd /src && mkdir dist && go build -o ./dist/yggdrasil ./cmd/yggdrasil && go build -o ./dist/yggdrasilctl ./cmd/yggdrasilctl'

Бинари будут в yggdrasil-go/dist папочке.

Link to comment
Share on other sites

Доброго утра,

19 часов назад, cofob сказал:
GOARCH=mipsle

Полагаю, что здесь очепятка или все верно?

 

Link to comment
Share on other sites

  • 7 months later...

Скрипт обновления yggdrasil. Отказался от tor в пользу yggdrasil, в котором нашлись нужные мне ресурсы. Установлен на VPS и гоню его траффик через Wireguard нат. Обычный v6 траффик без нат.

 

Скрытый текст
#!/bin/sh

ygg_dir=/opt/sbin
ygg_fn=yggdrasil

function get_download_url {
	curl -kfsS https://api.github.com/repos/$1/$2/releases/latest 2>/dev/null | jq -r '.assets[] | select(.browser_download_url | endswith("-mipsel.deb")) | .browser_download_url'
}

URL=$(get_download_url yggdrasil-network yggdrasil-go)
echo $URL
curl -kfsSL $URL -o /tmp/$ygg_fn.deb

if [ ! -z "$1" ]; then
	cp -f $ygg_dir/$ygg_fn $ygg_dir/$ygg_fn.1
fi
ar p /tmp/$ygg_fn.deb data.tar.gz | tar -xzf - -C /tmp usr/bin/$ygg_fn
rm -f /tmp/$ygg_fn.deb
mv -f /tmp/usr/bin/$ygg_fn $ygg_dir/$ygg_fn
chmod +x $ygg_dir/$ygg_fn
ls -al $ygg_dir/$ygg_fn*

/opt/etc/init.d/S71yggdrasil restart

 

Конфиг WG такой:

Скрытый текст
[Interface]
Address = 172.16.13.90/29, 2a00:3344:aabb::13:90/126
ListenPort = 993
PrivateKey = GFvE8HHQit+z6sFQHLqh3OvitGh6WArsOWe0wQaXzng=
PostUp   = iptables -t nat -A POSTROUTING -o ens3 -j MASQUERADE; ip -6 neigh add proxy 2a00:3344:aabb::13:91 dev ens3; ip6tables -t nat -A POSTROUTING -o ygg0 -j MASQUERADE;
PostDown = iptables -t nat -D POSTROUTING -o ens3 -j MASQUERADE; ip -6 neigh del proxy 2a00:3344:aabb::13:91 dev ens3; ip6tables -t nat -D POSTROUTING -o ygg0 -j MASQUERADE;

### Client ZyWG
[Peer]
PublicKey = 5/99C9QMhWfPuyuyuiuiaxbp0J0lU=
PresharedKey = g/9OxHyEo0yuiyuiyuiyiuuyOBd9qCBmI=
AllowedIPs = 172.16.13.91/32, 2a00:3344:aabb::13:91/128

 

 

Edited by avn
Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...