Como usar DNS / Hostnames ou outras maneiras de resolver um IP específico: Porta

45

This is a Canonical Question about DNS/Hostnames resolution to IPs/Ports

Exemplo 1

Estou executando um servidor da Web na porta 80 e outro na porta 87. Eu gostaria de usar o DNS para que www.example.com vá para a porta 87. Como posso fazer isso usando apenas o DNS?

Exemplo 2

Estou executando um serviço no meu servidor em uma porta não padrão. Como posso obter clientes para se conectar a essa porta não padrão automaticamente? Posso usar o DNS? Existe algum suporte específico ao aplicativo em que o DNS possa indicar o IP e a Porta?

Exemplo 3

Alguns protocolos de aplicativos suportam especificamente o reconhecimento do nome do host e permitem que ações especiais sejam tomadas com base nessas informações? Existem outras questões sobre falha do servidor que cobrem algumas delas?

Commandeering: Esta pergunta estava originalmente perguntando sobre a execução do IIS e do Apache no mesmo servidor, mas os mesmos conceitos podem ser aplicados a qualquer software de servidor que receba conexões de clientes. As respostas abaixo descrevem os problemas técnicos e as soluções de uso do DNS e do suporte ao protocolo de aplicativo para atribuir um número de porta para um cliente se conectar.

    
por Tomasz Smykowski 14.10.2009 / 15:12

8 respostas

32

Você não pode usar o DNS para apontar para uma porta (a menos que o cliente suporte registros SRV, a maioria não aceita).

Sites e protocolos com cabeçalhos de host

Você terá que colocar algum método de front-end para fazer isso. Normalmente, você usaria um servidor Web front-end ou um software proxy dedicado para encaminhar a conexão da porta 80 para a porta 80 com base no nome do servidor que está sendo solicitado no cabeçalho. Alguns firewalls também podem encaminhar com base no cabeçalho do host também.

Registros SRV

Alguns clientes suportam pesquisas de registros SRV que indicam o nome do host e o número da porta do servidor para o serviço especificado (ou seja, o usuário especifica "exemplo.com", o cliente consulta um registro SRV e obtém "server101.exemplo.com" porta "255", em seguida, se conecta a isso). Alguns clientes também implementam isso onde não é necessário (meu último smartphone procuraria os registros SRV ao configurar uma nova conta de e-mail, por exemplo).

Infelizmente, o suporte para registros SRV é altamente incomum. Apenas alguns protocolos notáveis exigem o suporte (Jabber / XMPP, Kerberos, LDAP, SIP) e nem todo cliente o suporta mesmo quando obrigatório.

    
por 21.08.2014 / 17:41
14

Quando você digita o link em seu navegador, entende-se que a porta HTTP está em 80. Portanto, não há um caminho direto para Aponte www.domain.com para a porta 87 se você já tiver um serviço em execução nessa porta no IIS.

Dito isto, existem algumas "soluções alternativas".

  • Basta usar o link - ele se conectará à porta 87 (apache) do seu servidor.
  • Você pode configurar um redirecionamento, para que o link seja encaminhado (ou proxy, se você quiser ser chique) para www .domain.com: 87.
  • Você pode configurar um "VirtualHost" para que www.domain2.com ainda esteja na porta 80, compartilhada com www.domain.com. Você não pode configurá-lo sem modificar o IIS.

Sam está certo, o DNS é agnóstico quando se trata de portas. Qualquer tipo de redirecionamento de porta acontece pelo serviço que está sendo executado nessa porta. Portanto, você precisaria fazer algo com o IIS para que isso acontecesse, se você não tiver outra escolha a não ser deixá-lo na porta 80.

Eu também passei por sua situação usando mod_proxy no Apache, não tenho certeza se existe uma maneira de fazer isso com o IIS.

    
por 14.10.2009 / 15:27
12

Receio que os nomes de domínio só possam ser associados a um endereço IP e não a uma porta.

