How to Wiki Database (change log)
http://[222:a8e4:50cd:55c:788e:b0a5:4e2f:a92c]
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
126 lines
8.7 KiB
126 lines
8.7 KiB
9 months ago
|
====== Адрес из подсети 300::/64 ======
|
||
|
|
||
|
Итак, вы установили поддержку сети Yggdrasil, и хотите дать своему серверу дополнительные IP-адреса. Зачастую более короткие.
|
||
|
|
||
|
==== Теоретическая часть ====
|
||
|
|
||
|
Маршрутизация в Yggdrasil работает по принципу сети IPv6 с маской 0200::/7.
|
||
|
Коротко поясним содержание этого выражения. Каждая цифра в адресе имеет 16 вариантов написания в шестнадцатиричной системе счисления (0-9, a-f). Для написания подобного значения в двоичной системе счисления, на которой работает почти вся современная электронная техника, требуется четыре бита (цифры 0 или 1): 1=0001, 9=1001, f=1111 и так далее. Непосредственно маску обозначает число семь, указанное через слеш 0200::**/7**. Это количество бит, которые определяют не **узел** в сети, а саму **сеть**. Первый символ **0**200 строго входит в маску сети, т.к. число семь полностью покрывает количество четырех битов. На второй символ 0**2**00 приходится не 4 бита, а только 3: 2=**001**0. Последний бит остается свободным и позволяет указывать тройку вместо двойки: 3=001**1**. Всего в адресе 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 узнаем свою подсеть: ==
|
||
|
<code>
|
||
|
$ sudo yggdrasilctl getSelf
|
||
|
</code>
|
||
|
Видим нечто вроде:
|
||
|
<code>
|
||
|
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]
|
||
|
</code>
|
||
|
|
||
|
== Создаем дополнительный адрес: ==
|
||
|
Копируем или запоминаем значение "IPv6 subnet". Двойное двоеточие означает сокращение, т.е. недостающие четыре секции состоят из нулей. После двоеточий в рамках правил //(4 символа из диапазонов 0-9, a-f)// можно дописать любое значение (например, 305:1483:f4dc:5870::**ac1d**), таким образом изменив только последний разряд, сохраняем сокращенный адрес. При необходимости можно указать бОльшее количество разрядов.
|
||
|
|
||
|
== Добавляем новый IP в систему: ==
|
||
|
<code>
|
||
|
$ sudo ifconfig lo inet6 add 305:1483:f4dc:5870::ac1d/64
|
||
|
</code>
|
||
|
Проверяем:
|
||
|
<code>
|
||
|
$ sudo ifconfig lo
|
||
|
</code>
|
||
|
И видим:
|
||
|
<code>
|
||
|
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>
|
||
|
</code>
|
||
|
Адрес добавлен (вторая строка).
|
||
|
|
||
|
==== Windows ====
|
||
|
Данная операция также легко производится на Windows.
|
||
|
В командной строке выполните:
|
||
|
<code>
|
||
|
"C:\Program Files\Yggdrasil\yggdrasilctl.exe" getSelf
|
||
|
</code>
|
||
|
Работа с адресом аналогична вышеописанному. Затем добавьте новый адрес на интерфейс Yggdrasil WireGuard: Свойства - Свойства IPv6 - Дополнительно - Добавить - Добавить.
|
||
|
|
||
|
{{:win_subnet_add_01.png?700}}
|
||
|
==== Автоматическое добавление дополнительных адресов ====
|
||
|
|
||
|
Добавочные IP пропадут, если вы опустите основной интерфейс Yggdrasil.
|
||
|
|
||
|
Сделать так, чтобы они добавлялись автоматически можно разными способами. Например:
|
||
|
|
||
|
=== Linux ===
|
||
|
|
||
|
== Способ 1 ==
|
||
|
Добавление команд в ''%%override.conf%%'' юнита systemd:
|
||
|
<code>sudo systemctl edit yggdrasil.service</code>
|
||
|
|
||
|
Добавляем в файл строки и записываем его:
|
||
|
<code>[Service]
|
||
|
ExecStartPost=/bin/sleep 2s
|
||
|
ExecStartPost=/bin/ip address add 300:75c1:bcf1:7621::1/64 dev tun0</code>
|
||
|
|
||
|
Так дополнительный адрес будет добавлен при старте сервиса Yggdrasil (2s - требуется пара секунд для инициализации).
|
||
|
|
||
|
== Способ 2 ==
|
||
|
|
||
|
В файл ''%%/etc/network/interfaces%%'' можно добавить строки:
|
||
|
|
||
|
<code>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</code>
|
||
|
|
||
|
Адрес на интерфейс ''%%lo%%'' будет добавлен сразу после инициализации этого интерфейса и останется на нём даже после остановки Yggdrasil.
|
||
|
|
||
|
== Способ 3 (системы с netplan) ==
|
||
|
|
||
|
Создать файл ''%%/etc/netplan/01-ygglo.yaml%%'':
|
||
|
|
||
|
<code>network:
|
||
|
ethernets:
|
||
|
lo:
|
||
|
renderer: networkd
|
||
|
match:
|
||
|
name: lo
|
||
|
addresses:
|
||
|
- "300:75c1:bcf1:7621::1/128"
|
||
|
- "300:75c1:bcf1:7621::2/128"</code>
|
||
|
|
||
|
== Способ 4 (crontab) ==
|
||
|
|
||
|
Выполняется от пользователя root:
|
||
|
|
||
|
<code>
|
||
|
crontab -e
|
||
|
@reboot sleep 2; ifconfig lo inet6 add 305:1483:f4dc:5870::ac1d/64
|
||
|
</code>
|
||
|
=== Windows ===
|
||
|
|
||
|
В Windows [[#Способ_1|Способ 1]] можно реализовать с помощью планировщика заданий, создав задание с запуском/остановкой службы в качестве триггера. Подробнее [[https://superuser.com/questions/502160/run-a-scheduled-task-after-a-windows-service-is-started|здесь]] (возможно, после старта службы и непосредственно перед добавление доп. адреса на интерфейс (адаптер) Yggdrasil в скрипте понадобится сделать паузу секунд на 5).
|
||
|
|
||
|
Добавление IP-адреса:
|
||
|
<code>netsh interface ipv6 add address "Yggdrasil" "301:3669:2ff8:2aa3::1"</code>
|
||
|
|
||
|
Здесь ''%%Yggdrasil%%'' - имя интерфейса (адаптера) Yggdrasil.
|
||
|
|
||
|
Или так с помощью VB-скрипта:
|
||
|
<code>
|
||
|
WScript.Sleep(5000)
|
||
|
Set oShell = CreateObject("Shell.Application")
|
||
|
oShell.ShellExecute "netsh.exe", "interface ipv6 add address ""Yggdrasil"" ""301:3669:2ff8:2aa3::1""", "", "runas", 0</code>
|
||
|
|
||
|
==== Заключение ====
|
||
|
|
||
|
Таким образом можно задать очень большое количество адресов на одном устройстве. Точнее, ровно 18 446 744 073 709 551 616 штук.
|