Документация
Поиск

EmerDNS logo

EmerDNS - это система для децентрализованных доменных имен, поддерживающая полный спектр записей DNS. EmerDNS работает под аббревиатурой службы «dns» в Emercoin NVS.

Благодаря безопасному и распределенному блокчейну Emercoin записи доменных имен полностью децентрализованы и не подвергаются цензуре и не могут быть изменены, отозваны или приостановлены каким-либо органом. Только владелец записи может изменять или передавать ее другому владельцу, а владелец записи определяется тем, кто контролирует закрытый ключ для соответствующего платежного адреса.

Только владельцы записей DNS могут управлять своими записями: изменять значения, время аренды, удалять их или передавать право собственности на другой адрес EMC. Эти действия могут быть выполнены с помощью Emercoin NVS в графическом интерфейсе кошелька Emercoin или с помощью команд name_new или name_update в Emercoin API .

Записи DNS можно легко получить из любого кошелька Emercoin с помощью Emercoin API, используя JSONRPC или командную строку, или с помощью стандартного протокола DNS RFC1034 , встроенного в каждый кошелек Emercoin.

Поддерживаемые зоны DNS

Технически EmerDNS может поддерживать любую DNS-зону или TLD . Однако для бесшовной интеграции в стандартное дерево DNS и предотвращения конфликтов с существующими DNS-зонами в настоящее время мы рекомендуем создавать записи EmerDNS только в зонах: * .emc , * .coin , * .lib , * .bazar .

Текущие корневые зоны, поддерживаемые EmerDNS, и их назначение:

Зона Целевое назначение
.coin веб-сайты цифровой валюты и торговли
.emc сайты, связанные с проектом Emercoin
.lib от слов библиотека и свобода - то есть "Знания и Свобода"
.bazar рынки, маркеты

Доступ к зонам EmerDNS

Есть несколько способов доступа к доменам EmerDNS:

Расширения браузера

Существует несколько сторонних плагинов для браузеров, которые позволяют легко посещать домены EmerDNS:

Более обновленный список расширений браузера, поддерживающих EmerDNS, можно найти здесь .

OpenNIC

Emercoin поддерживает пиринговое соглашение с провайдером DNS OpenNIC, что означает, что домены, зарегистрированные в EmerDNS, доступны по умолчанию для всех пользователей DNS-серверов OpenNIC. Таким образом, доменные зоны Emercoin доступны, посетив www.opennic.org и следуя их руководству по настройке DNS-преобразователя для серверов OpenNIC.

OpenNIC - это простой и удобный способ беспрепятственного доступа ко всем веб-сайтам, зарегистрированным в блокчейне Emercoin, а также ко всем другим доменным зонам, которые поддерживает OpenNIC.

Создание и поддержка записи DNS

Типы записей

Встроенный DNS-сервер Emercoin поддерживает следующие типы DNS-записей :

Аббревиатура записи Описание услуг
А IP-адрес V4
AAAA IP-адрес V6
NS Запись сервера имен
PTR Запись указателя
CNAME Запись канонического имени
MX Запись почтового обмена
текст Текстовое сообщение произвольной формы
SD Поддомены (см. ниже)

Примечание: записи SOA, WKS и SRV напрямую не поддерживаются встроенным DNS-сервером Emercoin.

Чтобы вставить DNS-запись в блокчейн Emercoin, создайте (или обновите) пару имя-> значение под аббревиатурой службы «dpo» в Emercoin NVS следующим образом:

"name" : "dns:<your_name_here>"
"value" : "<list of NS-records>"

Например:

"name" : "dns:example.coin"
"value" : "A=192.168.0.123,127.0.0.1|AAAA=2607:f8b0:4004:806::1001|NS=ns1.google.com|TTL=4001"

В этом примере домен example.coin определяется следующим образом:

  • две A-записи (192.168.0.123 и 127.0.0.1);
  • одна AAAA-запись (2607: f8b0: 4004: 806 :: 1001);
  • одна NS-запись (ns1.google.com);
  • TTL запись .

