Перейти к содержанию

Рекомендуемые сообщения

Опубликовано (изменено)

Доброго времени суток пользователи 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

Изменено пользователем Ncleis
  • 3 недели спустя...
Опубликовано (изменено)

"Баловался" когда-то игдрассилем на роутере, остановился тогда из-за лени накатать скрипт автозапуска и - особенно, - правила для 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

 

 

Изменено пользователем UweStrich
  • 1 год спустя...
Опубликовано

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

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

  • 2 месяца спустя...
Опубликовано
В 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 папочке.

Опубликовано

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

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

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

 

Опубликовано
4 часа назад, Zeleza сказал:

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

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

Всё верно, опечатки нет, в Go так mipsel называется.

См. https://github.com/golang/go/blob/1d45a7ef560a76318ed59dfdb178cecd58caf948/src/go/build/syslist.go#L66

  • 7 месяцев спустя...
Опубликовано (изменено)

Скрипт обновления 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

 

 

Изменено пользователем avn

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.
Примечание: Ваш пост будет проверен модератором, прежде чем станет видимым.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

  • Последние посетители   0 пользователей онлайн

    • Ни одного зарегистрированного пользователя не просматривает данную страницу
×
×
  • Создать...

Важная информация

На этом сайте используются файлы cookie. Нажимая "Я принимаю" или продолжая просмотр сайта, вы разрешаете их использование: Политика конфиденциальности.