25 marzo 2011

Apertura porte router... cosa significa?


Dunque, cercherò di spiegarlo nella maniera più semplice possibile, prima di farlo però dovrò darvi qualche cenno sul funzionamento delle reti LAN/WAN e della famiglia degli standard IEEE 802.1.
Immaginiamo la rete geografica (Worldwide Area Network) o più comunemente chiamata Internet come una rete composta da nodi (computer) e da rami (collegamenti tra di essi). Ad ogni nodo vi è assegnato un IP univoco. Ora, la comunicazione in internet avviene stabilendo una connessione di tipo client-server. Per server non si intende solo una macchina adibita a fare ciò, ma può essere anche un nostro comune PC di casa. Se io volessi scambiare informazioni con un altro nodo della rete WAN, dovrò stabilire una connessione con il mio eventuale server che sarà un qualsiasi altro nodo della rete geografica identificato da un indirizzo IP univoco, ciò significa che non potranno esistere contemporaneamente due nodi aventi stesso IP pubblico. (tutti i dettagli sull'incapsulamento e il decapsulamento dei frame tramite lo schema ISO/OSI li trascuriamo). Un'architettura client-server sullo stack TCP/IP ossia il protocollo di comunicazione usato anche nelle comunicazioni internet funziona nel seguente modo: PC1 farà da server HTTP, e, come tale, ascolterà sulla porta 80. quindi, se da un qualsiasi altro nodo appartenente alla rete WAN vorrò connettermi a tale server, dovrò farlo aprendo un web browser e digitare l'indirizzo IP di PC1 senza specificare la porta perché il web browser di default utilizza la porta 80.
 Quindi ricapitolando: ogni nodo che si connette alla rete internet è identificato da un indirizzo IP. Su un computer si può avviare un servizio, ossia un'applicazione che farà da server su una determinata porta o anche su un range di più porte, le porte sono in tutto 65534 per ciascun protocollo (TCP o UDP) quindi tecnicamente, supponendo che mettessimo in ascolto un servizio per ogni singola porta su entrambi i protocolli potremo avviare 65534 x 2 servizi. Il computer che farà da client per stabilire la connessione al server dovrà possedere un client (software) che capisca il protocollo, cioè che sappia interpretare i messaggi del server preso in considerazione, e fornirgli l'IP del server e la relativa porta.
Fin qua la cosa è abbastanza semplice e chiara. Le cose si complicano leggermente qualora ci trovassimo in una rete LAN (Local Area Network).
La topologia di quest'ultima è esattamente la stessa della rete WAN, ma applicata a piccoli ambienti come, appartamenti o reti aziendali. Quindi vige la stessa tecnica di connessione client-server che ho esplicato prima.
La difficoltà si ha quando un computer appartenente ad una LAN tramite questa deve accedere alla rete WAN. Ciò avviene tramite un apparato di rete che interconnette le due reti chiamato "router". Esso, collegato ad uno "switch" é in grado tramite un sistema di reindirizzazione dei frame chiamato "NAT" di interconnettere le due reti rendendo quindi raggiungibile un computer che risiede sulla rete WAN da una rete Locale, Vediamo come:

supponiamo che un computer appartenente alla LAN che d'ora in poi per fantasia chiameremo PC-LAN voglia connettersi ad un servizio risiedente su un PC-WAN. da PC-LAN partiranno dei frame nei quali vi è segnato l'IP address del nodo source, in questo caso l'IP di PC-LAN, e raggiungono il router, il quale attraverso la procedura NAT sostituirà in questi pacchetti l'indirizzo LAN con l'indirizzo WAN, in modo tale che il nodo di destinazione appartenente alla WAN che vedo solo indirizzi di tipo WAN, possa rispondere alle richieste.
Ora vi chiederete a che serve l'apertura delle porte.. Immaginate la situazione contraria in cui un PC-WAN debba stabilire la connessione verso un PC-LAN, come abbiamo detto prima nelle reti WAN l'unico IP valido è quello di tipo WAN, quindi dovremmo inserire sul nostro client l'indirizzo IP dell'interfaccia WAN (in questo caso il nostro router) appartenente alla rete LAN di destinazione. Una volta che abbiamo raggiunto quest'ultima, a quale nodo della rete LAN ci connetteremo? Lo stabiliremo tramite le porte TCP o UDP. Se su un qualsiasi PC-LAN apriremo un servizio che ascolterà su una porta X, quindi 192.168.0.2:1024 quando dal PC-WAN ci connetteremo all'IP pubblico relativo al NAT su questa rete dovremmo digitare sul client  82.150.23.80:1024, in modo che il NAT saprà che le connessioni iniziate su quella porta dovranno essere dirette su quel determinato computer della LAN. Come farà a saperlo? glielo dobbiamo dire tramite un'impostazione sul nostro router chiamata "port forwarding". tramite la quale diremo che le connessioni in ingresso su una determinata porta dovranno essere smistate verso un determinato nodo interno sul quale potremo aprire un qualsiasi servizio in ascolto.