Не моё, но может кому то интересно. Как то давно мне присылали.
Альтернативная зона DNS .bit
Материал из Википедии:
Namecoin (англ. name — «имя», англ. coin — «монета») — основанная на технологии Bitcoin система хранения произвольных комбинаций вида «имя-значение», наиболее известным применением которой является система альтернативных корневых DNS-серверов.
Nameсoin не управляются какой-либо одной организацией.
Каждый узел сети Nameсoin имеет полную копию распределённой базы данных.
Принцип одноранговой сети и отсутствие административного центра делает невозможным изъятие имени.
Сейчас в Namecoin регистрируются домены только в зоне .bit, для которых используется
пространство имён «d/» (например, запись домена «bitcointalk.bit» использует имя «d/bitcointalk»).
Мощность распределённой вычислительной сети гарантирует, что не появится двух одинаковых имён и что ваше соответствие «имя-значение» («домен-адрес» в частном случае) не сможет быть присвоено и изменено ни одним посторонним лицом.
https://namecoin.info/ - главная страница проекта
https://namecoin.info/?p=download - скачать namecoin wallet
https://wiki.namecoin.org/index.php?title=Welcome - Wiki
Для регистрации домена и управления им качаем namecoin wallet.
Регистрация нового домена стоит 0.02NMC, обновление записи - 0.005NMC.
На момент написания текста биржевой курс NMC/USD - 0.36.
То есть регистрация и обновление домена - это примерно 0.0072$ и 0.0018$ соответсвенно.
Срок жизни домена 36000 блоков - примерно несколько месяцев. Потом домен нужно обновить за те же 0.005 NMC.
Купить NMC можно на криптобиржах за USD. Например http://btc-e.com (принимает PerfectMoney).
Простой способ регистрации и конфигурации домена:
Для резольвинга доменов в зоне .bit традиционные DNS бесполезны. Зато очень полезны альтернативные DNS.
- Скачиваем wallet, запускаем, ждём синхронизации сети (будет скачано несколько ГБ блокчейна).
- Переходим на вкладку Manage Names
- Пишем свой домен в поле Name (напрмер d/mysite для mysite.bit) и нажимаем Submit
- Переходим на вкладку Custom Configuration и пишем {"ip":["123.123.123.1", "123.123.123.2"]} если например хотим привязать наш домен к ip-адресам "123.123.123.1" и "123.123.123.2". Нажимаем Ok.
- Ждём 12 блоков для регистрации нового домена и 6 блоков для обновления записи (примерно 3 часа).
- PROFIT!!!
Например проект https://www.opennicproject.org/.
То есть для использования в своём софте, мы просто хардкорно зашьём в код ip-адреса альтернативных DNS.
Берём ip-адреса с этой страницы http://wiki.opennicproject.org/Tier2.
А далее из своего софта для резольвинга доменов используем вместо gethostbyname другую
малопопулярную и плоходокументированную API-функцию, принимающую ip-адреса альтернативных DNS в качестве аргумента и не использующую DNS из настроек системы по умолчанию.
Вот и вся технология!
Альтернативная API-функция доступна начиная от Windows XP, не требует наличия дополнительных библиотек, админ привилегий и т.п. 100% применима для доступа к CC из тихих, маленьких и незаметных программ.
Для тех, кто считает хардкорный список ip-адресов opennicproject проблемой:
Ещё добавлю что новые .bit домены доступны в opennicproject DNS сразу после того как станут доступны в самом блокчейне без задержки.
- DNS живут долго (годами).
- В свой софт можем вшить большой список DNS. Все сразу не отвалятся 100%. Да и через год не отвалятся.
- В большинстве случаев DNS opennicproject используют обычные пользователи персональных ЭВМ, просто прописав их в настройки сети. Поэтому 99.99% запросов к DNS opennicproject это запросы резольвинга google.com, fb.com и прочего 100% траст. Поэтому и сами DNS сервера - это очень очень много траста, который не загадить 0.00000001% запросов для резольвинга CC софтом, который антивирусы считают вредоносным.
- Мы не используем DNS opennicproject в качестве CC или чего либо ещё. Только для резольвинга домена.
- Opennicproject не имеет никакого влияния на зону .bit.
- Opennicproject очень лояльно относится к серым и чёрным темам. И кроме зоны .bit, также резольвит .onion, .i2p. А так же поддерживает свои альтернативные зоны (это основная деятельность организации), например зону .pirate.
Пример кода:
Код (C++):
#include "windows.h" #include "stdio.h" #include <winsock2.h> #include <windns.h> #pragma comment(lib,"ws2_32.lib") #pragma comment(lib, "Dnsapi.lib") void main() { DNS_STATUS dnsStatus; IN_ADDR ipaddr; PDNS_RECORD ppQueryResultsSet, p; PIP4_ARRAY pSrvList = NULL; char* bitdomen = "bluishcoder.bit"; //целевой домен char* dnsips[] = { "103.25.202.192", "92.222.80.28", "78.138.97.93" }; //вшитые IP dns со страницы http://wiki.opennicproject.org/Tier2 int num_dnsips = sizeof(dnsips) / sizeof(dnsips[0]); pSrvList = (PIP4_ARRAY)LocalAlloc(LPTR, sizeof(IP4_ARRAY)); bool good_resolve = false; for (int i = 0; i < num_dnsips; i++) { pSrvList->AddrArray[0] = inet_addr(dnsips[i]); pSrvList->AddrCount = 1; //Та самая альтернативная API-шка dnsStatus = DnsQuery(bitdomen, DNS_TYPE_A, DNS_QUERY_USE_TCP_ONLY, pSrvList, // Documented as reserved, but can take a PIP4_ARRAY for the DNS server &ppQueryResultsSet, NULL); p = ppQueryResultsSet; while (p) // Loop through the returned addresses { ipaddr.S_un.S_addr = (p->Data.A.IpAddress); char* hostIP = inet_ntoa(ipaddr); // Результат!!! printf("The IP address of %s is %s \n", p->pName, hostIP); p = p->pNext; good_resolve = true; } if (good_resolve) break; } if (pSrvList) LocalFree(pSrvList); DnsRecordListFree(ppQueryResultsSet, DnsFreeRecordList); //hostIP сохраняем, вставляем в url-запросы и отстукиваем через wininet например }
Альтернативная зона .bit
Дата публикации 7 сен 2017
| Редактировалось 10 янв 2018