Esta é uma pergunta canônica sobre reconhecimento de nome de host e proxy.
Eu sei que alguns protocolos reconhecem o nome do host; ou seja, quando me conecto ao servidor HTTP www.example.com
ele sabe que quero www.example.com
o serviço HTTP de , não www.example.net
o de , mesmo estando no mesmo endereço IP. Como posso fazer isso para o protocolo foo ?
(Nota temporária: esta questão aparece de acordo com esta meta discussão .)
Para entender o que está acontecendo, você precisa saber um pouco sobre DNS.
Quando um cliente deseja se conectar a um serviço em um determinado host, ele procura o nome do host por meio de sua infraestrutura DNS local e recebe um endereço IP em resposta. Em seguida, ele se conecta a esse endereço IP e solicita o serviço da maneira prescrita pelo protocolo que foi criado para implementar.
Em alguns casos, parte desse protocolo envolve um segundo envio do nome do host originalmente pesquisado, que nesse caso é enviado ao servidor em vez da infraestrutura DNS. No caso do HTTP, isso foi adicionado como parte do HTTP/1.1, na RFC 2616 ; no caso de HTTPS, isso foi implementado como Server Name Indication (SNI) na RFC 4366 ; e no caso do FTP, isso foi adicionado pelo
HOST
comando, na RFC 7151 (mas veja ressalva posterior). Se esse segundo envio não ocorrer, o servidor não terá como saber qual nome de host o cliente forneceu ao seu DNS local para obter o endereço IP do servidor.Observe que, em todos os casos, foi necessária uma alteração no protocolo para fazer esse segundo envio e, assim, tornar a interação cliente-servidor ciente do nome do host. Depois que o protocolo foi alterado, o código do servidor teve que ser atualizado para implementá-lo. E, finalmente, os clientes precisavam ser atualizados para comunicar o novo protocolo aos servidores. Esse último passo pode ser particularmente lento; no caso do SNI, o Internet Explorer no Windows XP nunca o implementou, de modo que o protocolo não era confiável enquanto ainda houvesse um número significativo de usuários do IE-on-XP, e levou cerca de dez anos para que um número suficiente deles morrer e/ou obter atualizações que o SNI é confiável para implantação.
Então é isso que é necessário para tornar um protocolo sem reconhecimento de nome de host que reconhece nome de host. Não é uma simples configuração de sinalizador ou alteração de configuração. Temos algumas respostas específicas de protocolo que lidam com o estado das coisas e possíveis medidas de mitigação para esse protocolo em particular: para SSH (e, portanto, também SFTP) e para FTP (que aponta que o
HOST
suporte para FTP está atualmente no -fase de suporte e, portanto, ainda não pode ser confiável).A resposta curta é que se o seu protocolo atualmente não implementa o reconhecimento de nome de host, com bom suporte entre clientes e servidores, esqueça: não é algo que você possa fazer.