Due computer con l'applicazione in esecuzione sulla stessa porta


2

Ho letto del port forwarding e potrei capire che consente a Internet di inviare richieste alla tua rete privata e di accedere ad alcuni servizi in esecuzione su uno dei computer nel tuo indirizzo privato.

Ma il mio dubbio è cosa accadrà se supponiamo che io abbia 2 computer che ospitano un server web sulla porta 80. In questo caso come router saprà quale computer inviare la richiesta. So che c'è solo 1 computer, quindi il router lo saprà, ma il dubbio è in caso di 2.

Una situazione potrebbe essere come se avessi 2 computer sulla mia rete privata e ognuno ospita un sito Web diverso. Ora voglio che entrambi i miei server siano in esecuzione sulla porta 80 in modo che l'utente non debba digitare il numero di porta ( o potrebbe essere per qualche motivo che voglio che entrambi i server Web abbiano lo stesso numero di porta ). Che succede ora?


Potrebbe essere possibile per uPNP aprire automaticamente il port forwarding per il tuo router e quindi il primo computer sarebbe accessibile da Internet. Se un secondo PC fa lo stesso, uPNP verrà semplicemente ignorato e il primo PC rimarrà quello attivo. Per contrastare questo, guarda una delle risposte; sono richieste regole di port forwarding manuali.
LPChip,

@LPChip Anche il port forwarding manuale non gestirà la situazione che ho delineato nella mia domanda. Può essere risolto utilizzando il proxy inverso, leggi la risposta e i commenti "Darth Android"
hagrawal,

Risposte:


7

Al router non importa. Devi dirgli a quale dei due computer inoltrare, e ignora l'altro.

Se si desidera che entrambi i computer siano accessibili su Internet, è necessario inoltrare due diverse porte (ovvero, 80e 81) sul router, una a ciascuno dei due computer.


Se si desidera che gli utenti non debbano immettere il numero di porta durante la navigazione su uno dei due siti Web, è necessario impostare un proxy inverso come nginx da qualche parte dietro il router (su un terzo computer o su uno dei primi due computer) e fare il router inoltra al proxy. Il proxy può quindi essere configurato per esaminare l'URI a cui il client stava tentando di accedere (il nome host è più comune, cercare "host virtuali del server web", sebbene sia possibile basare la decisione su altre parti dell'URI come il percorso) e inoltra la richiesta a uno dei server originali (che può essere in esecuzione su qualsiasi porta).


In alternativa, è possibile configurare un server Web per inoltrare le richieste all'altro server Web in base all'intestazione Host. Dite al router di inoltrare le connessioni in entrata alla porta TCP 80 a quel server Web.
David Schwartz,

@DavidSchwartz No, non credo sia buono. Voglio che un server sia sovraccarico a causa di un altro server, solo per decidere che questa è in realtà una richiesta per un altro server.
hagrawal,

@hagrawal Stai immaginando che un super router ed entrambi i server siano anemici? Perché? Stai solo cercando modi per risolvere problemi difficili da risolvere? Sicuramente quella decisione deve essere presa da qualche parte, no?
David Schwartz,

Al contrario, non sto immaginando un super server che desidera essere sovraccaricato a causa del carico di altri server. Questo è sicuramente un cattivo design, molte ragioni. Per la mia risoluzione dei problemi sceglierò sempre un terzo server per prendere questa decisione.
hagrawal,

1
@hagrawal Anche se potresti non utilizzare l'aspetto del nome host, è sicuramente corretto , in quanto funzionerà ed è in effetti quanti server Web di grandi dimensioni operano (vedi "host virtuali di server web") per risolvere questa classe di problemi (essendo più server Web servito su un singolo IP su una singola porta). Sono propenso a lasciarlo nella risposta per questo motivo.
Darth Android

1

Il port forwarding inoltra le connessioni in entrata dalla porta del router a un IP specifico nella rete locale. Non rileva magicamente quali macchine nella tua rete eseguono il servizio richiesto, devi configurarlo manualmente quale impostazione di port forwarding.

Ecco come appare nel pannello di configurazione del mio router:

Immagine dello schermo


+1 per tua informazione ma non hai ricevuto la mia domanda, la mia domanda è cosa succede se 2 computer eseguono lo stesso server e sulla stessa porta, come verrà gestita questa situazione? Può essere gestito utilizzando il port forwarding o esiste qualche altra metodologia per gestire questa situazione?
hagrawal,

1

Penso che la tua intuizione sia corretta.

Non credo che possa sapere / decidere tramite il port forwarding. È possibile eseguire il port forwarding solo su uno dei computer, e questo deve essere deciso dalla propria configurazione del router, ovvero si decide che il computer A sia quello a cui il router inoltra le richieste sulla porta 80, oppure al computer B.


Ok, e adesso? Come verrà gestita questa situazione? Può essere gestito utilizzando il port forwarding o esiste qualche altra metodologia per gestire questa situazione?
hagrawal,

@hagrawal Come con qualsiasi port forwarding, indichi al router NAT un IP privato come 192.168.1.4 (CompA) o 192.168.1.7 (CompB). Il router potrebbe permetterti di specificare un indirizzo MAC o un nome, ma è lo stesso principio, può andare solo su un computer ed è quello che hai specificato nel router per cui andare.
barlop,

Ok, ho capito. Controlla questo - Una situazione come se avessi 2 computer sulla mia rete privata e ognuno ospita un sito Web diverso. Ora voglio che entrambi i miei server siano in esecuzione sulla porta 80 in modo che l'utente non debba digitare il numero di porta. Che succede ora?
hagrawal,

1
@hagrawal È necessario eseguire un proxy inverso come nginx su un terzo computer, inoltrare il router al terzo computer e quindi inoltrare il proxy inverso ai primi due computer in base al sito Web desiderato.
Darth Android,

@DarthAndroid Ok, è fantastico, puoi per favore aggiungerlo come risposta e posso accettarlo. Quindi, fondamentalmente, per favore correggimi se sbaglio, questa situazione non può essere gestita semplicemente usando il port forwarding.
hagrawal,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.