Тестирование возможностей серверов для обслуживания определенного домена

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


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

11
задан 27 December 2015 в 03:50
5 ответов

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

Magic!

.
12
ответ дан 2 December 2019 в 21:43

Важно отметить, что то, что имеет значение для 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 resolver на клиенте на сервер имен, который настроен на ответ по желанию.

.
11
ответ дан 2 December 2019 в 21:43

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

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

telnet serverb 80

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

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

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

4
ответ дан 2 December 2019 в 21:43

Обычно я форсирую 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/, но есть совсем недавняя заметка, в которой говорится, что он заброшен.

.
3
ответ дан 2 December 2019 в 21:43

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

.
2
ответ дан 2 December 2019 в 21:43

Теги

Похожие вопросы