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.
113 lines
10 KiB
113 lines
10 KiB
====== Wyrd DNS ====== |
|
|
|
^ :!: **Внимание!** ^ |
|
| **Проект Wyrd устарел и не рекомендуется к использованию.** Crawler остановлен навсегда, новые домены более не добавляются автоматически ([[https://github.com/Revertron/wyrd/blob/master/README.md|readme.md]]).\\ Автором Wyrd предлагается перейти на использование DNS на основе блокчейна - [[yggdrasil:dns:alfis|ALFIS]]. | |
|
|
|
Wyrd - гибкое решение резолва имен в сети Yggdrasil. Резолвит общие доменные зоны и зоны OpenNIC. Также поддерживает собственную зону доменных имен .ygg с автоматической регистрацией. Разработка поддерживается пользователем [[user:rev]]. Является частичным форком краулера сети (автор Arceliar). Написан на языке Python. Репозиторий на Github: https://github.com/Revertron/wyrd. На этой странице приводится русскоязычная версия официальной документации. |
|
|
|
==== Введение ==== |
|
Если вы используете сеть Yggdrasil, то вы подумали о новом DNS. Не только для преобразования имен в IP-адреса, но и для использования некоторых дополнительных записей, которые нельзя добавить в файл hosts, например CNAME, MX или TXT. И система должна быть надежной: если кто-то зарегистрировал домен, домен должен принадлежать только ему, а не передаваться случайно другому. В настоящее время существует несколько систем «crypto-dns», таких как EmerDNS и т.п., но для их хранения требуется несколько гигабайт дискового пространства. Мы не можем позволить себе это в мобильных телефонах и планшетах. Нам нужен какой-нибудь обычный кеширующий сервер для предоставления DNS-записей, чтобы установить их в мобильном, да и вообще и использовать как обычный DNS. |
|
==== Что такое Wyrd? ==== |
|
Wyrd - это скрипт сканера для DNS-сервера BIND, предназначенный для сбора и проверки DNS-записей из данных NodeInfo со всех узлов. Он получает данные: домены, DNS-записи, проверяет «владельца» и сохраняет их в базе данных MySQL (одна простая таблица), затем получает все записи из этой таблицы и передает их на сервер BIND. |
|
==== Как это работает? ==== |
|
* Проверяет все узлы (как в сканере map.ygg) на наличие информации о DNS. |
|
* Перебирает найденные домены и проверяет их действительность, зону и владение. Если домен новый, он добавляется, если владелец (IPv6 узла) тот же, он обновляет DNS-записи, если IP не является владельцем, он просто игнорирует домен. |
|
* Когда домен добавляется, узел (представленный IPv6) сохраняется как владелец. Дата и время регистраци (seen_first) также сохраняются. |
|
* Если вам нужно сменить владельца на какой-то другой узел, вы устанавливаете свойство владельца на новый IPv6, и он будет изменен в БД. |
|
* Если вы хотите использовать какой-либо другой узел в качестве «резервного владельца» в случае утери первого узла, вы можете установить свойство отката, и второй узел станет новым владельцем, когда первый пропадет в течение некоторого времени (еще не реализовано). |
|
* В будущей версии каждый домен должен будет быть «куплен» PoW. Простой майнинг одноразового номера, который устранит захват домена или сделает его достаточно сложным. |
|
==== Регистрация ==== |
|
Как добавить свой домен к этим серверам? Легко! Просто добавьте необходимые DNS-записи в зону Nodeinfo в файле конфигурации Yggdrasil следующим образом: |
|
=== Один домен === |
|
<code> |
|
NodeInfo: { |
|
dns: { |
|
domains: [ |
|
{ |
|
domain: example.ygg |
|
ip: 200:1111:2222:3333:4444:5555:6666:7777 |
|
} |
|
] |
|
} |
|
} |
|
</code> |
|
=== Один домен с поддоменами === |
|
Если вы используете массив records с type и/или TTL, то вам нужно изменить ip на data, потому что может быть также какой-то CNAME, а не только IP. |
|
<code> |
|
NodeInfo: { |
|
dns: { |
|
domains: [ |
|
{ |
|
domain: example.ygg |
|
records: [ |
|
{ |
|
data: 200:1111:2222:3333:4444:5555:6666:7777 |
|
name: @ |
|
ttl: 300 |
|
type: AAAA |
|
} |
|
{ |
|
data: 200:1111:2222:3333:4444:5555:6666:7778 |
|
name: ftp |
|
ttl: 600 |
|
type: AAAA |
|
} |
|
] |
|
} |
|
] |
|
} |
|
} |
|
</code> |
|
=== Все остальные варианты с объяснением === |
|
<code> |
|
NodeInfo: { |
|
"dns": { |
|
// Вы можете добавить контакт, как это делает WHOIS |
|
"contact": mail@example.com |
|
"domains": [ |
|
{ |
|
"domain": "test.ygg", // Ваш желаемый домен |
|
"records": [ |
|
{ |
|
// IP-адрес для разрешения, он может отличаться от адреса вашего узла |
|
"data": "200:149b::b722:fe09:d31:84a4", |
|
"name": "*", // Вы можете пропустить это, по умолчанию значение "@" |
|
"ttl": 300, // Вы можете пропустить это, по умолчанию значение 3600 (один час) |
|
"type": "AAAA" // Это также можно пропустить, по умолчанию будет использовано значение AAAA |
|
} |
|
], |
|
// Теги будут использоваться для ранжирования и поиска в будущем, следите за обновлениями;) |
|
"tags": [ |
|
"test", |
|
"dns", |
|
"experiment" |
|
] |
|
}, |
|
{ |
|
// Вы можете попробовать несколько реальных доменов, но они будут игнорироваться :) |
|
"domain": "google.com", |
|
// Вместо массива "records" вы можете просто ввести IP-адрес, |
|
// type и TTL по умолчанию - AAAA & 3600 |
|
"ip": "200:149b::b722:fe09:d31:84a4" |
|
} |
|
] |
|
}, |
|
"location": "Somewhere on Earth", // Общие поля |
|
"name": "My meganode!", |
|
} |
|
</code> |
|
В настоящее время поддерживается только этот TLD: **.ygg**. Если сообществу понадобится еще, мы можем добавить. |
|
==== Установка своего инстанса ==== |
|
* Вам необходимо установить bind9, python3 и python3-mysqldb. Например: <code> apt-get install bind9 python3 python3-mysqldb </code> |
|
* Клонируйте репозиторий https://github.com/Revertron/wyrd |
|
* Создайте базу данных wyrd, user wyrd и предоставьте этому пользователю все привилегии для этой БД. |
|
* Скопируйте все содержимое каталога bind в /etc/bind/ |
|
* Измените пароль в src/config.py |
|
* Запустите его с помощью python3 src/crawler.py |
|
* Было бы хорошо добавить его в cron на каждые 15 минут |
|
==== Синхронизация ==== |
|
Вы можете спросить: что если я запустил Wyrd на своем сервере и получил домен от уже проигнорированного скваттера, а не от законного владельца? Хорошо, для этого у меня есть решение, но еще не реализовано. Поскольку у меня есть первый сервер Wyrd, я буду отправлять состояния БД после каждой модификации этого хранилища, и любой, кто запускает его сервер, не будет начинать с нуля. Его сервер будет заполнен всеми текущими записями с первого взгляда. И, что более важно, все изменения в доменах и записях можно легко отслеживать. |
|
|
|
===== Ссылки ===== |
|
Mastodon: https://zhub.link/@Revertron и @Revertron на [[http://hash.null/yggdrasil_ru/|hash.null]].\\ |
|
[[yggdrasil:dns:internal_dns|Статья "Внутрисетевые DNS"]].
|
|
|