Chiamiamo eth0 l'interfaccia (IF) su cui pc1 è collegato al router e eth1 l'IF su cui pc1 è collegato a pc2. Sono necessari questi comandi, emessi come sudo, su pc1:
service network-manager stop
ifconfig eth0 down
ifconfig eth0 up
dhclient eth0
ifconfig eth1 down
ifconfig eth1 192.168.27.1 up
route add default gw The_IP_Addres_of_Your_Router
route add -net 192.168.27.0/24 dev eth1
echo nameserver 8.8.8.8 >> /etc/resolv.conf
echo nameserver 8.8.4.4 >> /etc/resolv.conf
echo 1 >/proc/sys/net/ipv4/ip_forward
iptables --table nat --append POSTROUTING --out-interface eth0 -j MASQUERADE
iptables --append FORWARD --in-interface eth1 -j ACCEPT
Sul computer Windows, dovrai configurare un IP statico nell'intervallo 192.168.27.0/24, ad esempio 192.168.27.2, e impostare 192.168.27.1 come gateway predefinito.
Funziona su sistemi simili a Debian. Se hai un'altra distribuzione dovrai adattarla alle tue esigenze. Ad esempio, su Systemd-distos (Arch-Linux, Fedora, SuSE 19 ..), il primo comando è systemctl stop network-manager
).
Il primo comando disabilita il gestore della rete, che ostacola la maggior parte delle operazioni personalizzate. I seguenti 3 comandi collegano pc1 al router e gli altri comandi 5-6 collegano pc1 a pc2. Quindi i comandi 7-8 impostano la tabella di routing, i comandi 9-10 impostano DNS, il comando 11 abilita l'inoltro Ipv4 nel kernel e i comandi 12-13 impostano le regole per iptables per agire come un forwarder NAT e accettare connessioni da PC2.
Questo può essere facilmente scritto.
Se si desidera consentire la comunicazione solo su determinate porte, sostituire
iptables --append FORWARD --in-interface eth1 -j ACCEPT
con
iptables --append FORWARD --in-interface eth1 -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
iptables --append FORWARD --in-interface eth1 -p Protocol_To_Be_Allowed --sport Port_To_Be_Forwarded -j ACCEPT
iptables --append FORWARD --in-interface eth1 -j DROP