Che cos'è il port forwarding e a cosa serve?


Risposte:


315

Le basi

Per spiegare davvero il port forwarding, devi prima capire un po 'di più su ciò che fa il tuo router . Il tuo fornitore di servizi Internet assegna un indirizzo IP alla tua connessione Internet. Tutti i computer su Internet necessitano di un indirizzo IP univoco, ma in casa sono presenti più computer e un solo indirizzo. Quindi come funziona?

Se sai di cosa si tratta e vuoi solo sapere come farlo : http://portforward.com/ ha un tutorial con schermate per letteralmente centinaia di router diversi. La documentazione è nascosta dietro una pagina di annuncio per il loro strumento portconfig automatico. (Basta cliccare un po 'intorno e lo troverai.)

NAT - Che cos'è? Perché lo usiamo?

Il router di casa ha una funzione chiamata Network Address Translation, o NAT, integrata. All'interno della rete, i computer hanno indirizzi come 192.168.1.100. Tutti gli indirizzi nell'intervallo 192.168. * (O nell'intervallo 10. *) sono indirizzi " privati " o " riservati " . Questi indirizzi sono ufficialmente assegnati da IANA per essere utilizzati all'interno di reti private. Il router assegna automaticamente tale indirizzo a ciascun computer collegato tramite DHCP . Questi indirizzi sono il modo in cui i computer della tua rete comunicano con il router e tra di loro.

Il router ha un'interfaccia di rete separata che lo collega a Internet. Questa interfaccia ha un indirizzo molto diverso assegnato dal tuo ISP. Questo è l'unico indirizzo che ho menzionato prima e il tuo router lo utilizza per comunicare con altri computer su Internet. I computer all'interno della rete dispongono di indirizzi IP privati non instradabili , il che significa che se inviano pacchetti direttamente a Internet, i pacchetti verranno automaticamente eliminati (i pacchetti con indirizzi privati ​​non possono attraversare Internet per motivi di stabilità). Ma il tuo router ha un indirizzo instradabile . La traduzione dell'indirizzo di rete, come suggerisce il nome, si traduce tra questi due tipi di indirizzi, consentendo a più computer all'interno della rete di apparire su Internet come un computer con un indirizzo.

I dettagli

Anche se questo può sembrare complicato, in realtà è abbastanza semplice come lo fa il tuo router. Ogni volta che un computer all'interno della tua rete desidera connettersi a un computer su Internet, invia la richiesta di connessione al router (sa di inviarlo al router perché il suo parametro Gateway predefinito è impostato sull'indirizzo del router). Il router accetta quindi la richiesta di connessione (una "richiesta SYN" in TCP / IP) e modifica l'indirizzo di origine ("risposta" o indirizzo di ritorno) e lo cambia dall'IP privato del computer all'IP pubblico dell'IP router, in modo che la risposta venga inviata al router. Quindi prende nota in un database (chiamato tabella NAT ) che la connessione è stata avviata, in modo da ricordarla in seguito.

Quando la risposta ritorna dal computer remoto (un "SYN-ACK"), il router cerca nella sua tabella NAT e vede che una connessione a quell'host su quella porta era stata precedentemente avviata da un computer privato sulla tua rete, cambia la destinazione indirizzo all'indirizzo privato del computer e lo inoltra all'interno della rete. In questo modo, i pacchetti possono continuare a transitare avanti e indietro tra le reti, con il router che cambia gli indirizzi in modo trasparente affinché funzioni. Al termine della connessione, il router la rimuove semplicemente dalla tabella NAT.

O pensaci in questo modo

Questo potrebbe essere un po 'più facile da visualizzare con una metafora - diciamo che sei uno spedizioniere negli Stati Uniti che lavora con clienti cinesi. Devono inviare pacchi a molti clienti negli Stati Uniti, ma è più facile per motivi doganali / burocratici inviare pacchi in un solo posto. Quindi, un pacchetto arriva da uno dei tuoi clienti in Cina (la rete privata, in questo esempio) con una destinazione effettiva da qualche parte negli Stati Uniti (Internet). Modifichi l'etichetta dell'indirizzo sulla scatola all'indirizzo statunitense (pubblico) e cambi l'indirizzo di ritorno sul tuo indirizzo pubblico (dal momento che non può essere restituito direttamente in Cina senza disturbare il cliente) e consegnarlo al servizio postale . Se il cliente restituisce il prodotto, arriva a te. Lo guardi nei tuoi registri e vedi da quale compagnia proveniva la Cina,

