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.
149 lines
13 KiB
149 lines
13 KiB
10 months ago
|
====== Публичный пир ======
|
||
|
**Публичным пиром** сети называется устройство, к которому в оверлейном режиме может подключиться любой желающий. Проще говоря: узел сети, к которому можно подключиться через Интернет и соединиться таким образом с глобальным сегментом сети [[yggdrasil:Yggdrasil]]. Список публичных пиров доступен в официальном репозитории проекта "Public Peers": https://github.com/yggdrasil-network/public-peers, а так же по адресам:
|
||
|
|
||
|
- https://publicpeers.neilalexander.dev/ \\
|
||
|
- <del>http://[319:3cf0:dd1d:47b9:20c:29ff:fe2c:39bd]/ (внутрисетевое зеркало)</del>
|
||
|
|
||
|
Список на сайте генерируется автоматически на базе информации с GitHub и имеет статус доступности узлов (online/offline).
|
||
|
|
||
|
Публичные пиры, к которым вы хотите быть подключены, прописываются в файле конфигурации yggdrasil.conf (/etc/yggdrasil.conf или %programdata%\yggdrasil\yggdrasil.conf) в секции **Peers**:
|
||
|
<code>
|
||
|
Peers: [
|
||
|
# Чехия, Revertron
|
||
|
tcp://195.123.245.146:7743
|
||
|
# netherlands
|
||
|
tcp://51.15.118.10:62486
|
||
|
]
|
||
|
</code>
|
||
|
//Комментарии не обязательны, но они могут пригодиться.//
|
||
|
|
||
|
===== TLS =====
|
||
|
|
||
|
Начиная с версии 0.3.11 Yggdrasil поддерживает соединения по протоколу TLS. Это позволяет скрыть пиринговое соединение внутри обычного сеанса TLS, что в некоторых случаях может помочь обойти брандмауэр или фильтры DPI, блокирующие пиринговый трафик Yggdrasil.
|
||
|
|
||
|
Публичные пиры, поддерживающие TLS идентифицируются префиксом ''%%tls://%%'' вместо ''%%tcp://%%''.
|
||
|
|
||
|
Обратите внимание, что из-за дополнительного уровня шифрования производительность через одноранговые узлы TLS может быть немного хуже, чем через обычные одноранговые узлы ''%%tcp://%%''.
|
||
|
|
||
|
===== QUIC =====
|
||
|
|
||
|
Начиная с версии [[https://github.com/yggdrasil-network/yggdrasil-go/releases/tag/v0.5.0rc1|0.5 RC1]] Yggdrasil поддерживает соединения по протоколу [[wpru>QUIC|QUIC]].
|
||
|
|
||
|
Публичные пиры, поддерживающие QUIC идентифицируются префиксом ''%%quic://%%''.
|
||
|
|
||
|
На данный момент, использование QUIC в Yggdrasil не даёт каких-либо преимуществ, передача данных по этому протоколу может быть даже медленнее, чем при использовании других протоколов.
|
||
|
|
||
|
На текущий момент (18 декабря 2023 года) мониторилка QUIC на сайте https://publicpeers.neilalexander.dev/ работает неправильно, поэтому ориентироваться на неё нельзя ([[https://matrix.to/#/!vVtVcVdzAdhGFLzFwm:matrix.org/$M985e-MMujijMt3p6h5P3N26NAlShrG6cszLc3hSujI?via=matrix.org&via=envs.net&via=tchncs.de|подтверждено самим neilalexander]])
|
||
|
===== Unix socket =====
|
||
|
|
||
|
В версии Yggdrasil 0.4.5 появилась возможность пиринга с использованием Unix сокетов. Это не вполне релевантно статье о публичных пирах, т.к., Unix сокеты можно использовать только на одной машине, но тем не менее, об этом стоит упомянуть и здесь.
|
||
|
|
||
|
Эту возможность можно использовать в случае запуска Yggdrasil на одной машине с использованием средств виртуализации или с разделением по [[wpru>Пространство_имён_(Linux)#Сети_(Network)|network namespaces]], или, например, для соединения Yggdrasil c [[yggdrasil:email:yggmail|Yggmail]].
|
||
|
|
||
|
Для использования пиринга через Unix сокет можно прописать в секцию Peers [[yggdrasil:config_russian|конфигурационного файла]] такую строку: ''%%unix:///path/to/socket.sock%%''
|
||
|
|
||
|
**Пример:**
|
||
|
|
||
|
В конфигурационном файле Yggdrasil, в секции Listen прописываем:
|
||
|
|
||
|
<code>Listen:
|
||
|
[
|
||
|
tcp://192.168.1.2:23485
|
||
|
unix:///var/run/yggdrasil.sock
|
||
|
]</code>
|
||
|
Таким образом к нашему пиру можно будет подключиться по IP ''%%192.168.1.2%%'', на порт ''%%23485%%'' и через Unix сокет по пути ''%%/var/run/yggdrasil.sock%%''
|
||
|
|
||
|
Yggmail теперь можно запускать так:
|
||
|
<code>yggmail -peer=unix:///var/run/yggdrasil.sock -database=/home/USER/mail/yggmail.db -smtp=192.168.1.2:1025 -imap=192.168.1.2:1143</code>
|
||
|
|
||
|
===== Как выбрать публичные пиры =====
|
||
|
|
||
|
Для обычного домашнего использования разработчики рекомендуют прописывать в конфигурационном файле 2-3 географически ближайших к вам публичных пира. Слишком большое количество пиров в конфигурационном файле, а так же, использование географически удаленных от вас пиров может нагативно сказаться на производительности узла и скорости доступа к ресурсам сети.
|
||
|
|
||
|
Для выбора пиров, во-первых можно просто воспользоваться упомянутым выше сайтом, на котором собраны все публичные пиры с offline / online статусами.
|
||
|
|
||
|
Ниже перечислены средства автоматизации процесса выбора пиров.
|
||
|
|
||
|
==== Yggdrasil peers updater ====
|
||
|
|
||
|
Утилита предназначена для проверки доступности пиров и автоматического их обновления в конфигурационном файле Yggdrasil, а так же, с помощью метода admin API - addPeer.
|
||
|
|
||
|
Для вывода отсортированного по скорости доступа списка доступных пиров используется флаг ''%%-p%%''.
|
||
|
|
||
|
С другими параметрами можно ознакомиться из описания (RU): https://github.com/ygguser/peers_updater/blob/master/README_ru.md
|
||
|
|
||
|
==== Скрипт на python ====
|
||
|
|
||
|
[[user:zhoreeq]] разработал скрипт, который в отсортированном виде выводит информацию о времени отклика пиров, его можно использовать при выборе пиров для своего конфигурационного файла (необходимо наличие установленного python3):
|
||
|
|
||
|
Клонируем репозиторий с публичными пирами:
|
||
|
<code>git clone https://github.com/yggdrasil-network/public-peers.git</code>
|
||
|
Клонируем репозиторий со скриптом:
|
||
|
<code>git clone https://github.com/zhoreeq/peer_checker.py.git</code>
|
||
|
Запускаем скрипт (параметром указывается каталог с публичными пирами):
|
||
|
<code>python ./peer_checker.py/peer_checker.py ./public-peers/</code>
|
||
|
Пример вывода скрипта:
|
||
|
<code>Dead peers:
|
||
|
|
||
|
tcp://[2a04:5b81:2010::90]:2000 africa/south-africa.md
|
||
|
tcp://[2804:49fc::ffff:ffff:5b5:e8be]:58301 south-america/brazil.md
|
||
|
...
|
||
|
|
||
|
Alive peers (sorted by latency):
|
||
|
|
||
|
URI Latency (ms) Location
|
||
|
tcp://95.165.99.73:5353 6.679 europe/russia.md
|
||
|
tcp://yggno.de:18226 16.892 europe/russia.md
|
||
|
...</code>
|
||
|
|
||
|
===== Как стать публичным пиром? =====
|
||
|
Любой желающий может стать публичным пиром. Для этого, чтобы другие пользователи могли подключиться к вашему узлу, как к публичному пиру, необходимо иметь прямой доступ в Интернет (белый IP). Также крайне желательно использовать для пиринга весьма производительное "железо" и широкий сетевой канал. Производительность сервера важна при больших нагрузках, т.к. нативные криптографические операции сети весьма требовательны и в случае недостатка мощности в работе пира будут возникать сбои. В настройках файерволла операционной системы необходимо открыть порт, который будет прослушивать Yggdrasil (любой, на ваше усмотрение).\\
|
||
|
В файле конфигурации Yggdrasil добавляем в поле **Listen**:
|
||
|
<code>
|
||
|
Listen: [
|
||
|
# Для прослушивания всех IPv4 интерфейсов на порту 7991
|
||
|
tcp://0.0.0.0:7991
|
||
|
# Для прослушивания всех IPv6 интерфейсов на порту 7992
|
||
|
tcp://[::]:7992
|
||
|
]
|
||
|
</code>
|
||
|
|
||
|
По-желанию, адрес своего узла можно опубликовать на упомянутой выше странице проекта в GitHub, либо просто поделиться им с друзьями.
|
||
|
|
||
|
===== Приоритеты =====
|
||
|
|
||
|
В Yggdrasil версии 0.4.6 появилась возможность задать приоритеты для соединения с одним и тем же узлом, если у узла несколько интерфейсов.
|
||
|
Приоритет указывается с помощью параметра URI пира ''%%?priority=X%%'' в секциях ''%%Peers%%'' или ''%%Listen%%'', или c помощью параметра ''%%Priority%%'' в секции ''%%MulticastInterfaces%%''.
|
||
|
|
||
|
Приоритет — это число из диапазона от 0 до 254 (по умолчанию 0), чем ниже значение, тем выше приоритет.
|
||
|
|
||
|
===== Handshake c паролем =====
|
||
|
|
||
|
Начиная с версии 0.5 RC1 можно использовать "рукопожатие" с дополнительным паролем.
|
||
|
|
||
|
Пример:
|
||
|
|
||
|
Для секции Listen: ''%%tls://[::]:12345?password=123456abcdef%%'' \\
|
||
|
Для секции Peers: ''%%tls://a.b.c.d:12345?password=123456abcdef%%''
|
||
|
|
||
|
Так же, пароль допустимо использовать в секции ''%%MulticastInterfaces%%''.
|
||
|
|
||
|
Максимальная допустимая длина пароля - 64 символа.
|
||
|
===== Особые замечания =====
|
||
|
0. Не забудьте перезапустить службу Yggdrasil, чтобы изменения вступили в силу:
|
||
|
<code>
|
||
|
# Debian/Ubuntu:
|
||
|
sudo systemctl restart yggdrasil
|
||
|
# Windows:
|
||
|
net.exe stop "Yggdrasil Service" && net.exe start "Yggdrasil Service"
|
||
|
</code>
|
||
|
|
||
|
1. Другие частники сети будут считаться подключенными локально, [[#comment_cdb7f917ca5239ceb1a131ffb2c7def5|будто]] они с вами в одной локальной сети. Учитывайте это при настройке безопасности.\\
|
||
|
2. Редактируя файл конфигурации в Windows, не используйте стандартный блокнот и Office Word. Это испортит кодировку файла и служба Yggdrasil не сможет запуститься. Для редактирования конфига в Windows следует использовать текстовые редакторы вроде ''AkelPad'', Notepad2 и ''NotePad++''.
|
||
|
|
||
|
====== Ссылки ======
|
||
|
|
||
|
Публичные пиры (EN): https://github.com/yggdrasil-network/public-peers \\
|
||
|
Yggdrasil peer checker (EN): https://github.com/zhoreeq/peer_checker.py
|
||
|
|
||
|
~~DISCUSSION~~
|