Testando a capacidade de servidores de atender a um domínio específico

11

Digamos que você tenha Server Aconfigurado com seu servidor Web favorito para servir www.example.com. Agora você deseja mover isso para Server B. Após várias cópias e configurações, o novo servidor parece estar pronto. Um teste final estaria em ordem: Antes de alterar os registros DNS, como solicitar ao www.example.comServidor B quando os registros DNS ainda apontam para o servidor A?


Embora minha pergunta principal tenha sido respondida, no caso de o / etc / hosts não estar sob meu domínio de influência, é possível testá-lo com o telnet conversando HTTP1.1 bruto com o servidor da web?

Jarmund
fonte
8
Não edite sua pergunta para fazer uma pergunta completamente nova. Isso tende a invalidar (de alguma forma) as respostas existentes e a plataforma também não envia notificações de que uma pergunta foi alterada, tornando improvável que as pessoas que já estão envolvidas com a sua pergunta revisitem suas respostas. Você pode deixar um comentário direto para eles que tem uma pergunta de acompanhamento. Geralmente, uma estratégia melhor é fazer uma nova pergunta (possivelmente apontando para as perguntas e respostas anteriores).
HBruijn
2
Considerar em baixa a votação apenas para a mudança completa da baliza com a edição. > _ <
Wesley

Respostas:

12

DNS é uma coisa mágica. Com controle suficiente sobre um PC cliente, você pode criar e right.cominstalar . Entre em um PC cliente de teste e mexa com sua resolução DNS alterando o arquivo host nesse cliente, ou você pode fazer algo um pouco mais complexo e fornecer a esse host um servidor DNS simples para consulta, como . Seja como for o processo, o objetivo final é fazer com que a resposta DNS para consultas relacionadas ao endereço IP do Servidor B. Os cabeçalhos de host HTTP terão o nome DNS de www.example.com, mas visem Servidor B.wrong.comviceversa.iodnsmasqwww.example.com

Magia!

Wesley
fonte
3
De alguma forma, /etc/hostsnão me ocorreu, e isso funcionou perfeitamente. Felicidades para o lembrete!
Jarmund
2
O hostsarquivo não está envolvido na resolução do DNS, mas é um mecanismo de pesquisa de nome totalmente separado que a biblioteca de resolvedores fornecida pelo sistema operacional do cliente pode e, na maioria dos casos, usará, além de pesquisas no DNS. Pessoalmente, acho que a parte "é mágica" apenas alimenta "não há necessidade de entender", o que certamente é uma coisa ruim para os profissionais.
Håkan Lindqvist
@ HåkanLindqvist Você entendeu muito mal o contexto e o uso da frase.
27515 Wesley
De qualquer forma, o host hospeda o arquivoDNS . Isso é SF; Eu esperaria que as pessoas aqui, em qualquer lugar, soubessem a diferença.
Ilmari Karonen
@IlmariKaronen E eu não disse que os arquivos hosts eram DNS, então suas expectativas para o ServerFault foram atendidas e somos bons aqui! (#)
Wesley)
11

É importante observar que o que importa fazer um teste como este para HTTP não está realmente relacionado ao DNS, mas ao que o cliente HTTP envia como o Hostvalor do cabeçalho.

O cliente precisa se conectar ao endereço IP e à porta certos, obviamente, mas além disso tudo se resume ao Hostcabeçalho que está embutido na própria solicitação HTTP.


Para um teste rápido, o seguinte comando pode ser usado sem alterar nenhuma configuração no nível do sistema operacional no cliente:

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

ou, nesse caso,

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


Para fazer o mesmo com um navegador da Web normal, você precisará de uma extensão do navegador que possa modificar os cabeçalhos da solicitação (ou possivelmente um proxy HTTP que altere os cabeçalhos) ou alterar a configuração do sistema operacional da máquina cliente.

Como foi mencionado, o meio mais fácil de fazer essa alteração na configuração seria adicionar uma entrada ao hostsarquivo. Dessa forma, a biblioteca do resolvedor do SO do cliente já seria atingida ao consultar o hostsarquivo e nem precisará fazer uma pesquisa de DNS.

Outras opções incluem alterar os servidores resolvedores de DNS configurados no cliente para um servidor de nomes configurado para responder conforme desejado.

Håkan Lindqvist
fonte
1
+1 para uma solução que não envolve perder tempo com resolução de nomes
Jarmund
2
Recente curlpermite que você substitua a resolução de nomes normal (DNS ou hostfile) e ainda faça os cabeçalhos automaticamente, além do SNI se estiver usando / testando o httpS. Veja --resolveem sua página de manual ou em curl.haxx.se/docs/manpage.html .
David_thompson_085
4

Você pode testar isso com telnet. Você precisa fazer uma solicitação HTTP bruta digitando os comandos. Você não pode cometer erros, e alguns servidores têm um tempo limite, portanto, você também deve digitar toda a solicitação nesse período.

O comando será algo como isto:

telnet serverb 80

A solicitação será mais ou menos assim:

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

Observe que ele deve terminar com uma linha em branco; portanto, pressione Enter duas vezes após o cabeçalho do host.

briantist
fonte
1
Nitpick: embora os cabeçalhos HTTP não façam distinção entre maiúsculas e minúsculas, o cabeçalho normativoHost não é completo . (E, aparentemente, alguns servidores podem ter problemas com diferentes capitalizações.)
Bob
@Bob true, editado
briantist
3

O que geralmente faço é forçar www.example.com para o endereço IP do servidor B em meus / etc / hosts. Faço isso desde que usei o Mosaic e, como faço com pouca frequência, não sinto a necessidade de encontrar melhor.

Olhando um pouco para você, encontrei /superuser/403042/custom-host-file-for-firefox, que é respondido por https://addons.mozilla.org/es/firefox/addon/ foxyproxy-standard / mas há uma nota muito recente dizendo que foi abandonada.

Lei29
fonte
Respondendo à sua edição solicitando um método de teste sem o / etc / hosts, sim, isso existe. Seria o telnet para testes muito básicos, um complemento como eu mencionei na minha resposta acima, ou um proxy configurado personalizado ou (e esse é o método que eu preferiria) um ServerAlias ​​no servidor B, como www2.example. com.
Law29
3

Se você precisar verificar se funciona, aconselho um plugin broswer simples, como o Modify HeadersFirefox, e altere HOSTpara www.mydomain.com.

bukk530
fonte