Risposta semplice, correlata al livello di domanda
Ignorando gli usi esotici del DNS e anche invertendo la ricerca DNS (non pertinente alla domanda), quasi tutto l'uso del DNS è nella forma:
- Il client invia un nome di dominio (completo o meno) a un server DNS
- Il server DNS restituisce le informazioni sul dominio dai suoi record. Di solito le informazioni chiave richieste sono l'indirizzo IP per comunicare con il web / e-mail su quel dominio o l'indirizzo IP di un altro server DNS in grado di fornire tali informazioni.
Una volta che il client ha contattato il server, il server stesso subentra e il sistema DNS esce dall'immagine.
Ciò significa che il sistema DNS non ha bisogno di fornire informazioni sulla porta e quasi mai lo fa. Quindi, sebbene lo scopo della domanda sia valido e spesso fatto, in realtà non è il sistema DNS a farlo. Ecco perché non puoi risolverlo :)
L'idea è che una volta che il client è in grado di individuare la macchina o il server specifici che sta cercando, spetta a quella macchina ascoltare su tutte le porte che sceglie e accettare / rifiutare / rispondere a qualsiasi protocollo su qualsiasi porta configurata.
Ad esempio, i servizi Web HTTP sono generalmente forniti sulla porta 80. Ciò significa che una volta che il client conosce un IP macchina, si può presumere che l'invio di un messaggio alla porta 80 comporterà la lettura / risposta di quel messaggio dal servizio Web di quella macchina. Ma non deve essere così. Se il server è configurato per l'ascolto di richieste Web in entrata sulla porta 9000, qualsiasi client in grado di raggiungere la porta 9000 sarà in grado di raggiungere il suo servizio Web. Se il server si trova dietro un proxy / NAT / router che reindirizza la porta 10000 alla porta 9000 e il client invia una richiesta Web sulla porta 10000, il server la riceverà sulla porta 9000 e risponderà.
Reindirizzamento / mapping all'interno del server Web
Hai chiesto informazioni sul mapping di reindirizzamento o riscrivi in un commento. Queste sono funzioni che un web server può svolgere. Fondamentalmente, è possibile configurare il server Web (o la maggior parte / molti server Web) per gestire il modo in cui gestisce l'URL che riceve in una richiesta. Quindi può modificare internamente l'URL alla ricezione per far gestire URL diversi allo stesso modo o correggere errori di battitura comuni (mapping), oppure può effettivamente rispondere per dire al client stesso di chiedere una seconda volta, usando alcuni URL di sostituzione diversi (reindirizzare).
Questi hanno i loro usi e in linea di principio potrebbero gestire il tuo caso d'uso, ma non sembrano la soluzione "giusta" per te, per questi motivi:
- Non penso che la mappatura possa essere d'aiuto . La mappatura è quasi totalmente interno al server web, si dice "trattare questo URL, se si tratta di quel URL". Ad esempio, è possibile utilizzare la mappatura URL del server Web per consentire a un utente di interrogare un forum utilizzando URL molto vecchi, vecchi e attuali (per comodità dell'utente) utilizzando " https://example.com/index.php?area-=forum&topic = 2 ", anche" https://example.com/forum.php?topic=2 "e anche" https://forum.example.com?topic=2"e gestirlo solo una volta, mappando internamente i primi due sul terzo URL, come primo passo nella gestione della query. Poiché questi target influiscono sul percorso della query non sull'IP / porta, il mapping non è molto utile per gestione delle porte e, nel tuo caso, il client non interroga mai 8080.
- Il reindirizzamento avrebbe funzionato, ma potrebbe non essere quello che desideri . Il reindirizzamento nel server Web si basa sul server Web che riceve effettivamente la query (poiché si tratta di funzioni interne del server Web). Quindi il web server dovrebbe comunque ascoltare sulla porta 80 per ottenere la query originale, per rispondere con il reindirizzamento / mappa. Dovrebbe anche ascoltare sulla porta 8080. Funzionalmente, avrebbe bisogno di una regola di reindirizzamento per dire a qualsiasi client che interroga la porta 80, di interrogarla di nuovo usando l'URL ": 8080", che non suona come quello che vuoi fare. L'utente vedrebbe anche il nuovo URL con ": 8080", mentre sembra che tu voglia che sia "trasparente" e non mostrato.
- Anche il reindirizzamento funzionerebbe solo per reindirizzare una porta standard (80 o 443) - non si potrebbe reindirizzare la porta da 2000 a 8080, perché il client non eseguirà query su 2000 per impostazione predefinita, in primo luogo, quindi non lo farebbe mai accedere al server Web, anche se era in ascolto nel 2000. Questo potrebbe non essere un problema per te.
Tuttavia, se si desidera il reindirizzamento "intelligente", in cui solo alcune query vengono reindirizzate a 8080, questa potrebbe essere la strada da percorrere, poiché il reindirizzamento può includere la logica per decidere quali URL devono essere reindirizzati, mentre il mapping delle porte (sotto) mapperebbe tutto .
Come farlo correttamente
La risposta alla tua domanda è che vuoi che il server web risponda alle richieste web che il client invia alla porta predefinita (80/443), ma che il server riceve effettivamente sulla porta 8080.
Ciò significa che, come puoi vedere, hai bisogno di qualcosa tra quella che mappa le porte tra client e server . In questo modo, il client invia sulla porta 80 (porta predefinita utilizzata dai browser Web), ma viene effettivamente ricevuto sulla porta 8080 dal server Web. Ovviamente dovrai configurare il server web per l'ascolto sulla porta 8080, poiché questo non è standard, ma è facile e qualsiasi server web dovrebbe essere in grado di avere le sue porte di ascolto specificate.
Il modo più comune per farlo sarebbe all'interno del router / firewall, tramite il mapping delle porte.
In parole povere, per fare ciò, al router viene data una regola, che qualsiasi cosa ricevuta che abbia un IP di destinazione e una porta di destinazione = 80, dovrebbe essere passata nella LAN con la porta di destinazione modificata in 8080. Né il server web né il client saranno a conoscenza della modifica (è gestita al 100% dal router), quindi sarà trasparente al 100% per entrambi. Il client non avrà ": 8080" nel suo URL e non dovrà reindirizzare nulla, poiché richiede la porta 80 e il server Web può ignorare la porta 80 e ascoltare solo su 8080, poiché non riceve mai query sulla porta 80 .
Se vuoi un modo semplice e diretto, simile a quello che farebbe un "DNS per porte", questo è probabilmente l'equivalente più vicino a quello che stai chiedendo nella tua domanda.