howto-db/data/pages/yggdrasil/public_peer.txt
2024-02-10 12:53:55 +00:00

149 lines
13 KiB
Plaintext
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

====== Публичный пир ======
**Публичным пиром** сети называется устройство, к которому в оверлейном режиме может подключиться любой желающий. Проще говоря: узел сети, к которому можно подключиться через Интернет и соединиться таким образом с глобальным сегментом сети [[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~~