Записи разделяются вертикальной чертой или вертикальной чертой разделителя по умолчанию ("|"). При необходимости вы можете переопределить разделитель, добавив к значению префикс \ ~ \ <новый символ разделителя> . Например, если вы хотите использовать символ решетки «#» в качестве разделителя вместо вертикальной черты, вы можете присвоить ему «\ ~ #» в начале значения следующим образом:

"value" : "~#A=192.168.0.123,127.0.0.1#AAAA=2607:f8b0:4004:806::1001#NS=ns1.google.com#TTL=4001"

Обратите внимание: если вы используете пробел « » в качестве разделителя, вы не сможете использовать его внутри полей. Поэтому вместо этого вы должны выбрать соответствующий символ в качестве разделителя для ваших записей.

Как описано выше, каждая запись может содержать несколько значений. В приведенном примере A-запись содержит два значения, разделенных запятой ",". Вы также можете переопределить разделитель значений с помощью \ ~ \ <новый символ разделителя> . В следующем примере показано, как переопределить разделитель два раза: косая черта «/» в качестве разделителя записей и звездочка «*» в качестве разделителей значений для нескольких записей TXT:

"value" : "~/TXT=~*This is text, Hello!*2nd text/MX=gmail.com:33,mx.microsoft.com:66/CNAME=emc.cc.st/A=192.168.0.100,127.0.0.1"

В последнем примере мы продемонстрировали использование записи MX . Значение MX содержит ссылку на почтовый обменник и приоритет, разделенные двоеточием «:». Если приоритет опущен, значение по умолчанию - 1.

Кроме того, в последнем примере намеренно опущена запись TTL. Значение TTL по умолчанию - 24 часа.

Требования к именованию

Доменные имена могут быть сформированы из набора буквенно-цифровых символов ASCII в нижнем регистре (az, 0-9). Кроме того, дефис («-») разрешен, если он окружен символами, цифрами или дефисами, хотя он не должен начинать или заканчивать имя. Допустимы только строчные буквы.

Интернационализированные доменные имена

Интернационализированные доменные имена (арабский, китайский, кириллица и т. Д.) Технически возможны с использованием punycode .

Например, если нам нужно следующее интернационализированное доменное имя:

dns:президент.emc

Затем мы должны расшифровать его с помощью конвертера punycode и зарегистрировать результат:

dns:xn--d1abbgf6aiiy.emc

Поддомены

Общая проблема с распределенным DNS заключается в том, что каждый может выделить любое уникальное имя, позволяя кому-то зарегистрировать поддомен для домена, которым он не владеет. Чтобы исправить эту ситуацию, в EmerDNS есть специальные способы управления поддоменами:

  • Запись субдомена (SD) в значении NVS родительского домена DNS, разрешает поиск и разрешение субдомена непосредственно в подсистеме Emercoin DNS, например SD = www, ftp, mx
  • Запись сервера имен (NS) в значении NVS родительского DNS, позволяет ссылаться на внешние серверы имен, управляемые владельцем домена, для обеспечения авторитетного поиска и разрешения субдомена, внешнего по отношению к Emercoin DNS, например NS = ns.example.com

Разрешение поддоменов применяется в следующем порядке, рекурсивно ко всем поддоменам третьего уровня и глубже:

  1. Сначала проверьте SD-запись в родительском значении DNS на предмет ссылки на запрошенный поддомен. Если ссылка на субдомен найдена, найдите субдомен в подсистеме Emercoin NVS.
  2. Затем проверьте наличие записи сервера имен (NS) в родительском значении DNS. Если найдено, сгенерировать ссылку на внешний сервер имен.
  3. Если в записях SD или NS разрешение не получается, возвращайте данные по родительскому домену (т. Е. Игнорируйте префикс поддомена).

ПРИМЕЧАНИЕ: При использовании внешних серверов имен, пожалуйста, позаботьтесь о правильном разрешении имен на этих серверах, включая любые суффиксы шлюза.

Пример 1 - родительский элемент содержит записи SD и NS

[1] dns:example.coin -> A=1.2.3.4|SD=www,gopher|NS=ns.example.com
[2] dns:www.example.coin -> A=5.6.7.8

