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.
264 lines
24 KiB
264 lines
24 KiB
====== ALFIS - распределенная система доменных имен ====== |
|
|
|
^ :!: **Важно!** ^ |
|
| ** У ALFIS обнаружены фундаментальные проблемы в дизайне https://github.com/Revertron/Alfis/issues/364 ** | |
|
|
|
|
|
ALFIS (Alternative Free Identity System - альтернативная свободная система идентификации) - распределенная система доменных имен. |
|
|
|
Преимущества ALFIS перед [[archive:yggdrasil:dns:wyrd|Wyrd]] и другими системами DNS: |
|
* Система распределенная, нет центрального сервера, при выходе из строя которого, вся система перестанет работать |
|
* Резолв внутрисетевых адресов происходит быстрее, т.к., обращение идет к локальному резолверу, встроенному в ALFIS |
|
* DNS запросы не подвержены перехвату |
|
* Предполагаются все возможности по работе с DNS, как в обычных (централизованных) системах |
|
* Относительно малый объем [[wpru>блокчейн|блокчейна]], в сравнении с другими подобными системами |
|
* Открытый исходный код |
|
|
|
К недостаткам можно отнести относительно долгий процесс "регистрации" доменного имени, передачи доменного имени другому пользователю, внесения изменений в записи доменных имен. Всё это связано с особенностями технологии блокчейн на принципе [[wpru>Доказательство выполнения работы|PoW]] и необходимостью [[wpru>майнинг|майнинга]] для внесения изменений в блокчейн, который, собственно, содержит записи доменных имен. Кроме того, особенностью ALFIS является то, что, на данный момент, с одним персональным ключом блок с новым доменом можно майнить не чаще, чем раз в сутки. |
|
|
|
С версии 0.4.34 в ALFIS добавлено ограничение на максимальное количество зон - 10 шт. (ввод ограничений связан с тем, что некоторые пользователи начали злоупотреблять возможностью майнить зоны и намайнили несколько бессмысленных зон). |
|
|
|
===== Установка ===== |
|
|
|
==== DNS-сервис, без GUI (Debian / Ubuntu) ==== |
|
|
|
Эта версия подойдет тем, кто хочет установить ALFIS только в качестве DNS-резолвера. |
|
|
|
Скачиваем ключ репозитория и добавляем его в [[wpru>Advanced_Packaging_Tool|APT]]: |
|
<code>wget -O - https://deb.revertron.com/key.txt | sudo apt-key add -</code> |
|
Добавляем репозиторий в список источников APT: |
|
<code>echo 'deb http://deb.revertron.com/ debian alfis' | sudo tee /etc/apt/sources.list.d/alfis.list</code> |
|
Обновляем информацию о доступных пакетах и устанавливаем ALFIS: |
|
<code>sudo apt update && sudo apt install alfis</code> |
|
|
|
Конфигурационный файл ALFIS будет располагаться в /etc/alfis.conf, блокчейн будет сохранен в директорию /var/lib/alfis. |
|
|
|
Если у вас запущен другой DNS-сервер, работающий на TCP-порту 53, ALFIS не сможет корректно запуститься. Либо измените в конфигурационном файле порт ALFIS, либо измените порт ранее установленного DNS-cервера и укажите его в качестве upstream-сервера для ALFIS. |
|
|
|
Пропишите ALFIS в качестве резолвера в /etc/resolv.conf или другим способом, используемым в вашей ОС. |
|
|
|
==== Версия с GUI (Windows / Linux / MacOS) ==== |
|
|
|
Для регистрации новых и управления уже зарегистрированными доменными именами вам потребуется версия ALFIS с GUI. |
|
|
|
Скачать готовые бинарные сборки под распространенные ОС и архитектуры можно со [[https://github.com/Revertron/Alfis/releases|страницы релизов]] репозитория проекта на GitHub (нужна версия без nogui в наименовании архива). |
|
|
|
Скачайте архив с нужной сборкой и распакуйте его в любую удобную вам директорию. |
|
|
|
После распаковки в Linux сделайте файл исполняемым командой: |
|
|
|
<code> |
|
chmod +x alfis |
|
</code> |
|
|
|
В Windows для запуска ALFIS необходимо наличие установленного Microsoft VC Redistributable (набор динамических библиотек Microsoft Visual C++). Скачать установщик можно по этой ссылке: [[https://www.microsoft.com/ru-RU/download/details.aspx?id=52685|Microsoft Visual C++ 2015 Update 3 RC]]. Установка выполняется довольно просто, проблем вызвать не должно. |
|
|
|
Для запуска ALFIS под Windows версии ниже 8.1 требуется наличие библиотеки api-ms-win-shcore-scaling-l1-1-1.dll. Скачать библиотеку можно по [[https://www.dll.ru/files/api-ms-win-shcore-scaling-l1-1-1-dll|этой ссылке]]. Библиотеку необходимо разместить в том же каталоге, где находится alfis.exe. |
|
|
|
Далее просто запустите исполняемый файл. |
|
|
|
В Linux: ./alfis \\ |
|
В Windows: alfis.exe |
|
|
|
По-умолчанию, ALFIS ищет конфигурационный файл в директории, где находится исполняемый файл, в этой же директории создаётся база данных с блокчейном blockchain.db. |
|
|
|
Чтобы указать ALFIS другой путь к конфигурационному файлу, можно запустить его с параметром -с: |
|
<code>alfis -c /etc/alfis.conf</code> |
|
Для того, чтобы указать путь к рабочей директории (куда будет сохранен блокчейн) можно использовать параметр -w: |
|
<code>alfis -w /home/elf/alfis/</code> |
|
|
|
|
|
===== Как "зарегистрировать" доменное имя в ALFIS ===== |
|
|
|
Для "регистрации" доменного имени в системе, необходимо добавить блок с DNS-записями в блокчейн. Делается это путем майнинга блока. |
|
|
|
Но перед майнингом самого блока с доменными именами необходимо, так сказать, "зарегистрироваться" в системе - намайнить персональный ключ, который будет использоваться для управления своими DNS-записями. |
|
|
|
==== Генерирование персонального ключа ==== |
|
|
|
GUI ALFIS прост и интуитивно понятен. |
|
|
|
{{ yggdrasil:dns:alfis_article.pic0.png }} |
|
|
|
Для майнинга ключа в разделе Credentials просто нажимаем Mine new key. Этот процесс может занять от нескольких часов до нескольких дней в зависимости от мощности процессора. |
|
|
|
После того как ключ будет готов, рекомендую сохранить его в файл для дальнейшего использования (Save key). |
|
|
|
==== Регистрация доменного имени ==== |
|
|
|
Для добавления DNS записей, в разделе Credentials выбираем свой ключ (Load key), в разделе Domains нажимаем "New Domain", далее вводим желаемое доменное имя, выбираем зону (например, .ygg (в зонах, помеченных звездочкой, возможен майнинг доменных имен, связанных только с адресами [[Yggdrasil:Yggdrasil]])), жмем Add record. |
|
|
|
В открывшейся формочке необходимо будет указать параметры DNS-записи. |
|
Для простоты можно указать имя @, тип AAAA (соответствует IPv6) и ваш IP-адрес. @ означает root (корень). Этого будет достаточно для того, чтобы поставить в соответствие IP-адрес и выбранное доменное имя. Если планируется использовать домены третьего уровня (например, %%www.dname.ygg%%), то нужно будет их сразу прописать, чтобы не майнить каждую запись отдельно. Чтобы не прописывать каждый домен третьего уровня отдельно, в поле name можно указать *. |
|
|
|
Должно получиться так, как на картинке ниже. |
|
|
|
{{ yggdrasil:dns:alfis_article.pic.png }} |
|
|
|
|
|
По кнопке с подменю "Advanced" можно указать дополнительную информацию по домену: Set owner contacts - контактные данные владельца, Set domain info - дополнительная информация, связанная с доменом; Change domain owner - используется для передачи домена другому пользователю. |
|
|
|
После того, как всё заполнено, нажимаем Mine domain и ждем, когда процесс майнинга завершится. Процесс может занять продолжительное время. |
|
|
|
Если, вдруг, после нажатия Mine domain вы увидите сообщение "You have cooldown, just xxx more minutes!", это означает, что вы пытаетесь запустить майнинг блока чаще, чем раз в сутки. Придется подождать указанное количество минут. |
|
|
|
{{ yggdrasil:dns:cooldown_alfis.png }} |
|
|
|
===== Как остановить майнинг ===== |
|
|
|
Остановить майнинг можно нажав на красный мерцающий индикатор майнинга в левом нижнем углу окна ALFIS. |
|
|
|
===== Где хранится блокчейн ===== |
|
|
|
Блокчейн локально хранится в базе SQLite (файл blockchain.db). Просмотреть содержимое базы можно, например, с помощью [[https://sqlitebrowser.org/|DB Browser for SQLite]]. Домены не содержатся в базе в открытом виде, только их хэши. |
|
|
|
Кроме того, [[user:cofob]] разработал красивый web-blockchain-viewer: https://viewer.alfis.name/. Исходный код: https://git.sr.ht/~cofob/AlfisViewer |
|
|
|
===== Как использовать ALFIS в качестве резолвера ===== |
|
|
|
Запущенный ALFIS с графическим интерфейсом может корректно резолвить доменные имена. |
|
|
|
Для использования ALFIS исключительно, как резолвера, без отрисовки графического интерфейса, нужно запустить его с параметром -n. |
|
|
|
Резолвер начнет работать на адресе и порте, указанными в конфигурационном файле alfis.toml. |
|
|
|
Кроме того, можно скачать специальную версию ALFIS без графического интерфейса. На странице релизов такие версии имеют имена с добавлением nogui. |
|
|
|
Адреса вышестоящих DNS-серверов указываются в конфигурационном файле - параметр forwarders. |
|
|
|
==== Linux ==== |
|
|
|
Если вы запускаете ALFIS на Linux имейте ввиду: в большинстве современных дистрибутивов для того, чтобы использовать для прослушивания TCP-порты от 0 до 1024 необходимо обладать правами суперпользователя, т.к. эти номера портов зарезервированы для нужд системы и используются различными системными службами/демонами. DNS, по-умолчанию работающая на порту 53, относится к таким системным службам, поэтому, запуская ALFIS в качестве системного резолвера DNS на порту 53, вы должны запускать его с правами супервользователя (либо с соответствующими Capability в systemd-юните), иначе этот порт вами зарезервирован не будет. Так же, учитывайте то, что на этом же порту уже могут работать другие системные службы (systemd-resolved, dnsmasq, BIND, etc.). Убедитесь, что запускаете ALFIS, резервируя порт на таком IP-адресе, на котором он еще не занят. Скорее всего, ваш IPv6-адрес Yggdrasil будет не занят, и его можно указать в конфигурационном файле ''%%alfis.toml%%'' так: |
|
<code>[dns] |
|
# Your DNS resolver will be listening on this address and port (Usual port is 53) |
|
listen = "[2xx:xxx:xxxx:xxxx:xxxx:xxxx:xxxx:xxxx]:53"</code> |
|
|
|
Также можно использовать для сервиса ALFIS [[ http://[222:a8e4:50cd:55c:788e:b0a5:4e2f:a92c]/yggdrasil:subnet_setting#практическая_часть | адрес подсети ]]\\ |
|
Ниже указан пример для запуска на 53 порту (по-умолчанию) где постфикс ::53 в адресе - выделенный для службы адрес из свободного диапазона. |
|
|
|
- yggdrasilctl getself -> 3xx:xxxx:xxxx:xxxx::/64 |
|
- ifconfig lo inet6 add 3xx:xxxx:xxxx:xxxx::53 (не сохраняется при рестарте системы) |
|
- в listen /etc/alfis.conf указываем [3xx:xxxx:xxxx:xxxx::53]:53 |
|
- в /etc/systemd/resolved.conf DNS=3xx:xxxx:xxxx:xxxx::53 |
|
- systemctl restart alfis и systemctl restart systemd-resolved |
|
|
|
Далее, ознакомьтесь с тем, как прописать этот адрес в качестве системного резолвера: [[yggdrasil:dns:dns_sys_configure]]. |
|
|
|
===== Как проверить работу резолвера ALFIS ===== |
|
|
|
Примеры: |
|
|
|
<code>dig AAAA @127.0.0.1 -p 5300 gostcoin.ygg</code> |
|
<code>dig AAAA @127.0.0.1 -p 5300 nnmclub.ygg +short</code> |
|
|
|
Здесь 127.0.0.1 - адрес, на котором работает резолвер, 5300 - порт резолвера (см. alfis.toml). |
|
|
|
Если резолвер ALFIS уже прописан в качестве системного резолвера и если он прослушивает порт 53 (DNS), то команда может быть такой: |
|
<code>dig AAAA rutor.ygg</code> |
|
<code>dig AAAA nnmclub.ygg +short</code> |
|
|
|
В результате выполнения команд вы должны будете увидеть IP-адреса указанных доменов. |
|
|
|
===== Описание конфигурационного файла ALFIS ===== |
|
|
|
<code> |
|
# Хэш первого блока в цепи, чтобы знать с какими узлами работать |
|
origin = "0000001D2A77D63477172678502E51DE7F346061FF7EB188A2445ECA3FC0780E" |
|
# Пути к файлам ваших ключей для их автоматической загрузки |
|
key_files = ["key1.toml", "key2.toml", "key3.toml", "key4.toml", "key5.toml"] |
|
# Какое количество блоков проверять при старте |
|
check_blocks = 8 |
|
|
|
# Сетевые настройки |
|
[net] |
|
# Бутстрап-узлы (узлы, к которым вы подключитесь в первую очередь, чтобы получить информацию о других узлах) |
|
peers = ["peer-v4.alfis.name:4244", "peer-v6.alfis.name:4244", "peer-ygg.alfis.name:4244"] |
|
# Адрес и порт, на которых ваш узел будет ожидать подключения от других узлов |
|
listen = "[::]:4244" |
|
# Если вы хотите участвовать в обмене пирами, установить здесь true, false - если не хотите |
|
public = true |
|
# Разрешить подключения только внутри сети Yggdrasil (входящие и исходящие) (https://yggdrasil-network.github.io) |
|
yggdrasil_only = false |
|
|
|
# Настройки DNS-резолвера |
|
[dns] |
|
# DNS-резолвер будет ожидать подключения на этом адресе и TCP-порте (обычно это порт 53) |
|
listen = "127.0.0.1:53" |
|
# Сколько потоков породит DNS-сервер |
|
threads = 20 |
|
# DNS-серверы AdGuard (для фильтрации рекламы и отслеживающих трэкеров) |
|
forwarders = ["https://dns.adguard.com/dns-query"] |
|
#forwarders = ["94.140.14.14:53", "94.140.15.15:53"] |
|
# Серверы Cloudflare |
|
#forwarders = ["https://cloudflare-dns.com/dns-query"] |
|
#forwarders = ["1.1.1.1:53", "1.0.0.1:53"] |
|
|
|
# DNS-серверы для резолва доменов провайдеров DoH |
|
bootstraps = ["9.9.9.9:53", "94.140.14.140:53"] |
|
|
|
# Поддержка файла hosts (/etc/hosts) (для разрешения локальных имен или блокировки рекламы) |
|
#hosts = ["system", "adblock.txt"] |
|
|
|
#Настройки майнинга |
|
[mining] |
|
# Количество потоков CPU для майнинга, ноль = количество ядер CPU |
|
threads = 0 |
|
# Установить низкий приоритет для потоков майнинга |
|
lower = true |
|
</code> |
|
|
|
===== Параметры командной строки ===== |
|
|
|
<code> |
|
Опции: |
|
-h, --help Вывод этой подсказки |
|
-n, --nogui Запуск без графического интерфейса (используется по-умолчанию для сборок без GUI) |
|
-v, --version Вывод версии и выход |
|
-d, --debug Выводить еще больше отладочной информации |
|
-b, --blocks Показать содержимое блоков в базе данных и завершить работу |
|
-g, --generate Генерировать новый конфигурационный файл (будет выведен в консоль) |
|
-k, --gen-key FILE Генерирование (майнинг) новых ключей и сохранение их в файл |
|
-l, --log FILE Записывать лог в файл |
|
-s, --status FILE Записывать статус в файл (информация о количестве узлов, блоков, ключей, доменов) |
|
-c, --config FILE Путь к конфигурационному файлу |
|
-w, --work-dir DIRECTORY |
|
Путь к рабочей директории |
|
-u, --upgrade FILE Путь к конфигурационному файлу, который вы хотите обновить. Обновлённый файл будет выведен в консоль. |
|
</code> |
|
|
|
===== Публичные серверы DNS ALFIS ===== |
|
ALFIS предназначен для локального разворачивания с использованием сервиса DNS на адресе ''127.0.0.1:53''. Однако существуют общедоступные серверы, использование которых избавляет от запуска ALFIS на своем устройстве. Такие серверы собраны на странице: [[yggdrasil:dns:internal_dns]]. |
|
|
|
===== Дополнительно ===== |
|
|
|
==== Домен .at ==== |
|
|
|
Благодаря [[user:ufm]] все Yggdrasil-адреса, для которых есть доменное имя ALFIS (оканчивающееся на ''%%.ygg%%''), доступны [//без дополнительных настроек//] через домен ''%%.at%%''. Т.е., ресурс с доменным именем ALFIS, вида ''%%domain.ygg%%'' будет доступен и по доменному имени ''%%domain.ygg.at%%''. При этом, нет необходимости менять свои настройки DNS, прописывать DNS-сервера ALFIS и т.п. |
|
|
|
Для примера: |
|
* эта wiki доступна по адресу: http://howto.ygg.at; |
|
* список сайтов доступен по адресу: http://sites.ygg.at. |
|
|
|
''%%<domain>.ygg.at%%'' резолвится в Yggdrasil-IPv6-адрес. |
|
|
|
==== Настройка браузеров ==== |
|
|
|
По-умолчанию, браузеры интерпретируют неизвестные доменные зоны как поисковую фразу. |
|
|
|
Чтобы добавить поддержку новых доменных зон, необходимо добавить соответствующие настройки для [[ yggdrasil:web-browsers:chrome_with_yggdrasil | Chrome ]] и [[ yggdrasil:web-browsers:firefox_with_yggdrasil | Firefox ]]. |
|
|
|
==== Скорость работы ==== |
|
|
|
Из коробки, Alfis использует в качестве forward сервера по-умолчанию AdGuard, пинг которого может достигать 200мс. |
|
Наиболее быстрые результаты обычно показывает CloudFlare (1.1.1.1 ~2мс) или Google (8.8.8.8 ~30мс) |
|
|
|
Если используется подключение к DNS через Yggdrasil, задержка при первом "рукопожатии" достигает 250мс, что суммарно может вызывать дискомфорт при отсутствии дополнительного кеш-сервера. |
|
|
|
Браузеры обычно кешируют результаты на час, поменять настройки в FF можно в ''%%about:config%%'' опция ''%%network.dnsCacheExpiration%%'' |
|
====== Ссылки ====== |
|
|
|
Репозиторий ALFIS на Github: https://github.com/Revertron/alfis \\ |
|
Описание ALFIS от разработчика (RU): https://github.com/Revertron/Alfis/tree/master/docs \\ |
|
Канал поддержки пользователей ALFIS в telegram: https://t.me/ALFIS_RU \\ |
|
Сообщение [[user:ufm]] о домене .at: [[https://matrix.to/#/!lAbIGDMfTUNreAuBOl:matrix.org/$lIglLUwoRAhU88fZpQ8ISElHR7xTOwijlJ4U0Zp-SyQ?via=matrix.org&via=t2bot.io&via=twinkle.lol|Сообщение в matrix]] |
|
|
|
|