Funziona benissimo, ma c'è un piccolo problema. Cosa succede se un cliente deve inviare qualcosa all'azienda, diciamo un vaglia postale in pagamento per qualcosa? Oppure, supponiamo che un computer su Internet avvii una connessione con il router (una richiesta SYN), diciamo a un server web che si trova nella rete. La lettera / pacchetto contiene solo l'indirizzo pubblico del router, quindi il router in realtà non sa dove inviarlo! potrebbe essere destinato a qualsiasi computer della rete privata o a nessuno di essi. Potresti aver riscontrato questo problema quando chiami il telefono di casa di qualcuno: quando ti chiamano non è un problema, ma quando li chiami non c'è modo per loro di sapere chi è la chiamata, quindi la persona sbagliata potrebbe rispondere.

Mentre è abbastanza facile per gli umani risolverlo, è molto più complicato per i computer, perché non tutti i computer della tua rete conoscono tutti gli altri computer.

E finalmente arriviamo al Port Forwarding

Il port forwarding è il modo in cui risolviamo questo problema: è un modo per dire al tuo router a quale computer all'interno della rete dovrebbero essere indirizzate le connessioni in entrata. Abbiamo tre modi diversi per farlo:

  • Faux-DMZ : molti router hanno una funzione chiamata DMZ. Questo significa Demilitarized Zone, che è una sorta di configurazione di sicurezza della rete. La DMZ sui router domestici viene spesso definita DMZ falsa perché manca delle funzionalità di una DMZ effettiva. Ciò che fa è il tipo più semplice di gestione della connessione in entrata: tutte le richieste di connessione in arrivo verranno inviate a uno specificato all'interno della rete. È semplicissimo: inserisci un indirizzo IP nella configurazione del tuo router e tutte le connessioni in entrata vanno lì. Questo non funziona sempre, tuttavia, perché potresti avere più computer che devono accettare connessioni in entrata. Per quello, abbiamo ...
  • Port forwarding : tutte le richieste di connessione di rete includono una "porta". La porta è solo un numero ed è parte di come un computer sa quale sia il pacchetto. IANA ha specificato che la porta 80 è utilizzata per HTTP. Ciò significa che un pacchetto in arrivo che indica la porta numero 80 deve essere una richiesta destinata a un server Web. Il port forwarding sul router consente di inserire un numero di porta (o eventualmente un intervallo o una combinazione di numeri, a seconda del router) e un indirizzo IP. Tutte le connessioni in entrata con un numero di porta corrispondente verranno inoltrate al computer interno con quell'indirizzo.
  • Port forwarding UPnP: il forwarding UPnP funziona esattamente come il port forwarding, ma invece di configurarlo, il software su un computer all'interno della rete imposta automaticamente il router per inoltrare il traffico su una determinata porta.

Un esempio

Diamo un'occhiata a un esempio di utilizzo. Molti videogiochi multiplayer (ad esempio Counter Strike) ti consentono di eseguire un server di gioco sul tuo computer a cui altre persone possono connettersi per giocare con te. Il tuo computer non conosce tutte le persone che vogliono giocare, quindi non può connettersi a loro - invece, devono inviare nuove richieste di connessione al tuo computer da Internet.

Se non hai impostato nulla sul router, riceverà queste richieste di connessione ma non saprebbe quale computer all'interno della rete avesse il server di gioco, quindi le ignorerebbe (o, più specificamente, invierebbe indietro un pacchetto che indica che non può connettersi). Fortunatamente, conosci il numero di porta che sarà presente nelle richieste di connessione per il server di gioco. Quindi, sul router, si imposta una porta in avanti con il numero di porta previsto dal server di gioco (ad esempio, 27015) e l'indirizzo IP del computer con il server di gioco (ad esempio, 192.168.1.105).
Il router saprà inoltrare le richieste di connessione in entrata a 192.168.1.105 all'interno della rete e i computer esterni potranno connettersi.