В этом случае субдомены будут разрешены следующим образом:

  • example.coin будет разрешен записью [1] и вернет A = 1.2.3.4
  • www.example.coin будет подтвержден записью [1], разрешен записью [2] и вернется A = 5.6.7.8
  • gopher.example.coin будет одобрен записью [1] и не разрешен, поскольку NVS не содержит соответствующей записи DNS. Это вернет NXDOMAIN.
  • mail.example.coin не будет одобрен записью [1], но запись NS создаст ссылку на внешний сервер ns.example.com, который может разрешить или не разрешить этот субдомен.

Таким образом, одна запись [1] поддерживает гибкое гибридное разрешение:

  • www разрешено Emercoin NVS.
  • gopher заблокирован.
  • все остальные разрешаются делегированным NS = ns.example.com.

Пример 2 - родительский элемент содержит только SD-запись

[1] dns:example.coin -> A=1.2.3.4|SD=www,gopher
[2] dns:www.example.coin -> A=5.6.7.8

В этом случае субдомены будут разрешены следующим образом:

  • example.coin будет разрешен записью [1] и вернет A = 1.2.3.4
  • www.example.coin будет подтвержден записью [1], разрешен записью [2] и вернется A = 5.6.7.8
  • gopher.example.coin будет одобрен записью [1] и не разрешен, поскольку NVS не содержит соответствующей записи DNS. Это вернет NXDOMAIN.
  • mail.example.coin не будет утвержден записью [1], и (из-за отсутствия записи NS) префикс «mail» будет проигнорирован и разрешен так же, как example.coin.

Пример 3 - родительский элемент содержит только NS-запись

[1] dns:example.coin -> A=1.2.3.4|NS=ns.example.com
[2] dns:www.example.coin -> A=5.6.7.8

В этом случае субдомены будут разрешены следующим образом:

  • example.coin будет разрешен записью [1] и вернет A = 1.2.3.4
  • www.example.coin не будет одобрен записью [1] и будет генерировать ссылку на внешний сервер ns.example.com, который может разрешить или не разрешить этот субдомен.
  • Запись [2] будет проигнорирована и не будет участвовать в разрешении DNS.
  • mail.example.coin не будет одобрен записью [1] и создаст ссылку на внешний сервер ns.example.com, который может разрешить или не разрешить этот субдомен.

Пример 4 - родительский элемент не содержит ссылок на поддомен

[1] dns:example.coin -> "A=1.2.3.4"
[2] dns:mx.example.coin -> "A=5.6.7.8"

В этом случае субдомены будут разрешены следующим образом:

  • example.coin -> «A = 1.2.3.4»
  • mx.example.coin -> «A = 1.2.3.4»
  • www.example.coin -> «A = 1.2.3.4»
  • upload.ftp.example.coin -> «A = 1.2.3.4»

Поскольку запись [1] не содержит записей SD или NS, все поддомены будут преобразованы в «родительский домен» example.coin. Запись [2] будет проигнорирована и не будет участвовать в разрешении DNS.

Интеграция в обычное дерево DNS

Во-первых, нужно активировать RFC1034 сервер DNS в Emercoin по задав два необязательных параметра в emercoin.conf конфигурационном файле, emcdns и emcdnsport :

emcdns=1 # Запускать DNS сервер. По умолчанию 0 (отключен)
emcdnsport=NNN # Порт для DNS, по умолчанию 5335

Чтобы интегрировать DNS-сервер Emercoin в обычное DNS-дерево, вы можете использовать полнофункциональный DNS или кэширующий DNS. Стандартный DNS-клиент Windows не может выполнить эту работу, поэтому для этого следует использовать дополнительный DNS-прокси-сервер. Ниже мы покажем несколько примеров.

Обычный PC компьютер, Acrylic DNS-прокси

Самый простой случай - запустить кошелек Emercoin и все остальное на одном ПК. Для этого мы рекомендуем установить на ваш компьютер облегченный прокси-сервер Acrylic DNS . Acrylic улучшит производительность вашего ПК, разрешая DNS-запросы с локальным кешем, уменьшая задержки при просмотре или любой другой интернет-активности.

Для установки и начальной настройки в Windows см. Руководство на веб-сайте Acrylic . После установки вам необходимо настроить Acrylic для интеграции доменных зон Emercoin. Пример файла конфигурации доступен в Интернете . Для настройки вы должны перенаправить все запросы в зоны EmerDNS ( * .emc , * .coin , * .lib , * .bazar ) в локальный кошелек Emercoin , а все запросы в другие зоны - провайдеру DNS по умолчанию. Это можно настроить в файле конфигурации Acrylic следующим образом:

