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:
Che cos'è il port forwarding?
A cosa serve e perché dovrebbe servirmi?
Ci sono molte domande su ‘port forwarding’ , ma non sembra essercene una che indichi chiaramente cos'è e a cosa serve. Quindi:
Che cos'è il port forwarding?
A cosa serve e perché dovrebbe servirmi?
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.)
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.
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.
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.
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:
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.