A maioria dos servidores da web, por exemplo (Apache, IIS, etc.) permitem que você tenha dois domínios hospedados no mesmo endereço IP usando o fato de que as solicitações da Web contêm um campo de cabeçalho do host que identifica o domínio na própria solicitação.

Se você disser o que o servidor da Web está usando, tenho certeza de que as pessoas podem indicá-lo para a documentação relevante para configurar seu servidor como você deseja

    
por 26.01.2012 / 15:20
11

Tecnicamente, você pode usar registros SRV nos servidores DNS definidos em RFC 2782 para informar aos navegadores quais servidores manipulam http em quais portas para um (sub) domínio:

_http._tcp.www.example.com.  IN      SRV 0    5      80   www.example.com.
_http._tcp.www2.example.com. IN      SRV 0    5      87   www.example.com.

Isso funciona bem para muitos protocolos / serviços, especialmente onde o uso de registros SRV já está definido na especificação do protocolo.

No entanto, como este " Salão da Vergonha "afirma, a maioria dos navegadores / clientes da web não suportam isso (para HTTP). Veja também porque-do-browsers-not-use-srv-records .

O acordo é basicamente que o SRV não é incluído no protocolo http como uma obrigação, portanto, cada navegador que o implementa resolve URLs de maneira diferente dos navegadores que não o fazem.

Então, você só deve usar isso como um balanceamento de carga opcional onde não é relevante qual servidor é escolhido em termos de conteúdo. "Opcional" porque não equilibrará grande parte da carga se apenas alguns clientes implementarem isso.

    
por 22.12.2012 / 14:56
6

O DNS não tem a capacidade de redirecionar para uma porta específica, todos os cuidados do DNS são sobre a resolução do endereço IP de um nome e vice-versa.

Alguns serviços, como provedores DNS IP dinâmicos, como NO-IP , fornecem uma serviço que pode ajudá-lo a fazer algo semelhante para contornar o bloqueio de IP em serviços de DNS em casa.

    
por 14.10.2009 / 15:18
6

Para usar qualquer serviço (TBT) em porta não padrão e não gravar porta no URI, everybody pode usar registros SRV, definidos no RFC 2782 .

_http._tcp.www.example.com. IN      SRV 0    5      87   www.example.com.

Todos os outros http-hosts na zona ainda serão servidos na porta padrão 80

    
por 27.01.2012 / 00:20
0

Uma abordagem para implantar dois servidores da Web no mesmo host é que os dois escutem na porta 80 em dois endereços IPv6 diferentes. O IPv6 especifica oficialmente que você pode atribuir dois endereços a uma interface, e há endereços IPv6 suficientes que você pode fazer isso sem ficar sem endereços.

Esta é uma prova do futuro, e cada um dos seus dois domínios pode ter registros AAAA apontando para os diferentes endereços IP, de modo que os domínios acabam em servidores da Web diferentes.

Se você tiver um único endereço IPv4, também poderá usar a porta 80 no endereço IPv4 para executar um proxy reverso. Dessa forma, os clientes somente IPv4 podem acessar seus servidores da web. A abordagem de proxy reverso funciona mesmo se alguns dos servidores da Web estiverem no mesmo host que o proxy reverso e alguns dos servidores da Web estiverem em outros hosts.

Nessa configuração example.org pode ter endereços 192.0.2.1 e 2001:db8::1 , enquanto example.net tem endereços 192.0.2.1 e 2001:db8::2 .

    
por 21.08.2014 / 20:07
0

A maneira mais simples é usar um proxy reverso e defini-lo como seu proxy da web. Você pode configurar um nginx ou apache para ele. Eu tive basicamente o mesmo problema no passado e fiz uma ferramenta para conseguir essa configuração de uma maneira simples. Ergo: link

Eu tenho usado isso e basicamente, funciona como um encanto:)

    
por 26.10.2017 / 00:12