gemlog/public/uk/agate-branch-with-raw-ipv6-host-support.gmi
2026-03-31 17:56:16 +03:00

36 lines
No EOL
3.3 KiB
Text
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Гілка Agate з підтримкою хостів IPv6
Будучи користувачем мережі Yggdrasil і Agate (github.com/mbrubeck/agate) як єдиної більш-менш адекватної реалізації сервера Gemini protocol на Rust, ніяк не придумаю як обійти відсутність в ньому резольву хостів без DNS, що є наслідком політики rustls і RFC 6066 зокрема:
=> https://www.datensen.com/blog/support/setting-the-tls-servername-to-an-ip-address-is-not-permitted/ Deprecation Warning: Setting the TLS ServerName to an IP address is not permitted by RFC 6066
Враховуючи свій досвід і підтримку міксованих CN в Lagrange (див. сертифікат gemini://bbs.geminispace.org) вирішив зробити просто заглушку на випадок, якщо SNI не було розпізнано:
=> https://github.com/mbrubeck/agate/pull/433
Щоб це спрацювало, в корені теки `.certificates` повинен бути розташований сертифікат за замовчуванням, тобто такий, що використовуватиметься у разі, якщо резольвер не знайшов жодного співпадіння в реєстрі сертифікатів і значення хосту було порожнім (при використанні IPv4 і IPv6 / Yggdrasil зокрема)
Тестую обнову тут:
=> gemini://[202:68d0:f0d5:b88d:1d1a:555e:2f6b:3148] Yggdrasil (AAAA gemini://ps.ygg)
=> gemini://[505:6847:c778:61a1:5c6d:e802:d291:8191] Mycelium (CN=ps.ygg)
Демон agate, у цьому випадку, запускається так:
``` bash
/usr/local/bin/agate --content /home/agate/ps/public \
--addr [202:68d0:f0d5:b88d:1d1a:555e:2f6b:3148]:1965 \
--addr [505:6847:c778:61a1:5c6d:e802:d291:8191]:1965
```
* попередньо, можна запустити agate використовуючи аргумент `--hostname ps.ygg`: тоді сервер автоматично згенерує для варіанту DNS відповідні сертифікати, але продакшн "мультихост" в мене відбувається без цього аргументу (як показано вище)
Нагадаю, що фічу DNS-less резольву з коробки підтримує сервер gmid, написаний на Clang:
=> gmid-server-for-gemini-protocol.gmi Gmid - багатофункціональний сервер для Gemini
## Посилання
=> gemini://bbs.geminispace.org/s/Yggdrasil/40748 Обговорення на BBS
## Дивіться також
=> agate-virtual-host-usage-examples.gmi Специфіка роботи з віртуальними хостами Agate
=> meshname-as-permanent-and-green-alternative-to-dns.gmi Meshname як перманентна, енерго-ефективна альтернатива DNS
=> alfis-dns-domain-registration-in-blockchain.gmi Alfis DNS - реєстрація домену в блокчейн
=> mirrors.gmi Список офіційних дзеркал цього блогу