Sulla suite di protocolli TCP/IP basa il suo funzionamento l’intera rete Internet.
Il protocollo IP si occupa di gestire l’indirizzamento dei nodi e l’instradamento dei pacchetti dati. A ciascun nodo collegato alla rete Internet viene assegnato un indirizzo IP univoco che lo rende raggiungibile da qualunque altro dispositivo connesso.
Così, tipicamente, a meno di configurazioni che prevedano l’utilizzo della tecnica NAT (Network address translation), il singolo router o il dispositivo mobile nel caso di utilizzo della rete dati dell’operatore di telefonia mobile risultano assegnatari di un indirizzo IP pubblico dinamico (di solito cambia a ogni nuova connessione) oppure statico (non cambia a ogni collegamento) nei formati IPv4 oppure IPv6.
La comunicazione tra due dispositivi collegati alla rete Internet è cosa molto semplice perché è lo stesso protocollo IP, noto l’indirizzo pubblico del destinatario, a occuparsi della selezione del percorso migliore per veicolare i dati (instradamento).
Il port forwarding è una tecnica che permette di trasferire i pacchetti dati da un sistema all’altro utilizzano una specifica porta di comunicazione.
Il già citato TCP e UDP sono protocolli di rete che operano al livello di trasporto: essi si occupano della gestione della procedura di trasferimento dei pacchetti dati utilizzando approcci molto differenti l’uno rispetto all’altro.
Corre infatti un’importante differenza tra i protocolli TCP e UDP: il primo è detto connection oriented, il secondo connection-less. TCP traccia l’intero flusso di pacchetti dati trasmessi accertandosi, mediante la gestione di appositi pacchetti ACK (acknowledgment), che essi siano interamente ed integralmente ricevuti dal destinatario. Mentre il protocollo TCP viene considerata la soluzione più affidabile per il trasferimento dei dati, UDP viene sfruttato per le applicazioni in cui la perdita di qualche pacchetto o datagramma non è importante (si pensi allo streaming audio/video, al gaming online e così via) mentre invece è bene privilegiare le prestazioni.
Le varie comunicazioni possono avvenire sulle porte TCP e UDP: 65.535 per protocollo per un totale complessivo di oltre 131.000 porte potenzialmente utilizzabili.
Alcune porte sono convenzionalmente utilizzate per erogare certi tipi di servizi ma non è strettamente obbligatorio usare sempre le stesse porte: si possono tranquillamente porre componenti software dotati di funzionalità server in ascolto su porte diverse rispetto a quelle tipicamente adoperate.
Ad esempio, un server web solitamente si pone in ascolto sulla porta 80 (TCP) se utilizza il protocollo HTTP e sulla porta 443 (TCP) se usa HTTPS (i dati trasferiti vengono crittografati per garantirne la sicurezza) ma nulla vieta di usare altre porte.
Per impostazione predefinita i firewall, disponibili anche a livello di modem router, bloccano tutti i tentativi di connessione dalla rete Internet (WAN) verso le porte TCP/UDP in ingresso.
Anche Windows integra un firewall ed è possibile configurare Windows Firewall per migliorarne il comportamento o adattarlo alle proprie esigenze.
Port forwarding e port triggering: cosa sono
L’indirizzo IP pubblico col quale ci si presenta sulla rete Internet è “universalmente raggiungibile”. Un router ben configurato non soltanto blocca tutti i tentativi di connessione verso tale IP ma evita di fornire pacchetti di risposta alle eventuali richieste ICMP ricevute. A questo proposito in un altro articolo abbiamo visto cos’è il comando Ping, come funziona e a cosa serve.
Come detto in precedenza, il port forwarding o port mapping è l’operazione che permette di inoltrare i pacchetti ricevuti su una certa porta in ingresso di un certo dispositivo verso un’altra porta di un altro sistema.
La tecnica viene utilizzata in quegli scenari in cui risulta necessario accedere da un host remoto (quindi connesso a una LAN diversa) a un servizio fornito da un sistema collegato a valle del router.
Accedendo al pannello di configurazione del router (di solito digitando 192.168.1.1
oppure 192.168.0.1
nella barra degli indirizzi del browser; l’indirizzo IP privato o locale del router può comunque variare) si può cercare la sezione Port forwarding o Inoltro delle porte per configurare l’inoltro del traffico in arrivo su una porta specifica o su un insieme di esse.
Nell’esempio il traffico in arrivo sulla porta UDP 1194 viene inoltrato sulla stessa porta del sistema locale con IP privato 192.168.1.250.
Nell’esempio, sul sistema locale 192.168.1.250 è installato ed è posto in ascolto un server OpenVPN. Qual è la ratio? Permettere la connessione sicura di dispositivi remoti alla rete locale usando proprio il protocollo e un server OpenVPN.
L’indirizzo IP 192.168.1.250 è stato associato al dispositivo locale in maniera statica in modo da non cambiare nel tempo. A tal proposito è bene scegliere gli indirizzi IP sui quali si installano componenti server fuori dall’intervallo degli indirizzi privati assegnati dinamicamente dal router via DHCP (fare riferimento alla sezione Impostazione LAN, DHCP o similare).
Nello specifico caso dei server VPN, nel caso in cui il router permettesse di attivare direttamente la funzionalità server l’utente non deve configurare il port forwarding perché esso sarà gestito dal router stesso (il router apre le porte in ingresso necessarie per l’utilizzo del servizio senza rendere necessario alcun intervento manuale). Qualora il server VPN fosse ospitato su un sistema connesso in rete locale a valle del router, come nell’esempio, allora è necessario impostare correttamente il port forwarding.
Port triggering: cos’è
Il port triggering è una forma dinamica del modello sul quale si basa la tecnica del port forwarding. Questo approccio viene solitamente utilizzato quando vi fosse la necessità di attivare l’inoltro delle porte per raggiungere più sistemi.
Con il port triggering non è obbligatorio conoscere l’indirizzo IP del sistema di destinazione in quanto è possibile effettuare l’inoltro dei pacchetti dati su tutta la LAN o su un intervallo di indirizzi IP.
Con il port triggering abilitato (viene detto Attivazione delle porte in italiano) il router monitora il traffico all’interno della rete locale: quando rileva del traffico su una specifica porta in uscita, esso provvede a controllare l’indirizzo IP privato del dispositivo che ha generato la richiesta. A questo punto, su indicazione dell’amministratore, il router provvede ad aprire una porta in ingresso prima di inoltrare il traffico alla destinazione richiesta.
Il port forwarding si utilizza quando l’indirizzo IP privato del sistema sul quale è installato il software dotato di funzionalità server resta sempre lo stesso (come abbiamo visto in precedenza) mentre il port triggering quando l’IP privato può cambiare.
Nel caso del port forwarding, inoltre, le porte indicate rimangono sempre aperte mentre con il port triggering vengono dinamicamente aperte solo su esplicita richiesta.
Per verificare l’apertura di una porta specifica si può usare l’URL https://www.speedguide.net/portscan.php?tcp=1&udp=1&port=1194
sostituendo nell’indirizzo il numero di porta da controllare (specificando solo tcp=1
o udp=1
verrà verificata solo la porta TCP o UDP).
Per una scansione delle porte più utilizzate si può usare un servizio online oppure installare e usare Nmap.
Il nostro suggerimento è evitare per quanto possibile l’utilizzo di regole per l’inoltro dei pacchetti dati. Molto meglio impostare un server VPN sicuro in locale ed esporre sulla rete Internet solo la porta per la connessione a tale sistema.
Consigliamo di seguire le indicazioni per rendere sicuro il router.