Un altro esempio potrebbe essere una rete locale con due macchine, in cui la seconda con IP 192.168.1.10 ospita un sito Web che utilizza Apache. Pertanto, il router dovrebbe inoltrare le richieste della porta in entrata 80 a questa macchina. Utilizzando il port forwarding, entrambe le macchine possono funzionare contemporaneamente nella stessa rete.

Grafico di esempio di port forwarding

I videogiochi sono forse il luogo più comune in cui gli utenti comuni incontreranno il port forwarding, sebbene la maggior parte dei giochi moderni utilizzi UPnP in modo da non doverlo fare manualmente (invece, è completamente automatico). Dovrai farlo ogni volta che vuoi essere in grado di collegarti direttamente a qualcosa nella tua rete (piuttosto che attraverso un intermediario su Internet). Ciò potrebbe includere l'esecuzione del proprio server Web o la connessione tramite Remote Desktop Protocol a uno dei computer.

Una nota sulla sicurezza

Una delle cose belle di NAT è che fornisce un po 'di sicurezza integrata e senza sforzo. Molte persone vagano su Internet alla ricerca di macchine vulnerabili ... e lo fanno tentando di aprire connessioni con varie porte. Queste sono connessioni in entrata, quindi, come discusso in precedenza, il router le lascerà cadere. Ciò significa che in una configurazione NAT, solo il router stesso è vulnerabile agli attacchi che coinvolgono connessioni in entrata. Questa è una buona cosa, perché il router è molto più semplice (e quindi meno probabile che sia vulnerabile) rispetto a un computer che esegue un sistema operativo completo con un sacco di software. Dovresti tenere presente, quindi, che DMZing un computer all'interno della tua rete (impostandolo come destinazione DMZ) perdi quel livello di sicurezza per quel computer: ora è completamente aperto alle connessioni in entrata da Internet, quindi è necessario proteggerlo come se fosse direttamente collegato. Naturalmente, ogni volta che si inoltra una porta, il computer all'estremità ricevente diventa vulnerabile su quella porta specifica. Quindi assicurati di eseguire un software aggiornato che sia ben configurato.


2
Lo hai menzionato brevemente, ma potresti voler spiegare l'importanza degli usi in stile DMZ del port forwarding. Non riesco a pensare a un singolo caso in cui sarebbe una buona idea, in un ambiente di produzione, esporre qualcosa come un server sql (o qualunque cosa) al mondo esterno. Il port forwarding può consentire di accedere a risorse protette senza compromettere seriamente la sicurezza.
Brian Vandenberg,

11
Un dettaglio non approfondito nella sezione NAT è il fatto che se i computer della tua rete usano DHCP per ottenere i loro indirizzi IP privati ​​interni non instradabili, è possibile che quello assegnato loro possa variare e se ciò accade il port forwarding incasinare. È meglio evitarlo impostando manualmente l'indirizzamento di rete di ciascun computer. portforward.com sottolinea l'importanza di questo e ha una guida che descrive come impostare un indirizzo IP statico su un sistema, tuttavia non menziona la necessità di configurare anche il DHCP del router per evitare questi indirizzi NAT ora riservati.
martineau,

2
@jcrawfordor, Ciao, ti dispiace spiegare in che modo UPnP è completamente automatico? Che cos'è UPnP e come funziona?
Pacerier,

1
@martineau riservando gli indirizzi DHCP è un buon modo per farlo. Alcuni router possono essere trasferiti a client specifici, non a indirizzi, il che è ancora più preferibile.
Baldrickk,

2
La parte della risposta che dice "La porta è solo un numero ed è parte di come un computer sa quale sia il pacchetto". è fuorviante. La correzione di un numero di porta per un'applicazione è una convenzione, non è un fattore nel determinare il tipo di pacchetto. Nella migliore delle ipotesi un pacchetto pensato per la porta 80 può essere indovinato come HTTP, niente di più, dipenderà interamente (a livello dell'applicazione) dall'ascolto dell'applicazione sulla porta 80.
codeman48
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.