mirror of
https://codeberg.org/postscriptum/gemlog.git
synced 2026-03-31 20:55:29 +00:00
add meshname-as-permanent-and-green-alternative-to-alfis-dns.gmi
This commit is contained in:
parent
bbaef3fc28
commit
d92d284cb5
4 changed files with 131 additions and 2 deletions
|
|
@ -44,4 +44,5 @@ agate --content /path/to/content\
|
|||
|
||||
### Дивіться також
|
||||
|
||||
=> i2p-capsule-in-gemini-space-with-agate.gmi Публікація капсули Gemini в I2P на прикладі сервера Agate
|
||||
=> i2p-capsule-in-gemini-space-with-agate.gmi Публікація капсули Gemini в I2P на прикладі сервера Agate
|
||||
=> meshname-as-permanent-and-green-alternative-to-alfis-dns.gmi Meshname як перманентна, енерго-ефективна альтернатива Alfis DNS
|
||||
|
|
@ -93,4 +93,5 @@ browser.fixup.domainsuffixwhitelist.ygg = true
|
|||
|
||||
### Дивіться також
|
||||
|
||||
=> rust-cross-compilation-with-cross-crate.gmi Простий спосіб крос-компіляції Rust з cross
|
||||
=> rust-cross-compilation-with-cross-crate.gmi Простий спосіб крос-компіляції Rust з cross
|
||||
=> meshname-as-permanent-and-green-alternative-to-alfis-dns.gmi Meshname як перманентна, енерго-ефективна альтернатива Alfis DNS
|
||||
|
|
@ -16,6 +16,7 @@
|
|||
|
||||
### Нотатки
|
||||
|
||||
=> meshname-as-permanent-and-green-alternative-to-alfis-dns.gmi 2026-03-31 Meshname як перманентна, енерго-ефективна альтернатива Alfis DNS
|
||||
=> run-same-firefox-version-using-custom-profile.gmi 2026-03-29 Окремі профілі Firefox на базі спільного релізу
|
||||
=> build-firefox-from-source-on-fedora-linux.gmi 2026-03-28 Збірка Firefox з початкового коду в Linux / Fedora 43
|
||||
=> psocks-v0.5.0-release-with-multi-list-features.gmi 2026-03-28 Реліз psocks v0.5.0 з підтримкою мульти-списків
|
||||
|
|
|
|||
|
|
@ -0,0 +1,126 @@
|
|||
# Meshname як перманентна, енерго-ефективна альтернатива Alfis DNS
|
||||
|
||||
Давно не користуюсь централізованими реєстраторами доменних імен і де мені дійсно потрібен DNS - користувався Alfis. Утім, ця система побудована з використанням блокчейн і потребує майнингу для пролонгації домену один раз на рік. В умовах поточної енергетичної кризи, це для мене розкіш. Також, останнім часом намагаюсь позбутись голодних до CPU і трафіку P2P процесів, що постійно смикають мережу на предмет синхронізації, та відправляють туди власний знімок блокчейну; приймають участь в криптографічних підписах, тощо.
|
||||
|
||||
Alfis DNS - в оновному поширений в мережі Yggdrasil, через свою вбудовану зону .ygg. Через природу end-to-end шифрування трафіку Yggdrasil, його користувачі в основному сидять на HTTP замість HTTPS. Тому якщо з якихось причин ваш домен буде протерміновано - гіпотетично форми логіну можуть бути скомпрометовані через ігнорування і неприязнь користувачів до (само-підписаних) сертифікатів у цій мережі.
|
||||
|
||||
Я довго думав на тему обходу цієї проблеми, іноді задумувався про якесь централізоване сховище Git, коли користувачі можуть обирати собі "провайдера" для реєстру, таким чином, щоб резольвер не викликав конфліктів на дублікатах. В цьому плані, черпав натхнення з CRXN, але толком поки не дійшло до реалізації.
|
||||
|
||||
Нещодавно, в просторі Gemini з'явився локальний клон "Антени":
|
||||
=> gemini://bbs.geminispace.org/s/Yggdrasil/40698
|
||||
|
||||
В ньому були присутні зокрема опції:
|
||||
=> gemini://amaiaswl5p4zyaaaaaaaaadxo4.meship
|
||||
=> gemini://amaiaswl5p4zyaaaaaaaaadxo4.meshname
|
||||
|
||||
Тому знову згадав про такий варіант "легкого" DNS, враховуючи, що сервер Agate (на відміну від gmid) досі не вміє обробляти сирі IP без проблем з SNI. Вирішив таки встановити і заодно розібратись в архітектурі цього типу DNS
|
||||
|
||||
## Що таке Meshname
|
||||
|
||||
Meshname - це по суті своїй простенький DNS сервер, в оригіналі написаний мовою Go (також має реалізацію на C++) який на відміну від Alfis не маршрутизує через себе усі DNS запити, а лише конвертує доменну адресовану йому зону в IP, схоже до сервісів .onion або тунелів .b32.i2p
|
||||
|
||||
У цього сервера є дві реалізації протоколу
|
||||
|
||||
### .meship
|
||||
|
||||
Звичайна конвертація адреси IPv6 в бінарний формат і потім - в base 32. І навпаки. Детальніше про реалізацію можна почитати тут:
|
||||
|
||||
=> https://github.com/zhoreeq/meshname/blob/master/protocol.md
|
||||
|
||||
### .meshname
|
||||
|
||||
На відміну від .meship (де для резольву потрібен лише локальний meshnamed) використання .meshname - передбачає наявність сервера meshnamed цільовому вузлі. Такий формат потрібен лише у разі, якщо вам потрібні додаткові записи NS, наприклад для серверів XMPP. При такому підході, записи на стороні сервера зберігатимуться в форматі JSON.
|
||||
|
||||
Особисто я користуюсь тільки .meship, тому нижче інструкція для нього.
|
||||
|
||||
## Встановлення
|
||||
|
||||
Збірка успішно відбулась на Fedora 43
|
||||
|
||||
``` bash
|
||||
git clone https://github.com/zhoreeq/meshname.git
|
||||
cd meshname
|
||||
make
|
||||
sudo install meshnamed /usr/local/bin
|
||||
```
|
||||
|
||||
=> install-latest-golang-version-on-debian-linux.gmi Встановлення останньої версії Go в Debian
|
||||
|
||||
### systemd
|
||||
|
||||
``` /etc/systemd/system/meshnamed.service
|
||||
[Unit]
|
||||
Description=Distributed naming system for IPv6 mesh networks
|
||||
Wants=network.target
|
||||
After=network.target
|
||||
|
||||
[Service]
|
||||
User=nobody
|
||||
Group=nogroup
|
||||
ProtectHome=true
|
||||
ProtectSystem=true
|
||||
SyslogIdentifier=meshnamed
|
||||
ExecStart=/usr/local/bin/meshnamed -listenaddr [::1]:53535
|
||||
Restart=always
|
||||
TimeoutStopSec=5
|
||||
|
||||
[Install]
|
||||
WantedBy=multi-user.target
|
||||
```
|
||||
=> https://github.com/zhoreeq/meshname/blob/master/meshnamed.service
|
||||
|
||||
### resolved
|
||||
|
||||
Оригінальна документація передбачає приклад dnsmasq:
|
||||
=> https://github.com/zhoreeq/meshname/blob/master/USAGE.md#configure-dnsmasq-as-a-primary-dns-resolver-with-meshname-support
|
||||
|
||||
Утім, я скористався іншим підходом:
|
||||
|
||||
``` /etc/systemd/resolved.conf
|
||||
[Resolve]
|
||||
DNS=[::1]:53535
|
||||
Domains=~meshname ~meship
|
||||
```
|
||||
|
||||
``` bash
|
||||
sudo systemctl restart systemd-resolved
|
||||
```
|
||||
|
||||
``` bash
|
||||
dig AAAA aibgruhq2w4i2hi2kvpc62zrja.meship
|
||||
dig AAAA google.com
|
||||
```
|
||||
|
||||
## Користування
|
||||
|
||||
Отримати домен будь-якого IP, наприклад для howto.ygg, можна командою:
|
||||
|
||||
``` bash
|
||||
$ meshnamed -getname 222:a8e4:50cd:55c:788e:b0a5:4e2f:a92c
|
||||
airkrzcqzucvy6eowcsu4l5jfq
|
||||
```
|
||||
|
||||
Таким чином, при активному локальному сервері meshnamed, замість:
|
||||
|
||||
=> http://[222:a8e4:50cd:55c:788e:b0a5:4e2f:a92c]/yggdrasil:dns:meshname
|
||||
|
||||
Можна відкрити сайт за адресою:
|
||||
|
||||
=> http://airkrzcqzucvy6eowcsu4l5jfq.meship/yggdrasil:dns:meshname
|
||||
|
||||
Інші команди для поточної версії:
|
||||
|
||||
``` bash
|
||||
meshnamed -help
|
||||
```
|
||||
|
||||
## Посилання
|
||||
|
||||
=> https://github.com/zhoreeq/meshname
|
||||
=> https://habr.com/ru/post/550688/
|
||||
|
||||
### Дивіться також
|
||||
|
||||
=> alfis-dns-domain-registration-in-blockchain.gmi Alfis DNS - реєстрація домену в блокчейн
|
||||
=> agate-virtual-host-usage-examples.gmi Специфіка роботи з віртуальними хостами Agate
|
||||
=> crxn-gre-fastd-as-the-alternative-to-crypto-hype.gmi CRXN, GRE, fastd як альтернатива крипто-садомазохізму
|
||||
Loading…
Add table
Add a link
Reference in a new issue