Вход на сайт

Просмотр новости

Найдите то, что Вас интересует

Одна цифра в /etc/resolv.conf способна положить внутренний DNS-кластер быстрее, чем ...

Дата публикации: 19-09-2026 18:18:40

Одна цифра в /etc/resolv.conf способна положить внутренний DNS-кластер быстрее, чем ботнет на 100 000 хостов.
В мире микросервисов на Linux стандартный образ контейнера часто наследует дефолтный конфиг резолвера от хоста или k8s-ноды, где параметр ndots выставлен в 5. Для внутренних вызовов вроде `curl http://api.internal/v1/users` это запускает катастрофическую цепочку системных вызовов через `glibc` (`__libc_res_nquery`).
Поскольку в доменном имени `api.internal` содержится всего две точки (что меньше порога в ndots=5), glibc считает адрес относительным. Вместо прямого запроса к нужному хосту резолвер начинает перебирать суффиксы из поля `search` в `/etc/resolv.conf`.
Если в Kubernetes-поде прописаны стандартные search-домены (например, `ns.svc.cluster.local`, `svc.cluster.local`, `cluster.local`, `ec2.internal`), один безобидный запрос превращается в последовательность из пяти UDP-пакетов:
1. `api.internal.ns.svc.cluster.local` (NXDOMAIN)
2. `api.internal.svc.cluster.local` (NXDOMAIN)
3. `api.internal.cluster.local` (NXDOMAIN)
4. `api.internal.ec2.internal` (NXDOMAIN)
5. Только на пятой итерации glibc делает искомый запрос к абсолютному имени `api.internal`.
Умножьте это на 50 000 RPS от вашего API-gateway. CoreDNS мгновенно захлебывается в 250 000 запросах в секунду, из которых 80% - заведомо мусорные NXDOMAIN. Начинается деградация UDP-сокетов, срабатывает rate-limit в iptables/conntrack, и падает вся внутренняя связность кластера. В этот момент TCO вашего облака резко падает в ноль из-за простоя, а счета за сетевые риповеры от AWS Route53 или CoreDNS-подов улетают в космос.
Как с этим бороться на уровне ядра и манифестов:
- Принудительно выставляйте `options ndots:1` в PodSpec через `dnsConfig`, если ваши сервисы используют абсолютные FQDN или короткие внутренние имена.
- Тюньте таймауты glibc через `options timeout:1 attempts:2`, чтобы зависший резолвер не утилизировал пул потоков приложения.
- На уровне ядра увеличивайте размер hash-таблицы conntrack (`nf_conntrack_buckets`) и лимиты socket receive queue (`net.core.rmem_max`), чтобы kernel не дропал легитимные UDP-пакеты под штормом NXDOMAIN.
- Инфраструктурный аудит и калькулятор TCO кластера: @Personnel_run_bot (/tma)
- База знаний и разборы: ftops.space
- ftops.space | Run-As-Daemon Infrastructure

Схожие новости

#Наименование новостиТональностьИнформативностьДата публикации
1Поверхностный мониторинг облачных провайдеров привычно обвиняет приложение в утилизации ресурсов, ...07.9820-09-2026
2Каждые 5 минут транзакции в PostgreSQL замирают на 3 - ...012.1419-09-2026
3Памятник kubelet, Kubernetes != CRI0713-07-2026
4Linux наконец-то не тормозит или пятничный релакс013.1807-08-2026
5Сервер uptime 1888 days ≈ 5 лет и 2 месяца023.7515-09-2026
6[Show] swift-topomap: Silicon-aware TUI and eBPF metrics engine011.8727-07-2026
7Линус Торвальдс systemd Red Hat инновация RHEL Fedora Linux мейнтейнер ...-15.3403-09-2026
8На ТСПУ начали перехватывать открытые DNS запросы к 1.1.1.1, 8.8.8.8013.8427-08-2026
9Инверсия приоритетов в Kubernetes: Когда планировщик убивает бизнес, спасая «важные» поды0713-07-2026
10CoreDNS-1.14.2 Release08.6706-03-2026

Классификация: Мнения. Схожих патентов: 0. Схожих новостей: 10. Тональность: 0. Информативность: 12.82. Источник: vk.com.