Appelons eth0 l'interface (IF) sur laquelle pc1 est relié au routeur et eth1 le IF sur lequel pc1 est liée à pc2. Vous avez besoin de ces commandes, publiées en tant que sudo, sur 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
Sur la machine Windows, vous devrez configurer une adresse IP statique dans la plage 192.168.27.0/24, par exemple 192.168.27.2, et définir 192.168.27.1 comme passerelle par défaut.
Cela fonctionne sur les systèmes de type Debian. Si vous avez une autre distribution, vous devrez l’adapter à vos besoins. Par exemple, sur Systemd-distros (Arch-Linux, Fedora, SuSE 19 ..), la première commande est systemctl stop network-manager
).
La première commande désactive networkmanager, ce qui empêche la plupart des opérations personnalisées. Les 3 commandes suivantes connectent pc1 à votre routeur et les commandes suivantes 5 à 6 connectent pc1 à pc2. Ensuite, les commandes 7 à 8 configurent la table de routage, les commandes 9 à 10 configurent DNS, la commande 11 active le transfert Ipv4 dans le noyau et les commandes 12-13 définissent les règles permettant à iptables de jouer le rôle de redirecteur NAT et d'accepter les connexions de pc2.
Cela peut être facilement scripté.
Si vous souhaitez uniquement autoriser la communication sur certains ports, remplacez
iptables --append FORWARD --in-interface eth1 -j ACCEPT
avec
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