Сервис решает задачу получения списка доменов по IP адресу.
Работа DNS сервера настроена таким образом, что он на запрос fqdn он возвращает IP адрес, связанный с этим fqdn. Нам нужно решить обратную задачу. для этого надо хранить у себя в базе список fqdn и регулярно опрашивать dns серверы на предмет какие ip адреса им соответсвуют. ответы сохранять и при поступление запроса к сервису - какие fqdn соответсвуют данному IP, возвращать список из базы
Сервис должен решать следующие задачи:
- предоставлять REST интерфейс для получения списока fqdn, сохранять его в базе, в одном запросе может приходить до 100к fqdn
- регулярно обновлять IP адреса загруженных доменов через внешние DNS, частота обновления определяется ttl dns записи
- предоставлять REST интерфес для получения списка доменов для одного или несколькиз IP адресов. число ip в одном запросе до 10к, ответ должен группировать fqdn для ip. тоесть на вход приходит: ["10.1.1.1", "10.1.1.2"] в ответе должно быть:
{
"10.1.1.1": ["ya.ru", "vk.com", "video.vk.com","ds01.msk.video.vk.com" "dzen.ru"],
"10.1.1.2": ["google.ru", "youtube.com", "youtube.com", "news.google.com"],
}
- реализовать сервис с API для внешних потребителей
- реализовать сервис с для поддержания базы данных в актуальном состоянии
- записей в базе может быть десятки миллиардов
- нужно получать только A типы dns записей
- словарь для перебора имен загружается разово в базу ( механизм обновления так же через базу )
- данные в базе не удаляются и не обновляются, все исторические данные храним, если данные dns изменились, создаем новую запись в базе, старую помечаем как не историческую ( не активную )
Для тестов можно использовать список доменов вот отсюда https://github.com/fgont/domain-list