Como eu faço o protocolo foo hostname-aware?

9

This is a canonical question about hostname-awareness and proxying.

Eu sei que alguns protocolos são compatíveis com o hostname; ou seja, quando eu me conecto ao servidor HTTP em www.example.com ele sabe que eu quero o serviço HTTP www.example.com , não www.example.net , mesmo que eles estejam 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 .)

    
por MadHatter 12.10.2017 / 09:29

1 resposta

13

Para entender o que está acontecendo, você precisa saber um pouco sobre o DNS.

Quando um cliente deseja se conectar a um serviço em determinado host, ele procura o nome do host por meio de sua infraestrutura de 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 prescrito pelo procotol é construído para implementar.

Em alguns casos, parte desse procotol envolve um segundo envio do nome do host originalmente visto up, que neste caso é enviado para o servidor em vez da infra-estrutura do DNS. No caso do HTTP, isso foi adicionado como parte do HTTP / 1.1, em RFC 2616 ; no caso de HTTPS, isso foi implementado como Server Name Indicação (SNI) em RFC 4366 ; e no caso do FTP, isso foi adicionado pelo comando HOST , em RFC 7151 (mas veja mais tarde) . Se esse segundo envio não ocorrer, o servidor não terá como saber qual nome de host o cliente forneceu ao 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, fazer a interação cliente-servidor host-aware. Depois que o protocolo foi alterado, o código do servidor precisou ser atualizado para implementá-lo. E finalmente, os clientes precisavam ser atualizados para falar do novo protocolo para os servidores. Essa última etapa pode seja particularmente lento; no caso do SNI, o Internet Explorer no Windows XP nunca o implementou, portanto não se podia confiar no protocolo enquanto ainda havia um número significativo de usuários do IE no XP ao redor, e são necessários cerca de dez anos para que um número suficiente deles morra e / ou obtenha atualizações que o SNI é confiável e implantável.

Então, isso é o que é preciso para tornar um protocolo que não seja compatível com o nome do host e ciente do hostname. Não é um simples configuração de sinalização ou alteração de configuração. Temos algumas respostas específicas do protocolo que lidam com o estado de coisas, e possíveis medidas de mitigação, para esse protocolo em particular: para SSH (e, portanto, também SFTP) e para FTP (que indica que o HOST de suporte para FTP está atualmente na fase de suporte de patch, e por isso ainda não se pode confiar).

A resposta curta é que, se o seu protocolo não atualmente implementa o reconhecimento do nome do host, com um bom suporte entre os clientes e servidores, esqueça: não é algo que você possa fazer.

    
por 12.10.2017 / 09:31