Гілка Agate з підтримкою хостів IPv6
Будучи користувачем мережі Yggdrasil і Agate (github.com/mbrubeck/agate) як єдиної більш-менш адекватної реалізації сервера Gemini protocol на Rust, ніяк не придумаю як обійти відсутність в ньому резольву хостів без DNS, що є наслідком політики rustls і RFC 6066 зокрема:
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 зокрема)
Тестую обнову тут:
Yggdrasil (AAAA gemini://ps.ygg)
Демон agate, у цьому випадку, запускається так:
/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 - багатофункціональний сервер для Gemini
Посилання
Дивіться також
Специфіка роботи з віртуальними хостами Agate
Meshname як перманентна, енерго-ефективна альтернатива DNS
Alfis DNS - реєстрація домену в блокчейн
Список офіційних дзеркал цього блогу
/uk/