Назад | Перейти на главную страницу

Как перехватывать и управлять DNS-запросами?

Я не уверен, правильно ли я сформулировал вопрос, но в основном я хочу сделать следующее:

Когда пользователь вводит что-то вроде Расходы в строке URL-адреса браузера я хочу, чтобы браузер был направлен на определенный веб-адрес (очень похоже на то, как работают ярлыки OpenDNS)

IP-адрес веб-адреса не будет изменяться среди различных «ярлыков» ... то есть:

mycompany.com = 10.0.0.0

mycompany.com/expenses = 10.0.0.0

mycompany.com/tracker = 10.0.0.0

Когда пользователь вводит расходы в адресной строке браузера и нажмите клавишу ВВОД, я хочу, чтобы браузер автоматически направлял на указанный адрес, как указано выше.

Было бы сложно это реализовать? Надеюсь, я правильно сформулировал свой вопрос :-)

Дополнительные замечания:

Как насчет создания DNS-записи для «cost.mycompany.com», которая отправляется на веб-сервер с правилом перенаправления Cost.mycompany.com -> mycompany.com/expenses?

Если у клиентов установлен DNS-суффикс mycompany.com, они будут преобразовывать «расходы» в cost.mycompany.com и обращаться к этому веб-серверу.

Это означает несколько дополнительных записей DNS и несколько виртуальных хостов на веб-сервере, которые ничего не делают, кроме перенаправления на «настоящие» URL-адреса?

Хотя это не совсем то, что вам нужно, почему бы не использовать сокращение URL-адресов на внутренних серверах? Затем вы можете настроить виртуальный хост на своем сервере, на котором размещен сокращатель URL-адресов, и сделать что-то вроде:

http://go/expenses
http://go/tracker

Сокращатель URL-адресов перепишет это на ваш необходимый внутренний URL-адрес. Вот пример .NET URL Shortener Вот.

Другой альтернативой является, как говорит mfarver, вам необходимо настроить запись DNS, указывающую на хост, который читает запросы заголовка хоста и соответствующим образом перенаправляет. Это нужно сделать с помощью правила перезаписи URL-адреса в IIS (или apache, если вы хотите запустить его в Windows) или какого-либо кода, который сделает всю работу за вас. Оба они, по сути, делают то же самое, что и сокращатель URL.

Определите свой домен поиска DNS для клиентов, например, company.com

Создайте cnames для расходов и т. Д., Которые указывают на веб-сервер

Публикуйте каждый целевой URL как отдельный сайт на веб-сервере (например, webserver.company.com/expenses становится cost.company.com) и используйте заголовки хоста, чтобы направлять браузеры, когда они попадают на веб-сервер (вам может потребоваться поиграть с заголовками хоста, чтобы определить, нужно ли вам добавить только расходы или cost.company.com как заголовок хоста)

Это работает ... это включает в себя немного возни и компромисса, но это работает. Мы делаем это с помощью некоторых наших внутренних сервисов. Как отмечает Бен в своем комментарии к хорошему ответу Джона Англисса, иногда вам нужно немного поработать и пойти на компромисс.

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

Или просто установите www-прокси перед вашим веб-сервером, который передает запросы, основанные на вашем, на правильный IP-адрес.

Меня это всегда смущало. Очевидно, вам нужна комбинация DNS CNAME и Перенаправления HTTP. DNS связывает DNS-имя с IP-адресом в случае Запись. А CNAME это псевдоним для Запись. В то время как перенаправление HTTP имеет дело с URL-адресами.

Кто-то в brighthub написал как сделайте это для ярлыка URL-адреса внутренней службы поддержки.

Вкратце шаги таковы:

  1. Настройте запись cname на вашем DNS-сервере для каждого желаемого ярлыка.
  2. Настройте перенаправления HTTP для каждого желаемого ярлыка с помощью веб-сервера (IIS используется в инструкции)
  3. Добавьте код перенаправления в свой файл index.html

<meta http-equiv="Refresh" content="0;URL=http://www.mydomain.com/newpage.html"/>

Вы упоминаете, что это среда Windows, но не говорите нам, на чем размещены веб-сайты. Я тоже предполагаю Windows, но предполагаю, что 2008, как вы не утверждаете. Если у вас установлен IIS на сервере, на котором размещается «domain.com» и все подпапки, вы захотите установить модуль URL Rewrite (подробности можно найти Вот).

После установки вам нужно будет создать записи DNS для «Расходов» и «трекера». Это могут быть записи CNAME / Alias, указывающие на запись domain.com. После создания откройте командную строку на настольном компьютере и введите:

ipconfig /flushdns
ping expenses
ping domain.com

Ответ на оба запроса ping должен иметь один и тот же IP-адрес. После подтверждения работы DNS вам нужно будет перейти на веб-сервер, на котором размещен домен domain.com, и создать правило перезаписи IIS, которое выглядит примерно так:

<rule name="Canonical Host Name" stopProcessing="true">
  <match url="(.*)" />
    <conditions>
      <add input="{HTTP_HOST}" pattern="^expenses$" />
    </conditions>
  <action type="Redirect" url="http://company.com/expenses" redirectType="Permanent" />
</rule>

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