DNSFS: Самый жуткий способ использовать DNS, который вы только видели
DNSFS: Самый Странный Хак Хранения Данных в Облаке
Давай начнём с мысленного эксперимента. Представь, что ты хранишь файлы не в S3, не в какой-нибудь навороченной базе данных, а прямо в кэшах DNS-серверов по всему миру. Твои данные буквально плавают где-то между миллионами устройств, фрагментированные на серверах, которые тебе не принадлежат.
Звучит как сюжет из киберпанк-романа? Так вот — кто-то это реально сделал.
Как Всё Началось
Прежде чем перейти к безумствам, затронем тему, которую разработчики обычно принимают как данность: DNS TTL. Когда ты запрашиваешь домен, резолвер сохраняет ответ на какое-то время, а потом проверяет его снова. Большинство из нас думает, что это пара минут или часов максимум.
Но есть нюанс: некоторые резолверы с радостью будут хранить записи целую неделю, если правильно попросить.
Это открытие породило вопрос: если DNS-кэш может держать данные так долго, можно ли намеренно записывать туда файлы? Не просто доменные имена, а настоящие данные?
Ответ, как ни странно, оказался положительным.
Знакомься: DNSFS
DNSFS вдохновлён более ранним хаком под названием PingFS, где данные хранились в ICMP-пакетах. Проблема PingFS? Нужно было постоянно гонять пакеты туда-сюда, чтобы данные не исчезли. Перестал слать — данные пропали.
DNSFS решает эту проблему элегантно. Раз DNS-резолверы кэшируют ответы, достаточно один раз записать кусок данных — и он останется там до истечения TTL. Сам резолвер поддерживает твои данные в живых.
Задумайся на секунду. По сути ты используешь чужую инфраструктуру — тайно от её владельцев — как распределённое хранилище с избыточностью.
Как Это Работает Технически
Реализация одновременно гениальна и пугающа.
Для работы системы нужны открытые DNS-резолверы — серверы, которые отвечают на запросы для любых доменов. Теоретически их должны закрывать файрволом от интернета, потому что они опасны для DDoS-атак. Но правда в том, что миллионы устройств поставляются с неправильно настроенными DNS-сервисами, доступными извне.
Система работает так: файл разбивается на мелкие кусочки, кодируется в DNS-запросы и разбрасывается по интернету. Каждый резолвер, получивший и закэшировавший запрос, теперь хранит часть твоего файла. Чтобы извлечь данные — просто запрашиваешь те же резолверы и собираешь куски обратно.
Красота (и ужас) подхода в том, что данные живут в кэше до истечения TTL — безо всяких постоянных соединений.
Сканирование Интернета
Вот где становится одновременно впечатляюще и не по себе.
Для DNSFS нужно найти открытые резолверы по всему интернету. Это значит — просканировать миллиарды IP-адресов и отобрать те, что будут отвечать на произвольные DNS-запросы.
Один разработчик использовал masscan с умными BPF-фильтрами, чтобы эффективно выхватывать только полезные резолверы, отсеивая.Authoritative-only серверы и прочий шум. Результат? Почти 4 миллиона открытых DNS-резолверов по всему земному шару.
Географическое распределение впечатляет. Китай лидирует с 1,4 миллиона открытых резолверов, за ним США, Южная Корея, Россия и Бразилия. Но вот что интереснее: если нормировать на количество пользователей интернета, маленькие страны вроде Сент-Китс и Невис показывают невероятную плотность — примерно один резолвер на 51 человека.
Почему Это Важно (Помимо Крутости)
Будем честны: DNSFS совершенно точно не подходит для продакшена. Медленно, ненадёжно, не протестировано, и с точки зрения безопасности — кошмар. Да и сканирование интернета в поисках открытых резолверов поднимает серьёзные вопросы о согласии и границах сетей.
Но суть не в этом.
DNSFS — это тот тип творческого, бесшабашного мышления, который двигает наше понимание сетевых систем вперёд. Он обнажает, как много неправильно настроенной инфраструктуры разбросано по интернету, заставляя говорить о необходимости её защиты. Демонстрирует удивительную живучесть закэшированных данных в распределённых системах. И показывает, как на первый взгляд жёсткие протоколы можно использовать совершенно неожиданно.
Это ещё и напоминание о том, какой беспорядок царит в интернете на самом деле. Миллионы открытых резолверов работают на домашних роутерах, IoT-устройствах, корпоративном оборудовании. Большинство администраторов понятия не имеют, что их DNS доступен извне.
Что Из Этого Следует
DNSFS не будет хранить твои данные в ближайшее время, но у него есть ценные уроки:
Протоколы — это просто отправные точки. DNS создавался для разрешения имён. Это не значит, что его возможности исчерпываются одной функцией.
Допущения о безопасности имеют значение. Открытые резолверы существуют из-за чьей-то ошибки в конфигурации. Всегда проверяй, что открыто в твоей инфраструктуре.
Креативные ограничения рождают инновации. Лучшие хаки часто появляются, когда работаешь внутри неожиданных рамок. DNSFS существует, потому что кто-то спросил: "А что, если использовать кэш?"
Интернет страннее и податливее, чем мы думаем. Иногда самые интересные системы — те, которые вообще не должны работать.
Сталкивался ли ты с необычными протокольными эксплойтами или креативными инфраструктурными хаками? Команда NameOcean всегда рада слышать о том, как разработчики выжимают из технологий максимум.