Probar la capacidad de un servidor para servir un dominio particular

11

Digamos que se ha Server Aconfigurado con su servidor web-daemon favorito para servir www.example.com. Ahora quieres mover esto a Server B. Después de un montón de copia y configuración, el nuevo servidor parece estar listo. Una prueba final estaría en orden: antes de cambiar los registros DNS, ¿cómo se solicita al www.example.comservidor B cuando los registros DNS todavía apuntan al servidor A?


Si bien mi pregunta principal ha sido respondida, en el caso de que / etc / hosts no esté bajo mi dominio de influencia, ¿es posible probarlo con telnet al hablar HTTP1.1 sin formato al servidor web?

Jarmund
fuente
8
No edite su pregunta para hacer una pregunta completamente nueva. Tiende a invalidar (algo) las respuestas existentes y la plataforma tampoco envía notificaciones de que una pregunta haya cambiado, por lo que es poco probable que las personas que ya están involucradas con su pregunta revisen sus respuestas. Puede dejar un comentario directo para ellos de que tiene una pregunta de seguimiento. A menudo, una mejor estrategia es hacer una nueva pregunta (posiblemente apuntando a sus preguntas y respuestas anteriores).
HBruijn
2
Considerar altamente la votación negativa solo para el cambio completo de poste de meta con la edición. > _ <
Wesley

Respuestas:

12

DNS es una cosa mágica. Con suficiente control sobre un PC cliente, se puede hacer right.comen wrong.comy viceversa.io. Salte a una PC cliente de prueba y elimine su resolución DNS cambiando el archivo de host en ese cliente, o puede hacer algo un poco más complejo y darle a ese host un servidor DNS simple para consultar, como dnsmasq. De cualquier manera que siga el proceso, el objetivo final es hacer que el DNS responda a las consultas relacionadas www.example.comcon la dirección IP del servidor B. Los encabezados de host HTTP llevarán el nombre DNS de www.example.com, pero estarán dirigidos a Servidor B.

¡Magia!

Wesley
fuente
3
De alguna manera /etc/hostsno se me ocurrió, y esto funcionó perfectamente. Saludos por el recordatorio!
Jarmund
2
El hostsarchivo no está involucrado en la resolución de DNS, pero es un mecanismo de búsqueda de nombres completamente diferente que la biblioteca de resolución proporcionada por el sistema operativo del cliente puede, y en la mayoría de los casos, usar además de las búsquedas en DNS. Personalmente, creo que el bit "es mágico" simplemente alimenta "no hay necesidad de entender", lo cual es ciertamente algo malo para los profesionales.
Håkan Lindqvist
@ HåkanLindqvist Has entendido mal el contexto y el uso de la frase.
Wesley
En cualquier caso, el archivo de hostDNS . Esto es SF; Esperaría que las personas aquí, si es que están en alguna parte, sepan la diferencia.
Ilmari Karonen
@IlmariKaronen Y no dije que los archivos de host fueran DNS, por lo que sus expectativas para ServerFault se han cumplido y todos estamos bien aquí. ᕕ (ᐛ) ᕗ
Wesley
11

Es importante tener en cuenta que lo que importa hacer una prueba como esta para HTTP no está realmente relacionado con el DNS, sino con lo que el cliente HTTP envía como Hostvalor de encabezado.

El cliente necesita conectarse a la dirección IP y al puerto correctos, obviamente, pero más allá de eso, todo se reduce al Hostencabezado que está en línea en la solicitud HTTP.


Para una prueba rápida, se puede usar el siguiente comando sin cambiar ninguna configuración de nivel del sistema operativo en el cliente:

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

o, para el caso,

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


Para hacer lo mismo con un navegador web normal, necesitaría una extensión de navegador que pueda modificar los encabezados de solicitud (o posiblemente un proxy HTTP que cambie los encabezados), o necesitaría cambiar la configuración del sistema operativo de la máquina cliente.

Como se ha mencionado, la forma más fácil de hacer un cambio de configuración sería agregar una entrada al hostsarchivo. De esta forma, la biblioteca de resolución del sistema operativo del cliente ya se vería afectada al consultar el hostsarchivo y ni siquiera necesitará realizar una búsqueda de DNS.

Otras opciones incluyen cambiar los servidores de resolución DNS configurados en el cliente a un servidor de nombres que está configurado para responder como se desee.

Håkan Lindqvist
fuente
1
+1 para una solución que no implica perder el tiempo con resolución de nombres
Jarmund
2
Reciente le curlpermite anular la resolución de nombre normal (DNS o archivo host) y aún hacer encabezados automáticamente, y también SNI si usa / prueba httpS. Consulte --resolveen su página de manual o en curl.haxx.se/docs/manpage.html .
dave_thompson_085
4

Puedes probar esto con telnet. Debe realizar una solicitud HTTP sin procesar escribiendo los comandos. No puede cometer ningún error, y algunos servidores tienen un tiempo de espera, por lo que también tiene que escribir toda la solicitud dentro de ese plazo.

El comando será algo como esto:

telnet serverb 80

La solicitud se verá así:

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

Tenga en cuenta que debe terminar con una línea en blanco, por lo que debe presionar Intro dos veces después del encabezado del host.

briantista
fuente
1
Nitpick: aunque no se supone que los encabezados HTTP distingan entre mayúsculas y minúsculas, el encabezado normativoHost no es todo en mayúsculas. (Y al parecer, algunos servidores pueden tener problemas con diferentes capitalizaciones)
Bob
@Bob verdadero, editado
briantist
3

Lo que suelo hacer es forzar www.example.com a la dirección IP del servidor B en mi / etc / hosts. Lo he estado haciendo desde que usé Mosaic y desde que lo hago con poca frecuencia no he sentido la necesidad de encontrar algo mejor.

Buscando un poco por ti, encontré /superuser/403042/custom-host-file-for-firefox, que es respondido por https://addons.mozilla.org/es/firefox/addon/ foxyproxy-standard / pero hay una nota muy reciente que dice que está abandonado.

Ley29
fuente
Respondiendo a su edición pidiendo un método de prueba sin / etc / hosts, sí, eso existe. Sería telnet para pruebas muy básicas, un complemento como el que mencioné en mi respuesta anterior, o un proxy configurado de forma personalizada, o (y este es el método que preferiría) un ServerAlias ​​en el servidor B de ejemplo www2.ejemplo. com.
Ley
3

Si necesita verificar si funciona, le recomiendo un complemento broswer simple como Modify Headerspara Firefox, y cambie el HOSTa www.mydomain.com.

bukk530
fuente