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.
252 lines
23 KiB
252 lines
23 KiB
![]()
7 months ago
|
====== ALFIS - распределенная система доменных имен ======
|
||
|
|
||
|
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 на 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]]
|
||
|
|