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

Проверка способности серверов обслуживать определенный домен

Скажите, что у вас есть Server A настроить с вашим любимым веб-сервером-демоном для обслуживания www.example.com. Теперь вы хотите переместить это в Server B. После кучи копирования и настройки новый сервер вроде бы готов. Заключительный тест будет по порядку: перед изменением DNS-записей, как можно запросить www.example.com с сервера B, когда записи DNS по-прежнему указывают на сервер A?


Хотя на мой основной вопрос был дан ответ, в случае, если / etc / hosts не находится в моей сфере влияния, можно ли проверить его с помощью telnet, вместо этого передавая необработанный HTTP1.1 на веб-сервер?

DNS - это волшебная вещь. Имея достаточный контроль над клиентским ПК, вы можете сделать right.com в wrong.com и viceversa.io. Перейти на тестовый клиентский компьютер и испортить его разрешение DNS, либо изменив файл хоста на этом клиенте, либо вы можете сделать что-то более сложное и предоставить этому хосту простой DNS-сервер для запроса, например dnsmasq. В любом случае, конечная цель - сделать DNS-ответ на запросы, касающиеся www.example.com ответьте IP-адресом для сервера B. Заголовки хоста HTTP будут содержать DNS-имя для www.example.com, но нацелены на сервер B.

Магия!

Важно отметить, что то, что важно для проведения подобного теста для HTTP, на самом деле вообще не связано с DNS, а с тем, что HTTP-клиент отправляет в качестве Host значение заголовка.

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


Для быстрой проверки можно использовать следующую команду без изменения конфигурации уровня операционной системы на клиенте:

$ curl -H "Host: www.example.com" http://192.0.2.17/foo/bar

или, если на то пошло,

$ curl -H "Host: www.example.com" http://beta.example.com/foo/bar


Чтобы сделать то же самое с обычным веб-браузером, вам потребуется либо расширение браузера, которое может изменять заголовки запросов (или, возможно, прокси-сервер HTTP, который изменяет заголовки), либо вам нужно будет изменить конфигурацию операционной системы клиентского компьютера.

Как уже упоминалось, самым простым способом изменения конфигурации было бы добавление записи в hosts файл. Таким образом, библиотека преобразователя клиентской ОС получит удар уже при обращении к hosts файл и даже не нужно будет выполнять поиск в DNS.

Другие варианты включают изменение настроенных серверов распознавания DNS на клиенте на сервер имен, который настроен для ответа по желанию.

Вы можете проверить это с помощью telnet. Вам нужно сделать необработанный HTTP-запрос, набрав команды. Вы не можете сделать никаких ошибок, и у некоторых серверов есть тайм-аут, поэтому вам также нужно ввести весь запрос в течение этого периода времени.

Команда будет примерно такой:

telnet serverb 80

Запрос будет выглядеть примерно так:

GET / HTTP/1.1
Host: www.example.com

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

Обычно я заставляю www.example.com использовать IP-адрес сервера B в моем / etc / hosts. Я занимаюсь этим с тех пор, как использовал Mosaic, и, поскольку я делаю это нечасто, я не чувствовал необходимости искать что-то лучше.

Немного оглядевшись, я обнаружил https://superuser.com/questions/403042/custom-host-file-for-firefox на который отвечает https://addons.mozilla.org/es/firefox/addon/foxyproxy-standard/ но есть совсем недавняя записка, в которой говорится, что он заброшен.

Если вам нужно проверить, работает ли он, я советую простой плагин для браузера, например Modify Headers для Firefox и измените HOST к www.mydomain.com.