; Forward to primary (default) DNS server anything but EMC-zones
PrimaryServerHostNameAffinityMask=^*.emc;^*.coin;^*.lib;^*.bazar;*
PrimaryServerAddress=DNS_of_your_provider or any public DNS, for example: 8.8.4.4
PrimaryServerPort=53

; Forward to EMC wallet requests for EMC-zones only
SecondaryServerHostNameAffinityMask=*.emc;*.coin;*.lib;*.bazar
SecondaryServerAddress=127.0.0.1
SecondaryServerPort=5335

В Windows путь по умолчанию к файлу конфигурации Acrylic: C:\Program Files (x86)\Acrylic DNS Proxy\

Один компьютер, прокси-сервер BIND DNS

Вместо установки прокси-сервера DNS у вас также есть возможность установить полноценный DNS-сервер. К счастью, полный DNS-сервер BIND доступен для Windows бесплатно. В Интернете можно найти множество руководств, в которых показано, как установить BIND в Windows.

После установки вы должны указать BIND перенаправить EMC-зоны в локальный кошелек Emercoin, добавив в файл конфигурации BIND с именем.conf следующим образом:

zone "emc" {
 type forward;
 forward only;
 forwarders {
   127.0.0.1 port 5335; // Local Emercoin wallet
 };
};
zone "coin" {
 type forward;
 forward only;
 forwarders {
   127.0.0.1 port 5335; // Local Emercoin wallet
 };
};
zone "lib" {
 type forward;
 forward only;
 forwarders {
   127.0.0.1 port 5335; // Local Emercoin wallet
 };
};
zone "bazar" {
 type forward;
 forward only;
 forwarders {
   127.0.0.1 port 5335; // Local Emercoin wallet
 };
};

Локальная сеть, прокси BIND DNS

Если у вас есть сервер со статическим IP-адресом в вашей локальной сети, вы можете установить BIND на свой сервер и указать основной DNS-адрес настольного ПК на ваш сервер BIND. На сервере вы можете запустить безголовый кошелек Emercoin, на который BIND будет перенаправлять запросы в соответствующие зоны. В этом случае конфигурация BIND точно такая же, как и выше.

Также вы можете запустить кошелек Emercoin на любом ПК в вашей локальной сети, а не на сервере BIND. Если это так, вам следует изменить адрес пересылки в конфигурации BIND с 127.0.0.1 на IP-адрес этого ПК. Конечно, у этого ПК должен быть статический IP-адрес локальной сети.

Локальная сеть, прокси DNSMASQ

Современные маршрутизаторы обычно содержат в своей прошивке встроенный прокси-DNS. Обычно это DNSMASQ . Некоторые прошивки маршрутизатора, такие как DD-WRT и OpenWrt (а также другие), позволяют настраивать встроенный DNS-прокси (например, см. Руководство DD-WRT DNSMASQ или руководство OpenWrt DNSMASQ ).

В этом случае кошелек следует запускать на ПК со статическим IP-адресом в локальной сети, и DNSMASQ от маршрутизатора будет отправлять DNS-запросы на этот компьютер. Ниже приведены примеры строк конфигурации, которые необходимо добавить в dnsmasq.conf. В этом примере ПК, на котором запущен Emercoin, имеет IP-адрес в локальной сети 192.168.1.53.

--server=/emc/192.168.1.53#5335
--server=/coin/192.168.1.53#5335
--server=/lib/192.168.1.53#5335
--server=/bazar/192.168.1.53#5335

Общедоступный Интернет, прямой шлюз

Также существует возможность сделать публичный шлюз из обычного дерева DNS в EmerDNS. В этом случае вы можете арендовать любой общедоступный домен или поддомен и указать NS-записи для этого домена на машину, на которой запущен кошелек Emercoin с активным DNS-сервером на порте 53 (см. В следующем абзаце, как определить порт. ). После этого все обычные запросы NS к этому домену будут обрабатываться DNS-сервером, а ответы будут получены из базы данных Emercoin NVS в кошельке Emercoin.

