-
Notifications
You must be signed in to change notification settings - Fork 0
twister seeder node setup [translate required]
[EN] TRANSLATION ONLY. LATEST VERSION AVAILABLE IN THE ORIGINAL SOURCE [RU]
Публичная нода twister-seeder - служебный сервис для поддержки сетевой инфраструктуры twister-core, включающий в себя поисковый сервер доступных нод twisterd и DNS сервер, служащий для их ретрансляции новым узлам, которые впервые подключаются к сети twister.
Оригинальное описание из официального блога twister.net.co (архив)
DNS Seeders When twisterd is executed for the first time, it must locate some initial nodes to join the peer-to-peer network. twister, like Bitcoin, does that by trying a couple of special DNS servers (seeders) which provide an updated list of known peers. Currently twisterd is configured to try 4 different DNS Seeders but 3 of them depend on twister.net.co domain by Godaddy’s infrastructure. Some countries are known to have attacked this domain in order to prevent twister’s initial bootstrapping.
How one may help? If you have a 24×7 linux machine and you are able to add an special NS record to your domain, please consider running twister-seeder. Then let me know (@mfreitas) and I will add your domain to the code base.
В данной статье будет рассмотрен процесс организации публичной ноды twister-seeder, ее запуск и тестирование на примере Ubuntu 20.10.
Для организации публичной ноды twister-seeder, необходимо зарегистрировать от 2 до 3 доменов, где первый - адрес хоста, на котором будет запущена нода и два - NS сервера для хоста. Второй NS домен необходим, поскольку большинство регистраторов требуют указания от двух NS в настройках.
На данный момент, зарегистрировать домен можно бесплатно, с помощью сервиса dot.tk или nic.ua в зоне pp.ua. По некоторой информации, сервис dot.tk/freenom.com работает не всегда стабильно и может периодически не отвечать на запросы, в то время как pp.ua, согласно регламенту зоны, потребует от вас указания полной информации о себе в данных whois, иначе домен может быть снят с регистрации и возобновлен на платной основе. Оптимальным вариантом будет регистрация платного домена, но следует учесть, что регистратор GoDaddy уже используется для официальной ноды и ранее имели место преценденты атак на инициальные ноды некоторыми странами, так что использование устойчивых к блокировкам регистраторов или отличных от GoDaddy будет оптимальным решением.
Currently twisterd is configured to try 4 different DNS Seeders but 3 of them depend on twister.net.co domain by Godaddy’s infrastructure. Some countries are known to have attacked this domain in order to prevent twister’s initial bootstrapping.
Расcмотрим на примере ноды twisterarmy. На данный момент мы используем бесплатный сервис dot.tk и три домена:
twisterarmyseed.tk NS twisterarmydns.tk, twisterarmydns2.tk
twisterarmydns.tk A Server IP
twisterarmydns2.tk A Server IP
При регистрации данные домены были добавлены в корзину и оформлены на 12 месяцев бесплатно. В процессе они могут быть пролонгированы на платной основе.
Для корректной работы twister-seeder, потребуется "белый" IP и доступ из сети по 53 порту. Большинство VPS предоставляют все необходимое для поднятия публичной ноды, но некоторые из них могут иметь ограничение в регламенте, касающиеся поисковых сервисов, которые создают нагрузку на трафик. Тем не менее, twister-seeder не требователен к ресурсам и может быть запущен на минимальном тарифе. Для этих целей можно порекомендовать yourserver.se, который так же является абузоустойчивым и принимающим оплату в криптовалюте.
Ниже представлены технические требования согласно сетевой нагрузке состоянием на 2021:
RAM: 0.2% 3Gb
CPU: 0.3% Intel Core 2 duo
Bandwidth: 100Kb per minute
(default settings, on 7/119 available)
В данном примере рассмотрен запуск twister-seeder от root, поэтому для продолжения достаточно открыть 53 порт в фаервол, например, с помощью утилиты ufw:
sudo ufw allow 53
Если для развертывания ноды используется локальная инфраструктура с роутером на выход в сеть, убедитесь что 53 порт адресуется на локальный сервер. Убедитесь, что провайдер не блокирует 53 порт а так же предоставляет "белый" / выделенный IP.
Установите зависимости ПО:
sudo apt-get install build-essential libboost-all-dev libssl-dev
Загрузите последнюю версию twister-seeder:
git clone https://github.com/miguelfreitas/twister-seeder.git
Перейдите в директорию twister-seeder и скомпилируйте dnsseed:
cd twister-seeder
make
Отключите сервис systemd-resolved для освобождения 53 порта
sudo systemctl stop systemd-resolved
Или добавьте следующую строку в конец файла /etc/systemd/resolved.conf
DNSOverTLS=yes
Запустите dnsseed от root
sudo ./dnsseed -h twisterarmyseed.tk -n twisterarmydns.tk
Если с момента регистрации домена прошло более 24 часов, убедитесь что dnsseed доступен в сети:
host -a twisterarmyseed.tk twisterarmydns.tk
Результат:
Trying "twisterarmyseed.tk"
Using domain server:
Name: twisterarmydns.tk
Address: 95.158.54.246#53
Aliases:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 18126
;; flags: qr aa rd; QUERY: 1, ANSWER: 3, AUTHORITY: 0, ADDITIONAL: 0
;; QUESTION SECTION:
;twisterarmyseed.tk. IN ANY
;; ANSWER SECTION:
twisterarmyseed.tk. 40000 IN NS twisterarmydns.tk.
twisterarmyseed.tk. 60 IN A 91.199.223.71
twisterarmyseed.tk. 60 IN A 146.185.185.41
Received 99 bytes from 95.158.54.246#53 in 0 ms
- Создайте в домашней директории root файл twister-seeder.sh со следующим содержимым:
systemctl stop systemd-resolved
/{PATH_TO}/dnsseed -h twisterarmyseed.tk -n twisterarmydns.tk
- Отредактируйте задание crontab от пользователя root:
sudo crontab -e
- Добавьте следующую строку в последней строке:
@reboot /root/twister-seeder.sh
Используйте утилиту screen для ручного запуска twister-seeder без привязки к сессии SSH.
Предоставьте адрес вашей ноды узлам twiter-core, отправив ваш адрес в официальный репозиторий:
https://github.com/miguelfreitas/twister-core/commit/323314ebf3e08bb2dd3e307e664a4ec055fa9dcc
Q. Нужна ли отдельная установка twister-seeder наряду с twister-core и выполняет ли twister-core ту же функцию?
A. twister-seeder является отдельной сервисной службой. Это менее ресурсоемкое ПО, выполняющее принципиально другие задачи, подобно bitcoin-seeder и bitcoin-core, где первый осуществляет сетевую маршрутизацию, а второй - является кошельком для приватного ключа twister-core а также набором инструментов для обмена сообщениями.
Original answer by @miguelfreitas
It does:
- it is a crawler of all the known peers,
- it keeps track of the uptime/availability of each peer
- it ranks peers from the most available to the least
- it serves DNS requests (reporting the list of the most available known peers
Q. Для чего необходима запись NS и почему нельзя обойтись статичным IP?
A. Запись NS необходима для других нод, на которых запущен twister-seeder. Таким образом, происходит делегирование поддомена вашей ноды другим узлам. Например, если адрес текущей ноды twisterarmyseed.tk, то обращение к nonstd.twisterarmyseed.tk будет возвращать адреса других узлов.
Это может быть отображено более наглядно с помощью команды host nonstd.twisterarmyseed.tk
, где twisterarmyseed.tk - адрес хоста и twisterarmydns.tk - адрес NS
Original answer by @miguelfreitas
Actually it is the NS record that is important. I’m not specialist but my understanding is that you are delegating a subdomain to another server (the one running twister-seeder).
The A record would just resolve directly to another IP. What we want is to redirect the client to request the answer from that IP. Type ‘host seed.twister.net.co’ to see what i mean.
Q. Какой регистратор домена наиболее оптимален для twister-seeder?
A. Для данной цели может использоваться любой регистратор, позволяющий добавлять свои NS.
В качестве бесплатного варианта, могут использоваться провайдеры dot.tk (первый год) или nic.ua (с доменным уровнем pp.ua на постоянной основе).
Q. twister-seeder не находит новые ноды с сообщением 0/2 available (2 tried in 333s, 0 new, 0 active), 0 banned; 31 DNS requests, 13 db queries
A. Это может означать то, что ни одна из нод twister-seeder не доступна и ваша нода не может получить инициальный список адресов для их последующей индексации. Список данных нод предоставлен в файле main.cpp.
Для решения данной проблемы, необходимо узнать адрес доступной сети, разместив соответствующий тикет здесь или на в официальной ветке twister-seeder. После чего добавить в начало массива неофициальные адреса seeder-нод, например, twisterarmyseed.tk или twisterseed.tk (состоянием на 2021 год) или указать их IP, который может быть получен командой host. После добавления новых нод, необходимо повторно скомилировать приложение.
Пример:
static const string mainnet_seeds[] = {"twisterseed.tk","twisterarmyseed.tk","seed.twister.net.co","seed2.twister.net.co","seed3.twister.net.co",""};
Или:
static const string mainnet_seeds[] = {"IP of twisterseed.tk","IP of twisterarmyseed.tk","seed.twister.net.co","seed2.twister.net.co","seed3.twister.net.co",""};
Q. После отключения сервиса systemd-resolved sudo systemctl stop systemd-resolved
не работает обновление системы (нет подключения)
A. Для решения проблемы, необходимо в файле /etc/systemd/resolved.conf добавить в конец файла строку DNSOverTLS=yes
и перезагрузить сервер, таким образом, порт 53 будет оставаться свободным.
Официальная документация
Help decentralize twister even more!
Организация публичной ноды twister-seeder позволит также иметь возможность запуска удаленной ноды twister-core для удобного доступа к twister или любого ПК или смартфона. Для легкой и безопасной настройки удаленной ноды twister-core, используйте менеджер установки twister-cli-installer или следующую страницу документации Remote Twister Node setup (Ubuntu Debian).
@dryabov