Resposta simples, relacionada ao nível da pergunta
Ignorando usos exóticos do DNS e também revertendo a pesquisa do DNS (não relevante para a pergunta), quase todo o uso do DNS é da forma:
- O cliente envia o nome de domínio (totalmente qualificado ou não) para um servidor DNS
- Servidor DNS retorna informações de domínio de seus registros. Normalmente, as principais informações solicitadas são o endereço IP para se comunicar com a web / email nesse domínio ou o endereço IP de outro servidor DNS com maior capacidade de fornecer essas informações.
Depois que o cliente entrar em contato com o servidor, o próprio servidor assumirá o controle e o sistema DNS desaparecerá de cena.
O que isso significa é que o sistema DNS não precisa fornecer informações de porta e quase nunca o faz. Portanto, embora o objetivo da pergunta seja válido, e com frequência feito, não é realmente o sistema DNS que o faz. É por isso que você não consegue resolver isso :)
A idéia é que, uma vez que seu cliente possa localizar a máquina ou servidor específico que ele está procurando, cabe a ela escutar as portas que escolher e aceitar / negar / responder a quaisquer protocolos nas portas configuradas.
Por exemplo, os serviços web HTTP geralmente são fornecidos na porta 80. Isso significa que, uma vez que o cliente conheça o IP de uma máquina, é possível assumir que o envio de uma mensagem para a porta 80 fará com que a mensagem seja lida / respondida pelo serviço web da máquina. Mas não precisa ser assim. Se o servidor estiver configurado para receber solicitações de entrada da Web na porta 9000, qualquer cliente capaz de acessar a porta 9000 poderá acessar seu serviço da Web. Se o servidor estiver protegido por um proxy / NAT / roteador que redirecione a porta 10000 para a porta 9000 e o cliente enviar uma solicitação da Web na porta 10000, o servidor receberá na porta 9000 e responderá também.
Redirecionar / mapear dentro do servidor web
Você perguntou sobre o mapeamento de redirecionamento ou reescrita em um comentário. Essas são funções que um servidor da web pode executar. Basicamente, você pode configurar o servidor da Web (ou a maioria / muitos servidores da Web) para gerenciar como ele lida com a URL que recebe em uma solicitação. Portanto, ele pode modificar internamente o URL no recebimento para fazer com que URLs diferentes sejam manipulados da mesma maneira, ou corrigir erros de digitação comuns (mapeamento), ou pode realmente responder para pedir ao próprio cliente que peça uma segunda vez, usando algum URL de substituição diferente (redirecionar).
Eles têm seus usos e, em princípio, podem lidar com seu caso de uso, mas não parecem a solução "certa" para você, por estes motivos:
- Eu não acho que o mapeamento ajudaria em tudo . O mapeamento é quase totalmente interno ao servidor da web, diz "trate esse URL como se fosse esse URL". Por exemplo, você pode usar o mapeamento de URL do servidor da Web para permitir que um usuário consulte um fórum usando URLs muito antigos, antigos e atuais (para conveniência do usuário) usando " https://example.com/index.php?area-=forum&topic = 2 ", também" https://example.com/forum.php?topic=2 "e também" https://forum.example.com?topic=2"e lide com isso apenas uma vez, mapeando os dois primeiros para o terceiro URL internamente, como a primeira etapa no tratamento da consulta. Como isso afeta o caminho da consulta e não o IP / porta, o mapeamento não é muito útil para gerenciamento de portas e, no seu caso, o cliente nunca realmente consulta o 8080.
- Redirecionar funcionaria, mas pode não ser o que você deseja . O redirecionamento no servidor da Web depende do servidor da Web realmente recebendo a consulta (porque essas são funções internas do servidor da Web). Portanto, o servidor da Web precisaria escutar na porta 80 de qualquer maneira para obter a consulta original, para responder com o redirecionamento / mapa. Seria também tem que escutar na porta 8080. Funcionalmente, seria necessário uma regra de redirecionamento ter que dizer qualquer porta consulta cliente 80, para consultá-lo novamente usando o ": 8080" URL, que não soa como o que você quer Faz. O usuário também veria o novo URL com ": 8080", enquanto parece que você deseja que ele seja "transparente" e não mostrado.
- O redirecionamento também funcionaria apenas para redirecionar uma porta padrão (80 ou 443) - você não pode redirecionar a porta 2000 para 8080, por exemplo, porque o cliente não consultaria o 2000 por padrão, em primeiro lugar, portanto nunca acesse o servidor da Web, mesmo que estivesse ouvindo em 2000. Porém, isso pode não ser um problema para você.
No entanto, se você desejar o redirecionamento "inteligente", onde apenas determinadas consultas são redirecionadas para 8080, esse pode ser o caminho a seguir, porque o redirecionamento pode incluir lógica para decidir quais URLs devem ser redirecionados, enquanto o mapeamento de portas (abaixo) mapeia tudo .
Como fazê-lo corretamente
A resposta para sua pergunta é: você deseja que o servidor da Web responda às solicitações da Web que o cliente envia para a porta padrão (80/443), mas que o servidor realmente recebe na porta 8080.
Isso significa que, como você pode ver, você precisa de algo que mapeie as portas entre cliente e servidor . Dessa forma, o cliente envia na porta 80 (porta padrão usada pelos navegadores da web), mas na verdade é recebida na porta 8080 pelo servidor da web. É claro que você precisará configurar o servidor da Web para escutar na porta 8080, pois isso não é padrão, mas é fácil e qualquer servidor da Web deve poder ter suas portas de escuta especificadas.
A maneira mais comum de fazer isso seria dentro do roteador / firewall, através do mapeamento de portas.
Em termos simples, para fazer isso, é dada ao roteador uma regra: qualquer coisa recebida que possua um IP de destino e uma porta de destino = 80 deve ser passada para a LAN com a porta de destino alterada para 8080. Nem o servidor da Web nem o cliente estarão cientes da alteração (ela é 100% tratada pelo roteador), portanto será 100% transparente para os dois. O cliente não terá ": 8080" em sua URL e não precisará redirecionar nada, pois consulta a porta 80 e o servidor da Web pode ignorar a porta 80 e escutar apenas no 8080, pois nunca recebe consultas na porta 80 .
Se você deseja uma maneira simples e direta, semelhante ao que um "DNS para portas" faria, esse provavelmente é o equivalente mais próximo do que você está solicitando na sua pergunta.