2011-05-16 04:00:37 +0000 2011-05-16 04:00:37 +0000
219
219

Cos'è il port forwarding e a cosa serve?

Ci sono molte domande su ‘port forwarding’ , ma non sembra essercene una che indichi chiaramente cos'è e a cosa serve. Quindi:

  1. Che cos'è il port forwarding?

  2. A cosa serve e perché dovrebbe servirmi?

Risposte (1)

324
324
324
2011-05-16 04:35:44 +0000

The Basics

Per spiegare veramente il port forwarding, bisogna prima capire un po’ di più su cosa fa il router . Il vostro fornitore di servizi internet assegna un indirizzo IP alla vostra connessione internet. Tutti i computer su internet hanno bisogno di un indirizzo IP univoco, ma avete più computer a casa vostra e un solo indirizzo. Quindi come funziona?

Se sa di cosa si tratta e vuole solo sapere come farlo : http://portforward.com/ ha un how-to con screenshot per letteralmente centinaia di router diversi. La documentazione è lì nascosta dietro una pagina pubblicitaria per il loro strumento automatico portconfig. (Basta cliccare un po’ in giro e la troverete.)

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

Il tuo router di casa ha una funzione chiamata Network Address Translation, o NAT, integrata. All'interno della vostra 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 ad ogni computer collegato tramite DHCP . Questi indirizzi sono il modo in cui i computer della vostra rete comunicano con il router e tra loro.

Il vostro router ha un'interfaccia di rete separata che lo collega a Internet. Questa interfaccia ha un indirizzo molto diverso che viene assegnato dal vostro ISP. Questo è l'unico indirizzo che ho menzionato prima, e il vostro router lo usa per comunicare con altri computer su internet. I computer all'interno della vostra rete hanno indirizzi IP privati non-routable, il che significa che se inviano pacchetti direttamente a internet i pacchetti vengono automaticamente eliminati (i pacchetti con indirizzi privati non possono attraversare internet per motivi di stabilità). Ma il router ha un indirizzo routable. Network Address Translation, come suggerisce il nome, traduce tra questi due tipi di indirizzi, permettendo ai diversi computer all'interno della vostra rete di apparire su internet come un unico computer con un unico indirizzo.

I dettagli

Anche se può sembrare complicato, in realtà è abbastanza semplice come il vostro router lo fa. Ogni volta che un computer all'interno della vostra rete vuole connettersi a un computer su Internet, invia la richiesta di connessione al router (sa di doverla inviare al router perché il suo parametro Default Gateway è impostato all'indirizzo del router). Il router prende quindi quella richiesta di connessione (una “SYN request” in TCP/IP) e cambia l'indirizzo di origine (l'indirizzo “response-to” o indirizzo di ritorno) e la modifica dall'IP privato del computer all'IP pubblico del router, in modo che la risposta venga inviata al router. Prende poi nota in un database (chiamato NAT table) che la connessione è stata avviata, in modo che la ricordi in seguito.

Quando la risposta torna dal computer remoto (un “SYN-ACK”), il router guarda nella sua tabella NAT e vede che una connessione a quell'host su quella porta è stata precedentemente avviata da un computer privato sulla vostra rete, cambia l'indirizzo di destinazione in indirizzo privato del computer, e lo inoltra all'interno della vostra rete. In questo modo, i pacchetti possono continuare a transitare avanti e indietro tra le reti, con il router che cambia in modo trasparente gli indirizzi in modo che funzioni. Quando la connessione viene terminata, il router si limita a rimuoverla dalla tabella NAT.

Oppure pensala 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 i clienti cinesi. Hanno bisogno di inviare pacchi a molti clienti negli Stati Uniti, ma è più facile per motivi doganali/cartografici inviare pacchi in un solo luogo. Così, un pacco arriva a voi da uno dei vostri clienti in Cina (la rete privata, in questo esempio) con una destinazione effettiva da qualche parte negli Stati Uniti (internet). Cambiate l'etichetta dell'indirizzo sulla scatola con l'indirizzo statunitense (pubblico), e cambiate l'indirizzo di ritorno al vostro indirizzo pubblico (poiché non può essere restituito direttamente in Cina senza disturbare il cliente) e lo consegnate al servizio postale. Se il cliente restituisce il prodotto, viene da voi. Lo cercate nei vostri registri e vedete da quale azienda in Cina proviene, e cambiate la destinazione a quella azienda (il suo indirizzo privato) e l'indirizzo di ritorno al vostro indirizzo privato, in modo che possano rispedire un ricambio attraverso di voi.

Questo funziona alla grande, ma c'è un piccolo problema. Cosa succede se un cliente ha bisogno di inviare qualcosa all'azienda, diciamo un vaglia postale in pagamento per qualcosa? Oppure, diciamo che un computer su internet avvia una connessione con il router (una richiesta SYN), diciamo a un server web che si trova in rete. La lettera/pacchietto ha solo l'indirizzo pubblico del router, quindi il router in realtà non sa dove inviarlo! potrebbe essere destinato a uno qualsiasi dei computer della rete privata. o per nessuno di loro. Potresti aver avuto questo problema quando chiami il telefono di casa di qualcuno - quando ti chiama non è un problema, ma quando lo chiami non c'è modo per loro di sapere per chi è la chiamata, quindi la persona sbagliata potrebbe rispondere.

