Может ли DNS-сервер иметь исходный IP-адрес? - PullRequest
3 голосов
/ 13 мая 2011

Краткий вопрос:

Так как DNS является anycast, есть ли способ для DNS-сервера узнать, что «первый» исходный DNS-запрос возник из?

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

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

Пока я проверял, DNS-сервер может знать только «последний» IP-адрес узла в цепочке DNS, а не источник. Есть ли способ?

С уважением

Ответы [ 3 ]

6 голосов
/ 15 мая 2011

Google и Yahoo! представил черновик ( draft-vandergaast-edns-client-ip-01 ) рабочей группе IETF DNS Extensions , которая предложила новую опцию EDNS0 в запросах DNS, которую рекурсивные серверы могли бы использовать для указать IP-адрес своего собственного клиента вышестоящему уполномоченному серверу.

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

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

ОБНОВЛЕНИЕ - вариант этого впоследствии был опубликован как RFC 7871 .

2 голосов
/ 19 мая 2011

Возможно, у вас есть контроль над программным обеспечением, выполняющим поиск? Если это так, вы можете включить IP-адрес как часть запроса, например,

23-34-45-56.www.example.com

, на который отвечает пользовательский сервер

23-34-45-56.www.example.com 1800 CNAME www-europe.example.com

или

23-34-45-56.www.example.com  300     A 34.45.56.67

и т.д.

Если клиент является веб-браузером, возникают сложности из-за NAT, прокси-серверов HTTP и невозможности запрашивать адреса интерфейса хоста непосредственно из Javascript. Однако вы можете выполнить поиск в стиле AJAX для службы what's-my-ip, которая понимает X-Forwarded-For.

1 голос
/ 17 мая 2011

Длинный ответ на короткий вопрос:

DNS не anycast.Некоторые владельцы DNS-серверов контента используют anycast для распределения серверов в нескольких физических местах по всему миру, но сами протоколы DNS / UDP и DNS / TCP не являются anycast.Понятия просто не существует на этом уровне протокола.

Краткий ответ на длинный вопрос:

Нет.

Расширение

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

Вам придется использовать любые механизмы разграничения клиентовсуществовать в фактическом протоколе службы, который вы используете, вместо того, чтобы помещать различие вашего клиента в механизм поиска имени → IP-адреса.В любом случае, дифференциация клиентов для других сервисов не относится к имени → IP-адресу.Такой поиск является общим для нескольких протоколов, для начала.Используйте механизмы того, какой фактический протокол обслуживания используется клиентами, которые общаются с вашими серверами.

...