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


11

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


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


8
Будь ласка, не редагуйте своє запитання, щоб ставити зовсім нове запитання. Це, як правило, (дещо) визнає недійсними існуючі відповіді, а також платформа не надсилає сповіщень про те, що питання також змінилося, що робить малоймовірним, що люди, які вже займаються вашим запитанням, переглянуть свої відповіді. Ви можете залишити прямий коментар до них, що у вас є додаткове запитання. Часто кращою стратегією є натомість задати нове запитання (можливо, вказуючи на попередні запитання та відповіді).
HBruijn

2
Ми дуже розглядаємо можливість голосування лише за повну зміну ворота з редагуванням. > _ <
Веслі

Відповіді:


12

DNS - магічна річ. Маючи достатній контроль над клієнтським ПК, ви можете перетворитись right.comна wrong.comта viceversa.io. Перейдіть на тестовий клієнтський ПК та вимкніть його роздільну здатність DNS, змінивши хост-файл на цьому клієнті, або ви можете зробити дещо складніший і дати цьому хосту простий сервер DNS для запиту, наприклад dnsmasq. Незалежно від того, в який бік ви йдете про процес, кінцевою метою є створення відповіді DNS на запити щодо www.example.comвідповіді з IP-адресою для сервера B. Тоді заголовки хостів HTTP матимуть ім'я DNS для www.example.com, але мають бути спрямовані на Сервер B.

Магія!


3
Якось /etc/hostsмені не прийшло в голову, і це спрацювало чудово. Ура для нагадування!
Ярмунд

2
hostsФайл не бере участі в дозволі DNS , але це абсолютно окремий механізм пошуку імені , що бібліотека визначника забезпечується клієнтської ОС може, і в більшості випадків буде, використання в доповненні до DNS - запитах в. Особисто я вважаю, що "це магія" біт просто подається в "не потрібно розуміти", що, безумовно, погано для професіоналів.
Хокан Ліндквіст

@ HåkanLindqvist Ви сильно неправильно зрозуміли контекст та використання фрази.
Веслі

У будь-якому випадку, хост-файлDNS . Це SF; Я б очікував, що люди, якщо де-небудь, дізнаються різницю.
Ільмарі Каронен

@IlmariKaronen І я не сказав, що файли хостів були DNS, тому ваші очікування щодо ServerFault виправдані, і ми всі тут добрі! ᕕ (ᐛ) ᕗ
Веслі

11

Важливо зауважити, що те, що важливо зробити такий тест для 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 на клієнті на сервер імен, який налаштований відповідати за бажанням.


1
+1 для рішення, яке не передбачає глузування з роздільною здатністю імені
Jarmund

2
Остання curlдозволяє переосмислити нормальну роздільну здатність імені (DNS або файл хосту) і все одно робити заголовки автоматично, а також SNI, якщо використовувати / тестувати httpS. Дивіться --resolveна своїй сторінці або на сторінці curl.haxx.se/docs/manpage.html .
dave_thompson_085

4

Ви можете перевірити це за допомогою telnet. Потрібно зробити необмежений запит HTTP, ввівши команди. Ви не можете помилитися, і деякі сервери мають тайм-аут, тому вам також доведеться вводити весь запит протягом цього часового періоду.

Команда буде приблизно такою:

telnet serverb 80

Запит буде виглядати приблизно так:

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

Зауважте, що він повинен закінчуватись порожнім рядком, тому два рази натисніть клавішу Enter після заголовка хоста.


1
Nitpick: хоча HTTP-заголовки не залежать від великого регістру, нормативний Hostзаголовок не є великим . (І, мабуть, деякі сервери можуть мати проблеми з різними капіталізаціями.)
Боб

@Bob правда, відредаговано
британіст

3

Те, що я зазвичай роблю, - це змусити www.example.com подати IP-адресу сервера B у мій / etc / hosts Я роблю це з моменту використання мозаїки, і оскільки я це роблю нечасто, я не відчував необхідності знайти краще.

Трохи оглянувшись, я знайшов /superuser/403042/custom-host-file-for-firefox, на який відповідає https://addons.mozilla.org/es/firefox/addon/ фоксипрокси-стандарт /, але є дуже недавня примітка, яка говорить про те, що це покинуто.


Відповідаючи на вашу редакцію, запитуючи метод тестування без / etc / hosts, так, це існує. Це буде або telnet для дуже базового тестування, адодон, про який я згадував у своїй відповіді вище, або налаштований проксі проксі, або (і це я вважаю за краще метод) ServerAlias ​​на сервері B скажімо www2.example. ком.
Закон29

3

Якщо вам потрібно перевірити, чи працює він, я радимо простий плагін Modify Headersдля браузера, як для Firefox, і змініть HOSTна www.mydomain.com.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.