Адрес из подсети 300::/64

Итак, вы установили поддержку сети Yggdrasil, и хотите дать своему серверу дополнительные IP-адреса. Зачастую более короткие.

Теоретическая часть

Маршрутизация в Yggdrasil работает по принципу сети IPv6 с маской 0200::/7. Коротко поясним содержание этого выражения. Каждая цифра в адресе имеет 16 вариантов написания в шестнадцатиричной системе счисления (0-9, a-f). Для написания подобного значения в двоичной системе счисления, на которой работает почти вся современная электронная техника, требуется четыре бита (цифры 0 или 1): 1=0001, 9=1001, f=1111 и так далее. Непосредственно маску обозначает число семь, указанное через слеш 0200::/7. Это количество бит, которые определяют не узел в сети, а саму сеть. Первый символ 0200 строго входит в маску сети, т.к. число семь полностью покрывает количество четырех битов. На второй символ 0200 приходится не 4 бита, а только 3: 2=0010. Последний бит остается свободным и позволяет указывать тройку вместо двойки: 3=0011. Всего в адресе IPv6 128 бит, 7 из которых, как мы выяснили, относятся к обозначению сети Yggdrasil и всегда остаются неизменными. Оставшийся 121 бит дает пространство адресов для пользователей. Это огромное число, привычная запись которого потребует больше 250 символов!
Нули в начале разряда опускаются, поэтому сеть Yggdrasil можно записать в виде 200::/7. Тем более, что первый ноль является константой.
Две и более секции, состоящие из нулей, можно сократить. Сокращение обозначается в виде двух двоеточий. Например, 209:abcd:abcd:abcd:0:0:cccc:cccc сокращается до 209:abcd:abcd:abcd::cccc:cccc. Важно: сократить можно только один фрагмент адреса.
Помимо основной сети 200::/7, каждый адрес Yggdrasil имеет свою подсеть. По задумке, подсети используются для локальной маршрутизации, однако могут использоваться и исключительно в эстетических целях для получения короткого адреса. Подсети Yggdrasil имеют вид 300::/64.

Практическая часть

Средствами Yggdrasil узнаем свою подсеть:
$ sudo yggdrasilctl getSelf

Видим нечто вроде:

Build name: yggdrasil
Build version: 0.3.14
IPv6 address: 205:1483:f4dc:5870:b4d6:c309:1d51:aace
IPv6 subnet: 305:1483:f4dc:5870::/64
Coords: [1 13 10 167 6]
Создаем дополнительный адрес:

Копируем или запоминаем значение «IPv6 subnet». Двойное двоеточие означает сокращение, т.е. недостающие четыре секции состоят из нулей. После двоеточий в рамках правил (4 символа из диапазонов 0-9, a-f) можно дописать любое значение (например, 305:1483:f4dc:5870::ac1d), таким образом изменив только последний разряд, сохраняем сокращенный адрес. При необходимости можно указать бОльшее количество разрядов.

Добавляем новый IP в систему:
$ sudo ifconfig lo inet6 add 305:1483:f4dc:5870::ac1d/64

Проверяем:

$ sudo ifconfig lo

И видим:

  lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
        inet 127.0.0.1  netmask 255.0.0.0
        inet6 305:1483:f4dc:5870::ac1d  prefixlen 64  scopeid 0x0<global>
        inet6 ::1  prefixlen 128  scopeid 0x10<host>

Адрес добавлен (вторая строка).

Windows

Данная операция также легко производится на Windows. В командной строке выполните:

"C:\Program Files\Yggdrasil\yggdrasilctl.exe" getSelf

Работа с адресом аналогична вышеописанному. Затем добавьте новый адрес на интерфейс Yggdrasil WireGuard: Свойства - Свойства IPv6 - Дополнительно - Добавить - Добавить.

Автоматическое добавление дополнительных адресов

Добавочные IP пропадут, если вы опустите основной интерфейс Yggdrasil.

Сделать так, чтобы они добавлялись автоматически можно разными способами. Например:

Linux

Способ 1

Добавление команд в override.conf юнита systemd:

sudo systemctl edit yggdrasil.service

Добавляем в файл строки и записываем его:

[Service]
ExecStartPost=/bin/sleep 2s
ExecStartPost=/bin/ip address add 300:75c1:bcf1:7621::1/64 dev tun0

Так дополнительный адрес будет добавлен при старте сервиса Yggdrasil (2s - требуется пара секунд для инициализации).

Способ 2

В файл /etc/network/interfaces можно добавить строки:

auto lo
iface lo inet loopback
  up ip addr add 300:75c1:bcf1:7621::1/64 dev lo
  up ip addr add 300:75c1:bcf1:7621::2/64 dev lo

Адрес на интерфейс lo будет добавлен сразу после инициализации этого интерфейса и останется на нём даже после остановки Yggdrasil.

Windows

В Windows Способ 1 можно реализовать с помощью планировщика заданий, создав задание с запуском/остановкой службы в качестве триггера. Подробнее здесь.

Заключение

Таким образом можно создать практически бесконечное количество адресов на одном устройстве. Точнее, ровно 18 446 744 073 709 551 616 штук.

Только авторизованные участники могут оставлять комментарии.
yggdrasil/subnet_setting.txt · Последние изменения: 2022/11/10 12:50 — Evgeny
 
Recent changes RSS feed Donate Powered by PHP Valid XHTML 1.0 Valid CSS Driven by DokuWiki