- Поддерживаемые зоны DNS
- Доступ к зонам EmerDNS
- Создание и поддержка записи DNS
- Интеграция в обычное дерево DNS
- SSL-сертификаты для доменных зон EmerDNS
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:
- Расширение браузера Peername.com (Firefox, Chrome, Opera)
- Расширение для браузера Blockchain-DNS.info (firefox, chrome)
- расширение для браузера friGate (Firefox, Chrome, Opera)
Более обновленный список расширений браузера, поддерживающих 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, создайте (или обновите) пару имя-> значение под аббревиатурой службы «dns» в 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
Разрешение поддоменов применяется в следующем порядке, рекурсивно ко всем поддоменам третьего уровня и глубже:
- Сначала проверьте SD-запись в родительском значении DNS на предмет ссылки на запрошенный поддомен. Если ссылка на субдомен найдена, найдите субдомен в подсистеме Emercoin NVS.
- Затем проверьте наличие записи сервера имен (NS) в родительском значении DNS. Если найдено, сгенерировать ссылку на внешний сервер имен.
- Если в записях 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 и информацией о вас.