(на примере Windows Server 2012 R2).
По мотивам HowToYgg статей «Как подключиться к Yggdrasil, не устанавливая его клиент на устройство» и «Адрес из подсети 300::/64».
Мост Yggdrasil ↔ LAN позволяет получить доступ к сети Yggdrasil устройствам, на которых клиент не установлен, объединив вашу домашнюю IPv6-сеть с глобальной подсетью вашего узла Yggdrasil Network и, соответственно, всей Ygg-сетью целиком. Пример частный, но принципы применимы почти везде.
Предполагается, что протокол IPv6 на LAN-интерфейсе включен, установлен Yggdrasil, добавлены публичные пиры и есть факт корректной работы Yggdasil-сети.
Для удобства рекомендуется добавить путь к yggdrasilctl.exe в переменную PATH. Если не хотите — запускайте команды из каталога установки Yggdrasil.
1. Узнаём IPv6-адрес и подсеть Yggdrasil.
В PowerShell от имени администратора:
yggdrasilctl getSelf
Пример вывода:
Build name: yggdrasil Build version: #Ваша версия IPv6 address: 200:aaaa:bbbb:cccc:XXXX:XXXX:XXXX:XXXX IPv6 subnet: 300:aaaa:bbbb:cccc::/64 Public key: #Ваш публичный ключ
Разбираем:
Build name: yggdrasil
В конфигурационном файле Yggdrasil (yggdrasil.conf) есть параметр IfName. Именно он определяет имя сетевого интерфейса, который создаёт Yggdrasil в Windows. По умолчанию это просто «Yggdrasil», но вы можете изменить название на любое, например: «Ygg0», «Mesh6», «HyperLAN» или другое в рамках ANSI. Это важно, потому что все дальнейшие команды PowerShell опираются на факт того, как интерфейс называется реально. Если в вашем конфиге имя изменено, то и в командах упоминающих действительные сетевые имена типа:
Set-NetIPInterface -InterfaceAlias "Yggdrasil" -Forwarding Enabled
нужно будет подставить своё значение, например:
Set-NetIPInterface -InterfaceAlias "Ваше название" -Forwarding Enabled
В данной статье используются стандартные имена «Yggdrasil» и «Ethernet» для LAN, чтобы избежать путаницы и сделать примеры универсальными.
Продолжаем разбираться: 200:aaaa:bbbb:cccc:XXXX:XXXX:XXXX:XXXX — индивидуальный адрес вашей Yggdrasil-машины. 300:aaaa:bbbb:cccc::/64 — подсеть, которую мы и будем раздавать клиентам LAN. Это ваша «внутренняя Ygg-подсеть».
Скопируйте значение IPv6 subnet — оно потребуется позже.
2. Идентификация имён сетевых интерфейсов Yggdrasil и LAN.
Через GUI: Панель управления → Сеть и Интернет → Центр управления сетями → Изменение параметров адаптера или в powershell:
netsh interface ipv6 show interfaces
Ищем строки примерно такого вида:
31 0 65535 connected Yggdrasil 12 20 1500 connected Ethernet
Yggdrasil — виртуальный интерфейс самого Yggdrasil, а Ethernet (или другое имя) - ваша LAN. MTU можно запомнить, но это не критично — главное знать имена интерфейсов. Эти два имени обязательно понадобятся далее при включении IPv6-форвардинга и назначении адреса подсети 300::/64.
3. Включаем IPv6-маршрутизацию в Windows.
По умолчанию Windows не маршрутизирует IPv6-пакеты, поэтому включаем эту функцию. Нас интересуют два ключа в реестре из:
HKLM\SYSTEM\CurrentControlSet\Services\Tcpip6\Parameters
DisabledComponents = 0 — включает полный IPv6-стек без ограничений.
EnableICSIPv6 = 1 — разрешает Windows действовать как IPv6-маршрутизатор при использовании Internet Connection Sharing.
Создаём параметры при необходимости в regedit или powershell-командами:
New-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Services\Tcpip6\Parameters" -Name "DisabledComponents" -PropertyType DWord -Value 0 -Force
New-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Services\Tcpip6\Parameters" -Name "EnableICSIPv6" -PropertyType DWord -Value 1 -Force
Примечание: На Windows Server 2012 R2 обычно требуется только DisabledComponents=0.
4. Включаем IPv6-Forwarding на интерфейсах
Выполняем:
Set-NetIPInterface -InterfaceAlias "Yggdrasil" -Forwarding Enabled
Set-NetIPInterface -InterfaceAlias "Ethernet" -Forwarding Enabled
Проверяем:
Get-NetIPInterface | Select InterfaceAlias, Forwarding
Вывод
Yggdrasil Enabled Ethernet Enabled
говорит о верной настройке.
5. Проверяем общие IPv6-настройки.
netsh interface ipv6 show global
Здесь особого действия не требуется — вывод носит справочный характер.
6. Разрешаем форвардинг на уровне интерфейса netsh.
netsh interface ipv6 set interface "Yggdrasil" forwarding=enabled
netsh interface ipv6 set interface "Ethernet" forwarding=enabled
7. Назначаем LAN-интерфейсу адрес из вашей подсети 300::.
Используем записанное ранее значение подсети: 300:aaaa:bbbb:cccc::/64 и назначаем LAN-интерфейсу адрес, например ::a из GUI, либо в powersell:
netsh interface ipv6 add address "Ethernet" "300:aaaa:bbbb:cccc::a"
Префикс: 64
Важно: нельзя использовать адрес, который выводится в строке из yggdrasilctl getSelf: IPv6 address: 200:aaaa:bbbb:cccc:XXXX:XXXX:XXXX:XXXX - он уже занят самим Ygg-нодом и находится в диапазоне 200:.
Замечание: Интернет (WAN) и LAN на Windows-мосте обязательно должны быть разными интерфейсами. Интерфейс с подсетью 300::/64 — это чисто внутренняя сеть. Интернет, через который Yggdrasil подключается к пирам, должен приходить через другой сетевой адаптер. Если интернет приходит в эту же LAN-сеть, Windows может перепутать маршрутизацию и попытаться отправлять Ygg-трафик обратно в LAN, что приводит к полной неработоспособности моста. Сам факт корректной маршрутизации возможен даже и при таких условиях, однако потребует дополнительных сведений о конфигурации вашей сети, знаний и опыта в маршрутизации.
Команды:
netsh interface ipv6 show addresses "Ethernet"
netsh interface ipv6 show addresses "Yggdrasil"
расскажут вам дополнительные подробности. Если все действия совершены верно, Windows готов выполнять роль моста Yggdrasil ↔ LAN.
8. Настройка клиентов LAN.
На каждом клиентском устройстве указываются:
IPv6-адрес: 300:aaaa:bbbb:cccc::b (или любой другой в этой подсети)
Префикс: 64
Основной шлюз: 300:aaaa:bbbb:cccc::a (адрес вашего Windows-моста)
9. Проверка.
С любого устройства LAN:
ping любой:узел:Yggdrasil
или откройте в браузере Ygg-сайт по адресу вида:
например http://[222:a8e4:50cd:55c:788e:b0a5:4e2f:a92c]
Если всё работает — мост настроен.
Стоит отметить, что разворачивая мост, вы по сути выводите всю вашу LAN в глобальную IPv6-среду Yggdrasil. И даже если у вас дома всё под контролем помните, что теперь локальные машины и сам сетевой мост - часть общей yggdrasil-сети без сквозного шифрования. Если сомневаетесь в добросовестности абсолютно всех пользователей Yggdrasil Network или имеете индивидуальные требования к сетевой безопасности - есть смысл настроить фильтрацию в брандмауэре Windows или на внешнем маршрутизаторе согласно вашим нуждам.
Заключение
Описанный метод успешно работает у меня в домашней сети, где шлюзом выступает Windows Server 2012 R2. Аналогичный подход применим ко всем версиям Windows, поддерживающим PowerShell и запуск Yggdrasil, а также полезен как общее введение в IPv6-маршрутизацию.
Выражаю благодарность Microsoft, OpenAI, HowToYgg wiki, разработчикам и сообществу Yggdrasil Network.
Успехов в настройках, господа сетевые администраторы!