Чтобы настроить новый домен в качестве общедоступного DNS-шлюза Emercoin, вам необходимо указать DNS-серверы как авторитетные для вашей зоны (домена). Для домена emergate.net мы указали два сервера имен (NS), уполномоченные для этого домена у нашего регистратора доменов:

Name Server: SEED1.EMERGATE.NET
Name Server: SEED2.EMERGATE.NET

Вы можете проверить эту информацию с помощью whois .

На каждом из этих серверов имен работает кошелек Emercoin с активным DNS-сервером, который обслуживает шлюз и локальную зону для emergate.net. Специфические параметры конфигурации DNS для файла emercoin.conf следующие:

Если вы используете DNS-шлюз только для своего локального компьютера (с Acrylic или BIND) или для вашей локальной сети, достаточно указать только один параметр в emercoin.conf :

# enable emc dns
emcdns=1

Это активирует DNS-сервер Emercoin и запустит его на порте по умолчанию 5335, что разрешено для перенаправления DNS с помощью DNS-прокси (Acrylic, BIND, dnsmasq и т. Д.).

Чтобы работать как общедоступный DNS-шлюз, вам необходимо указать некоторые дополнительные параметры:

# Gateway suffix. This suffix will be ignored when a request is passed to the internal gateway.
# Requests for other domain suffixes will be ignored.
emcdnssuffix=.yourgate.com

# NS Server port 53 is the default NS port and must be used if the server is public and "not forward only".
emcdnsport=53

# Filter for allowed zones. Protection for "cool hackers", who try to lookup any external domains through our server
# or attack someone else by DNS amplification mechanism. Currently, only the four EMC-zones are allowed.
emcdnsallowed=.coin|.emc|.lib|.bazar

# Optional path for a file that contains names in the local gateway's NS zone (like www.emergate.net).
# Must be full path. Example:
emcdnslocalcf=/usr/share/emercoin/emcdnslocal.conf

Локальный файл конфигурации ( EmerDNSlocal.conf выше) содержит пары в формате «имя = значение» . Пустое имя предполагает «шлюз как есть». Значения используют тот же формат, что и значения EmerDNS в блокчейне. Например, локальный файл для youtgate.com выглядит следующим образом:

# This is local zone config
# For built-in Emercoin DNS

=A=192.241.241.153|TXT=Emercoin site
www=A=192.241.241.153|TXT=Emercoin www-site

Виртуальные хосты (vhosts)

Когда вы запускаете виртуальные хосты , вам необходимо будет изменить конфигурацию вашего веб-сервера, чтобы правильно различать ваше имя хоста с таким количеством возможных суффиксов шлюза, которое вы хотите (или без суффикса, если имя разрешено LAN или локально). Это легко сделать, создав псевдоним vname со звездочкой "*" в качестве суффикса. В следующем примере показана соответствующая конфигурация веб-сервера Apache для виртуального сервера exchange.emc . Обратите внимание на строку ServerAlias :

<VirtualHost *:80>
  ServerAdmin [email protected]
  DocumentRoot "/var/www/exchange.emc/html"
  ServerName emc.cc.st
  ServerAlias exchange.emc*
  ErrorLog  "/var/log/exchange.emc-error_log"
  CustomLog "/var/log/exchange.emc-access_log" common
  ScriptAlias /cgi-bin/ "/usr/local/libexec/cgi-bin/"
</VirtualHost>

Получение SSL сертификатов с Postmet

C 2021 года появилась возможность получить SSL сертификат для доменных зон Emercoin. На сайте postmet.com можно оставить заявку на выпуск сертификата, следуя инструкциям на их сайте:

  • Скачайте шаблон альтернативного имени Sublect (SAN) req_san_example.conf.
  • Отредактируйте этот пример, напишите свои фактические доменные имена (CN, DNS.n) или другое значение (Country, STate, Location, Orgznization)
  • Создайте запрос подписи сертификата (CSR) и файлы закрытого ключа с помощью команды: openssl req -new -out domain.lib.csr -newkey rsa: 2048 -nodes -sha256 -keyout domain.lib.key -config req_san_example.conf
  • Заполните форму с CSR и информацией о вас.