Мы зарегистрировали доменное имя (например, «example.com») и хотим узнать, кто пытается разрешить доменное имя и какие запросы он отправляет на веб-сервер этого доменного имени.
Для этой цели мы настраиваем сервер имен и собираем логи BIND, чтобы узнать, кто запрашивает сервер имен для разрешения 'example.com' (нас не интересуют случаи, когда люди разрешают доменное имя с помощью кэшированных данных в рекурсивных резолверах). Мы также собираем логи веб-сервера Apache. Но проблема в том, что мы не можем узнать, какой запрос DNS соответствует какому запросу веб-сервера?
Чтобы сопоставить эти два журнала, я думал создать случайный поддомен и возвращать его как CNAME example.com для каждого запроса DNS, а затем настроить Apache для перенаправления всех этих поддоменов на главную страницу «example.com». Таким образом, если кто-то запросит этот конкретный поддомен, я буду знать, какой будет соответствующий запрос DNS.
Правильный ли это способ сделать это? Есть ли другой способ сделать это?
Я ценю любые мысли и идеи.
решение1
Вы не можете установить корреляцию по IP-адресу.
Это потому, что ваш авторитетный сервер имен запрашивается рекурсивными серверами имен, а не конечными клиентами напрямую. Таким образом, вы получите IP-адрес последнего рекурсивного (они могут быть связаны в цепочку) сервера имен, используемого клиентом.
Даже с опцией EDNS Subnet Client вы получите в лучшем случае блок IP-адресов, а не настоящий клиентский IP-адрес.
Точно так же, на HTTP-фронте, ваш веб-сервер не обязательно должен подключаться к клиенту напрямую, он может использовать прокси-сервер.
Я уже ответил на ваш другой вопрос, связанный с этим, с некоторыми подсказками:Можем ли мы обновить CNAME по запросу? Особое внимание уделите последнему абзацу и всем исследованиям, проведенным Джеффом Хьюстоном.
У вас есть другой способ: просто дайте всем, www.example.com
но вставьте в контент что-то динамическое (либо изображение 1x1 пиксель, либо ссылку на файл CSS или JS), с каким-то уникальным токеном в части имени хоста. Это можно привязать к вашим серверам имен с помощью подстановочного знака. Без всякого CNAME вы сможете легко сопоставить доступ:
- какой-то клиент идет к
http://www.example.com/
- В ответе веб-сервер добавляет
<img src="https://eecahquai5thuu9ji0iepha.tracking.example.net">
и записывает это в свой лог-файл (таким образом, это связывает уникальный токен с текущим HTTP-обменом) - настройте авторитетные серверы имен
tracking.example.net
(я рекомендую вам использовать отдельную зону только для зоны, так как в противном случае подстановочные знаки могут быть полны сюрпризов) для создания записи с подстановочными знаками; тогда в файлах журналов сервера имен будет этот уникальный токен и связанные с ним данные DNS (IP-адрес рекурсивного преобразователя и т. д.) - (и чтобы быть настоящим пользователем сети) настройте веб-сервер, отвечающий по этому адресу с соответствующим ресурсом и типом контента, даже если это всего лишь прозрачное изображение размером 1x1 пиксель.