Anche se è abbastanza facile per gli esseri umani risolvere questo problema, è molto più complicato per i computer, perché non tutti i computer della tua rete conoscono tutti gli altri computer.

E infine arriviamo al Port Forwarding

Port Forwarding è il modo in cui risolviamo questo problema: è un modo per dire al tuo router a quale computer all'interno della rete devono essere dirette le connessioni in entrata. Abbiamo tre modi diversi per farlo:

  • Faux-DMZ : molti router hanno una funzione chiamata DMZ. Questa sta per Demilitarized Zone, che è una sorta di configurazione di sicurezza della rete. La DMZ sui router domestici è spesso chiamata faux-DMZ perché manca delle caratteristiche di una DMZ vera e propria. Ciò che fa è il tipo più semplice di gestione delle connessioni in entrata: tutte le richieste di connessione in entrata saranno inviate ad una specifica all'interno della vostra rete. È semplicissimo: si digita un indirizzo IP nella configurazione del router e tutte le connessioni in entrata vanno lì. Questo non sempre funziona, però, perché potreste avere più computer che devono accettare le connessioni in entrata. Per questo, abbiamo…
  • Port forwarding : Tutte le richieste di connessione di rete includono una “porta”. La porta è solo un numero, e fa parte del modo in cui un computer conosce il pacchetto. IANA ha specificato che la porta 80 viene utilizzata per l'HTTP. Ciò significa che un pacchetto in entrata che dice il numero di porta 80 deve essere una richiesta destinata ad un server web. L'inoltro della porta 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 saranno inoltrate al computer interno con quell'indirizzo.
  • Porta UPnP forwards : L'inoltro UPnP funziona esattamente come l'inoltro della porta, ma invece di impostarlo, il software di un computer all'interno della rete imposta automaticamente il router per inoltrare ad esso il traffico su una data porta.

Un esempio

Vediamo un esempio di utilizzo. Molti videogiochi multiplayer (ad esempio, Counter Strike) consentono di far funzionare sul vostro computer un server di gioco a cui altre persone possono collegarsi per giocare con voi. Il vostro computer non conosce tutte le persone che vogliono giocare, quindi non può connettersi a loro, ma deve inviare nuove richieste di connessione al vostro computer da internet.

Se non avete impostato nulla sul router, riceverà queste richieste di connessione, ma non saprà quale computer all'interno della rete ha il server di gioco, quindi le ignorerà (o, più precisamente, invierà un pacchetto che indica che non può connettersi). Per fortuna, si conosce il numero di porta che sarà presente sulle richieste di connessione del server di gioco. Così, sul router, si imposta una porta in avanti con il numero di porta che il game server si aspetta (per esempio, 27015) e l'indirizzo IP del computer con il game server (per esempio, 192.168.1.105). Il router saprà di inoltrare le richieste di connessione in arrivo a 192.168.1.105 all'interno della rete, e i computer all'esterno saranno in grado di connettersi all'interno.

Un altro esempio sarebbe una rete locale con due macchine, dove la seconda con l'IP 192.168.1.10 ospita un sito web che usa Apache. Pertanto il router dovrebbe inoltrare le richieste della porta 80 in entrata a questa macchina. Utilizzando il port forwarding, entrambe le macchine possono funzionare nella stessa rete allo stesso tempo.

I videogiochi sono forse il luogo più comune in cui gli utenti di tutti i giorni incontrano il port forwarding, anche se la maggior parte dei giochi moderni utilizzano UPnP in modo da non doverlo fare manualmente (invece, è completamente automatico). Dovrete farlo ogni volta che vorrete essere in grado di connettervi direttamente a qualcosa nella vostra rete (piuttosto che attraverso qualche intermediario su internet). Questo potrebbe includere l'esecuzione del proprio server web o la connessione tramite Remote Desktop Protocol ad uno dei vostri computer.

Una nota sulla sicurezza

Una delle cose belle di NAT è che fornisce un po’ di sicurezza integrata e senza sforzo. Molte persone vagano per Internet alla ricerca di macchine che sono vulnerabili… e lo fanno cercando di aprire connessioni con varie porte. Queste sono connessioni in entrata, quindi, come discusso sopra, il router le farà cadere. Ciò significa che in una configurazione NAT, solo il router stesso è vulnerabile agli attacchi che coinvolgono le connessioni in entrata. Questa è una buona cosa, perché il router è molto più semplice (e quindi meno vulnerabile) di un computer che esegue un sistema operativo completo con un sacco di software. Si dovrebbe tenere presente, quindi, che DMZingando un computer all'interno della propria rete (impostandolo come destinazione DMZ) si perde quel livello di sicurezza per quel computer: essoè 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 sul lato ricevente diventa vulnerabile su quella specifica porta. Quindi assicuratevi di eseguire un software aggiornato e ben configurato.