"IP forwarding" è sinonimo di "routing". Si chiama "inoltro IP del kernel" perché è una caratteristica del kernel di Linux.
Un router ha più interfacce di rete. Se il traffico arriva su un'interfaccia che corrisponde a una sottorete di un'altra interfaccia di rete, un router inoltra tale traffico all'altra interfaccia di rete.
Quindi, supponiamo che tu abbia due NIC, uno (NIC 1) è all'indirizzo 192.168.2.1/24 e l'altro (NIC 2) è 192.168.3.1/24. Se l'inoltro è abilitato e un pacchetto arriva su NIC 1 con un "indirizzo di destinazione" di 192.168.3.8, il router invierà nuovamente quel pacchetto fuori dalla NIC 2.
È normale che i router che fungono da gateway per Internet dispongano di un percorso predefinito in base al quale tutto il traffico che non corrisponde a nessun NIC passerà attraverso il NIC del percorso predefinito. Quindi, nell'esempio precedente, se disponi di una connessione Internet su NIC 2, devi impostare NIC 2 come percorso predefinito e quindi tutto il traffico in arrivo da NIC 1 che non è destinato a qualcosa su 192.168.2.0/24 andrà attraverso NIC 2. Si spera che ci siano altri router oltre NIC 2 che possono instradarlo ulteriormente (nel caso di Internet, l'hop successivo sarebbe il router del tuo ISP, e quindi il router upstream del provider, ecc.)
Abilitazione ip_forward
dice al tuo sistema Linux di farlo. Affinché sia significativo, sono necessarie due interfacce di rete (2 o più schede NIC cablate, schede o chipset Wifi, collegamenti PPP su un modem 56k o seriale, ecc.).
Quando si esegue il routing, la sicurezza è importante ed è qui che il filtro dei pacchetti di Linux, iptables
, viene coinvolto. Quindi avrai bisogno di un iptables
configurazione coerente con le tue esigenze.
Tieni presente che l'abilitazione dell'inoltro con iptables
disabilitato e/o senza tenere conto del firewall e della sicurezza potrebbe lasciarti esposto a vulnerabilità se una delle NIC si trova di fronte a Internet o a una sottorete su cui non hai il controllo.
Se abilitato, "IP forwarding" consente a una macchina Linux di ricevere i pacchetti in arrivo e di inoltrarli. Una macchina Linux che agisce come un host ordinario non avrebbe bisogno di abilitare l'inoltro IP, perché genera e riceve solo traffico IP per i propri scopi (ovvero, gli scopi del suo utente).
Tuttavia, ci sono casi in cui l'inoltro IP è utile:1. Vogliamo che la nostra macchina funga da router, ricevendo pacchetti da altri host e indirizzandoli verso la loro destinazione. Siamo cattivi e vogliamo impersonare un'altra macchina in un cosiddetto "attacco man-in-the-middle". In questo caso vogliamo intercettare e vedere tutto il traffico diretto alla vittima, ma vogliamo anche inoltrare questo traffico a lei, in modo che non "senta" la nostra presenza.