Ncleis Posted June 20, 2022 Share Posted June 20, 2022 (edited) Доброго времени суток пользователи 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 June 20, 2022 by Ncleis 3 1 Quote Link to comment Share on other sites More sharing options...
UweStrich Posted July 7, 2022 Share Posted July 7, 2022 (edited) "Баловался" когда-то игдрассилем на роутере, остановился тогда из-за лени накатать скрипт автозапуска и - особенно, - правила для iptables, так что большое спасибо за них 👍 От себя правда добавлю то, что и в тех тогдашних опытах, и в нынешних по следам темы, вместо radvd из Entware воспользовался функционалом ipv6 непосредственно роутера - пускай и не особо элегантным способом: прописал дополнительным соединением тоннель SixInFour на адрес роутера, указав в нём полученные из конфига адреса ipv6 и префикс: после чего в CLI задал mtu на тоннеле, прописал маршрут до подсети Yggdrasil, и сохранил, с последующей перезагрузкой роутера: interface TunnelSixInFour0 ip mtu 1280 ipv6 route 200::/7 TunnelSixInFour0 system configuration save Ну, и т.к. скорости в Yggdrasil только через роутер (KN-1011 в моём случае; интересно было бы посмотреть на скорости от роутера на ARM-процессоре вроде KN-2710 - процессор мощнее, а значит и шифрование пройдёт быстрее и с увеличением скоростей...) будут заведомо меньше чем от связки "Yggdrasil что на роутере, что на ПК", то дополнительно - ради стабильности соединения, - сменил всё в том же CLI роутера планировщик пакетов на интерфейсе тоннеля с дефолтного fq_codel на cake, с последующим сохранением: interface TunnelSixInFour0 tx-queue scheduler cake system configuration save Под катом - сравнение по замерам "до" и "после" смены планировщика пакетов на интерфейсе (хотя не буду отрицать, что могла также сказаться и нагрузка непосредственно на сервер тестирования скорости), из отмеченного - уменьшение колебания пинга (jitter): Скрытый текст Edited July 7, 2022 by UweStrich 1 Quote Link to comment Share on other sites More sharing options...
Heggi Posted November 4, 2023 Share Posted November 4, 2023 Я так понимаю, что поддержка пакета умерла? Актуальная версия - 0.5.1, а в репозитории лежит версия 0.4.7-1 Quote Link to comment Share on other sites More sharing options...
cofob Posted January 9 Share Posted January 9 В 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 папочке. Quote Link to comment Share on other sites More sharing options...
Zeleza Posted January 10 Share Posted January 10 Доброго утра, 19 часов назад, cofob сказал: GOARCH=mipsle Полагаю, что здесь очепятка или все верно? Quote Link to comment Share on other sites More sharing options...
cofob Posted January 10 Share Posted January 10 4 часа назад, Zeleza сказал: Доброго утра, Полагаю, что здесь очепятка или все верно? Всё верно, опечатки нет, в Go так mipsel называется. См. https://github.com/golang/go/blob/1d45a7ef560a76318ed59dfdb178cecd58caf948/src/go/build/syslist.go#L66 1 Quote Link to comment Share on other sites More sharing options...
avn Posted September 1 Share Posted September 1 (edited) Скрипт обновления 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 September 1 by avn Quote Link to comment Share on other sites More sharing options...
Recommended Posts
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.