Ricerca nel sito web

Cos'è il port forwarding?


Questo articolo illustra gli scenari più comuni per il port forwarding.

Il port forwarding trasferisce il traffico di rete da un ascoltatore di rete (chiamato "porta") a un altro, sullo stesso computer o su un computer diverso. Le porte, in questo contesto, non sono oggetti fisici ma una routine software in ascolto dell'attività di rete.

Quando il traffico diretto a una porta specifica arriva a un router, a un firewall o a un'altra applicazione di rete, la risposta che riceve può essere definita in base alla porta con cui sta tentando di comunicare. Quando utilizzi il port forwarding, puoi intercettare la comunicazione in arrivo sulla porta 8080, ad esempio, e inoltrarla invece alla porta 80. La nuova porta di destinazione potrebbe trovarsi sullo stesso dispositivo di quello che riceve il segnale o su un dispositivo diverso. Esistono molti modi per inoltrare le porte e diversi motivi per farlo. In questo articolo vengono illustrati gli scenari più comuni.

Inoltro porta con il router

Di solito è necessario inoltrare le porte quando ospiti un server a casa. Il tuo router domestico (di solito l'apparecchio WiFi che ottieni dal tuo ISP) ha un firewall integrato progettato per impedire al mondo esterno di accedere alla tua rete domestica. Puoi utilizzare il port forwarding per consentire il traffico su una porta specifica attraverso il firewall del router, inviandolo a un indirizzo IP specifico sulla tua rete.

Ad esempio, supponiamo che tu stia ospitando un server Minetest e desideri invitare amici. Affinché possano passare attraverso il router ed entrare nel server Minetest, è necessario inoltrare una porta dal router al computer che ospita Minetest. Per impostazione predefinita, un server Minetest funziona sulla porta 30000. Puoi eseguire il port forwarding di 30000 sul tuo router alla porta 30000 del tuo server Minetest, oppure potresti inventare arbitrariamente una porta più semplice da ricordare per i tuoi giocatori e poi inoltrare invece quella. Trovo che le persone inevitabilmente contano male gli zeri in 30000 (soprattutto senza il beneficio di una virgola per aiutare), quindi utilizzo la porta 1234 e la inoltro alla mia porta 30000 interna.

Le interfacce del router differiscono da produttore a produttore, ma l'idea è la stessa indipendentemente dalla marca di router che hai in casa. Innanzitutto, accedi al router.

Il suo indirizzo IP e le informazioni di accesso sono spesso stampati sul router stesso o nella sua documentazione. Possiedo un router TP-Link GX90 e accedo indicando il mio browser web su 10.0.1.1, ma il tuo router potrebbe essere 192.168.0.1 o qualche altro indirizzo.

Il mio router GX90 chiama il port forwarding "server virtuali", che è una categoria che si trova nella scheda NAT forwarding del router. NAT sta per Traduzione degli indirizzi di rete. Altri router potrebbero chiamarlo semplicemente Port forwarding o Firewall o Servizi. Potrebbe essere necessario fare un po' di clic per trovare la categoria giusta oppure potrebbe essere necessario dedicare un po' di tempo a studiare la documentazione del router.

Quando trovi l'impostazione di port forwarding, aggiungi una nuova regola che nomina una porta esterna (1234, nel mio esempio) e una interna (30000). Inoltra la porta esterna alla porta interna dell'indirizzo IP del computer a cui desideri che le persone possano accedere. Se hai bisogno di aiuto per trovare il tuo indirizzo IP, leggi l'articolo Come trovare il tuo indirizzo IP su Linux di Archit Modi.

Un esempio di regola di port forwarding

(Seth Kenlon, CC BY-SA 4.0)

In questo esempio, sto inoltrando il traffico che raggiunge la mia rete domestica sulla porta 1234 alla porta 30000 del mio server domestico situato su 10.0.1.2.

Salva la regola per procedere.

Successivamente, devi conoscere l'indirizzo IP pubblico della tua rete domestica. Puoi ottenerlo da siti web come ifconfig.me o icanhazip.com. Apri un browser su uno di questi siti o ottieni l'IP utilizzando il comando curl:

$ curl ifconfig.me
93.184.216.34

I tuoi amici ora possono unirsi al tuo server Minetest inserendo 169.169.23.49:1234 nel loro client Minetest.

Inoltro porta con firewall

A volte gli amministratori di sistema devono inoltrare le porte per il traffico che raggiunge un server. Ad esempio, potresti voler accettare il traffico verso la porta 80 ma presentare all'utente un servizio in esecuzione sulla porta 8065. Senza il port forwarding, i tuoi utenti dovrebbero ricordarsi di aggiungere una porta specifica alla fine dell'URL che inseriscono nel loro browser , ad esempio example.com:8065.  La maggior parte degli utenti non è abituata a pensare alle porte, quindi intercettare una chiamata alla porta Web comune 80 e reindirizzarla a quella oscura su cui è in esecuzione l'app Web è una grande comodità per i tuoi utenti.

Puoi inoltrare il traffico su un server utilizzando firewall-cmd, il comando front-end al demone firewalld.

Innanzitutto, imposta le porte e i protocolli che desideri inoltrare:

$ sudo firewall-cmd \
--add-forward-port \
port=80:proto=tcp:toport=8065

Per rendere permanente la modifica, utilizza l'opzione --runtime-to-permanent:

$ sudo firewall-cmd --runtime-to-permanent

Inoltro di rete

Nelle reti esistono altri tipi di inoltro oltre al port forwarding. Ad esempio, sia l'inoltro IP che il proxy sono forme di inoltro. Man mano che acquisisci familiarità con il modo in cui le informazioni di rete vengono elaborate durante l'instradamento, puoi provare diversi tipi di inoltro (e guardarlo con tcpdump o simili) per vedere cosa funziona meglio per la tua configurazione.

Articoli correlati: