Respuesta simple, relacionada con el nivel de pregunta
Ignorando los usos exóticos de DNS, y también la búsqueda inversa de DNS (no relevante para la pregunta), casi todo el uso de DNS es de la siguiente forma:
- El cliente envía el nombre de dominio (totalmente calificado o no) a un servidor DNS
- El servidor DNS devuelve información de dominio de sus registros. Por lo general, la información clave solicitada es la dirección IP para comunicarse con la web / correo electrónico en ese dominio o la dirección IP de otro servidor DNS que pueda proporcionar esa información.
Una vez que el cliente se ha puesto en contacto con el servidor, el servidor se hará cargo y el sistema DNS se saldrá de la imagen.
Lo que eso significa es que el sistema DNS no necesita proporcionar información del puerto, y casi nunca lo hace. Entonces, aunque el objetivo de la pregunta es válido, y a menudo se hace, en realidad no es el sistema DNS el que lo hace. Es por eso que no puedes resolverlo :)
La idea es que una vez que su cliente pueda localizar la máquina o servidor específico que está buscando, le toca a esa máquina escuchar en cualquier puerto que elija y aceptar / negar / responder a cualquier protocolo en cualquier puerto configurado.
Por ejemplo, los servicios web HTTP generalmente se proporcionan en el puerto 80. Eso significa que una vez que el cliente conoce la IP de una máquina, puede suponer que enviar un mensaje al puerto 80 hará que ese mensaje sea leído / respondido por el servicio web de esa máquina. Pero no tiene por qué ser así. Si el servidor está configurado para escuchar solicitudes entrantes web en el puerto 9000, cualquier cliente que pueda acceder al puerto 9000 podrá acceder a su servicio web. Si el servidor está detrás de un proxy / NAT / enrutador que redirige el puerto 10000 al puerto 9000, y el cliente envía una solicitud web en el puerto 10000, el servidor lo recibirá en el puerto 9000 y responderá también.
Redireccionar / mapear dentro del servidor web
Preguntó sobre el mapeo de redireccionamiento o reescribir en un comentario. Estas son funciones que puede hacer un servidor web. Básicamente, puede configurar el servidor web (o la mayoría / muchos servidores web) para administrar cómo maneja la URL que recibe en una solicitud. Por lo tanto, puede modificar internamente la URL en el recibo para hacer que las diferentes URL se manejen de la misma manera, o corregir errores tipográficos comunes (mapeo), o puede responder para decirle al cliente que pregunte por segunda vez, usando alguna URL diferente de reemplazo. (redireccionar).
Estos tienen sus usos y, en principio, podrían manejar su caso de uso, pero no parecen la solución "adecuada" para usted, por estos motivos:
- No creo que el mapeo pueda ayudar en absoluto . La asignación es casi totalmente interna al servidor web, dice "trata esta URL como si fuera esa URL". Por ejemplo, puede utilizar la asignación de URL del servidor web para permitir que un usuario consulte un foro utilizando URL muy antiguas, antiguas y actuales (para conveniencia del usuario) utilizando " https://example.com/index.php?area-=forum&topic = 2 ", también" https://example.com/forum.php?topic=2 "y también" https://forum.example.com?topic=2", y solo maneje esto una vez, asignando los dos primeros de estos en la tercera URL internamente, como el primer paso en el manejo de la consulta. Como este objetivo afecta la ruta de la consulta, no la IP / puerto, la asignación no es muy útil para gestión de puertos, y en su caso, el cliente nunca consulta 8080 en absoluto.
- La redirección funcionaría, pero puede que no sea lo que desea . La redirección en el servidor web depende de que el servidor web realmente reciba la consulta (porque estas son funciones internas del servidor web). Por lo tanto, el servidor web tendría que escuchar en el puerto 80 de todos modos para obtener la consulta original, a fin de responder con la redirección / mapa. Sería también tiene que escuchar en el puerto 8080. Funcionalmente, se necesitaría una regla de redirección a tener que decirle a cualquier puerto de consulta del cliente 80, para consultar de nuevo con el ": 8080" URL, que no suena como lo que usted quiere hacer. El usuario también vería la nueva URL con ": 8080", mientras que parece que quiere que sea "transparente" y no se muestre.
- Además, la redirección solo funcionaría para redirigir un puerto estándar (80 o 443) ; por ejemplo, no podría redirigir el puerto 2000 a 8080, porque el cliente no consultaría en 2000 de forma predeterminada, en primer lugar, por lo que nunca lo haría ir al servidor web, incluso si estaba escuchando en 2000. Sin embargo, esto podría no ser un problema para usted.
Sin embargo, si desea una redirección "inteligente", donde solo ciertas consultas se redirigen a 8080, este podría ser el camino a seguir, ya que la redirección puede incluir lógica para decidir qué URL deben redirigirse, mientras que la asignación de puertos (a continuación) mapearía todo .
Cómo hacerlo correctamente
La respuesta a su pregunta es: desea que el servidor web responda a las solicitudes web que el cliente envía al puerto predeterminado (80/443), pero que el servidor realmente recibe en el puerto 8080.
Eso significa que, como puede ver, necesita algo intermedio que asigne los puertos entre el cliente y el servidor . De esa manera, el cliente envía el puerto 80 (puerto predeterminado utilizado por los navegadores web), pero en realidad el servidor web lo recibe en el puerto 8080. Por supuesto, tendrá que configurar el servidor web para escuchar en el puerto 8080, ya que esto no es estándar, pero es fácil y cualquier servidor web debería poder especificar sus puertos de escucha.
La forma más habitual de hacerlo sería dentro del enrutador / firewall, a través de la asignación de puertos.
En términos simples, para hacer esto, el enrutador recibe una regla, que todo lo recibido que tenga una IP de destino y un puerto de destino = 80, debe pasarse a la LAN con el puerto de destino cambiado a 8080. Ni el servidor web ni el cliente estarán al tanto del cambio (el enrutador lo controla al 100%), por lo que será 100% transparente para ambos. El cliente no tendrá ": 8080" en su URL y no necesitará redirigir nada, ya que consulta el puerto 80, y el servidor web puede ignorar el puerto 80 y escuchar solo en 8080, ya que nunca recibe consultas en el puerto 80 .
Si desea una forma simple y directa, similar a lo que haría un "DNS para puertos", este es probablemente el equivalente más cercano a lo que está pidiendo en su pregunta.