2

Предположим, у меня есть доменное имя, например, myproxy.com . Затем у меня есть много сайтов, таких как kitty.myproxy.com , wow.myproxy.com Я хочу настроить авторитетный DNS-сервер для доменного имени.

Я надеюсь, что если пользователь захочет посетить эти веб-сайты, когда браузер отправит DNS-запрос, DNS-запрос, наконец, поступит на официальный DNS-сервер. и таким образом, уполномоченный может получить IP хоста, который сделал запрос DNS.

Я ожидаю, что все DNS-запросы для этих веб-сайтов должны быть отправлены на официальный DNS-сервер, чтобы я мог знать все хосты, которые выполняли DNS-запросы. Это возможно или нет?

Я боюсь, что некоторые другие DNS-серверы, которые кэшируют записи DNS, поэтому этот DNS-сервер будет отвечать на запросы DNS, тогда эти запросы не будут перенаправлены на официальный DNS-сервер. Можно ли это предотвратить?

Примечание: я занимаюсь исследовательской работой. Моя цель - сделать прокси. Есть много веб-серверов, которые регистрируются на прокси. Только прокси знает IP этих веб-серверов. Когда браузер хочет посетить один из этих веб-серверов, он может получить IP-адрес прокси-сервера из DNS-запроса. И тогда он подключается к прокси. Я надеюсь, что прокси-сервер может точно знать, какой веб-сервер этот браузер хочет посетить, когда приходит TCP SYN (перед HTTP-запросом, действительно, путем анализа HTTP-запроса прокси-сервер может узнать, какой веб-сервер браузер хочет посетить), Таким образом, если веб-браузер выполняет DNS-запрос и этот запрос известен прокси-серверу, он может затем кэшировать сопоставление между веб-сервером и IP-адресом хоста браузера. Когда приходит TCP SYN, прокси-сервер немедленно проверяет сопоставление и узнает, какой веб-сервер браузер действительно хочет посетить. Спасибо!

2 ответа2

7

Что вы пытаетесь достичь? Я предполагаю, что вы пытаетесь что-то сделать и думаете, что «мониторинг DNS - это ответ», когда это не сработает.

Если вы хотите увидеть попадание IP-адреса клиента при каждом запросе DNS, этого никогда не произойдет. DNS является многоуровневым, и клиенты настроены для подключения к локальному DNS-серверу, который затем в конечном итоге попадет на ваш DNS-сервер.

Если вы хотите видеть запрос (от кого-то) по каждому DNS-запросу, вы можете попытаться настроить свой TTL на что-то маленькое, например, на секунду. Затем вы увидите удар от кого-то, где-то. Это не может быть 100% - это зависит от того, все ли соблюдают ваш TTL, а это не дано.

ОБНОВИТЬ

Если я правильно прочитал, вы пытаетесь связать DNS-запрос с будущим HTTP-запросом. Это не удастся по нескольким причинам.

  1. Кэширование. DNS - сопоставления IP очень кэшируются, и поэтому они сильно кэшируются. Даже настройка TTL не сильно поможет, так как некоторые интернет-провайдеры игнорируют TTL и кешируют в течение часа / дня или около того, независимо от настроек. Браузеры также имеют свой собственный кэш DNS. Есть слишком много уровней для вас, чтобы контролировать все.

  2. Несколько пользователей - один IP-адрес. Между NAT (и Carrier Grade NAT уже на горизонте) и обычными несколькими пользователями на машину вы не можете больше сопоставлять IP с браузером (не так, как вы когда-либо могли). Даже несколько браузеров на пользователя или несколько вкладок могут отключить эту систему.

  3. Люди могут использовать DNS по другим причинам. Что делать, если кто-то просто делает nslookup на одном домене, но затем нажимает на другой (с IP-адресом в кеше). Вы перешли бы не на тот сайт.

  4. Несколько точек выхода. Несмотря на то, что в настоящее время интернет-провайдеры редко используют обычные прокси-запросы, иногда один подписчик может повернуться на выходных точках (то, что вы видите как их IP) даже в одном сеансе. AOL часто делал это, и по мере того, как они падали в популярности, я видел, что другие инструменты (мобильная Opera) также используют прокси.

  5. Переадресация DNS не работает таким образом. Если кто-то попытается найти имя хоста на вашем сайте, в большинстве случаев он будет спрашивать либо сервер Google 8.8.8.8, либо рекурсивный DNS-сервер своего интернет-провайдера. В любом случае, IP-адрес, который запрашивает у вашего DNS-сервера имя хоста, не будет совпадать с исходным IP-адресом веб-браузера, который просматривается через мгновение.

Короче, отсюда не добраться. IP-адреса не являются (никогда не были) уникальными идентификаторами 1-1 для пользователя. Ты бы сломал HTTP. Вы застряли, глядя на поток HTTP и разбора. Убедитесь, что ваш прокси-сервер поддерживает Keep-Alive, и вы немного уменьшите попадание.

1

Как браузер / пользователь узнает, какой http-запрос нужно сделать, чтобы ваш прокси-сервер мог определить фактический запрошенный сервер?

Если вы планируете создать портал, с которого пользователь выберет сервер, который ему нужен, вы можете создать случайные субдомены для своего прокси-сервера в зависимости от выбора / доступности пользователя.

Подобную реализацию вы можете увидеть на демонстрации атаки повторного связывания, когда пользователь отправляется на сервер, и, поскольку сервер знает IP-адрес пользователя, сервер создает новый случайный сгенерированный поддомен, назначая IP-адрес нужного сервера в записи DNS, и перенаправляет пользователя на этот поддомен.

Вы не можете найти IP-адрес пользователя на DNS-сервере.

Как уже писали ранее, не стоит полагаться на TTL, поскольку не все распознаватели DNS его уважают.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .