Comment faire en sorte qu'un pc agisse comme un routeur sur un port

0

J'ai un serveur Linux dans mon laboratoire (appelé ci-après pc1) et un ordinateur Windows pc2 sur lequel un serveur de jeux est exécuté. Mais comme il s’agit d’un réseau privé et que le seul ordinateur auquel Internet peut accéder est le pc1. Mais je veux que le serveur de jeu sur pc2 soit vu par l’extérieur d’Internet. Mais je n'ai aucune permission d'accès au routeur de notre laboratoire. Donc, je veux que le pc1 agisse comme une sorte de routeur qui transfère pc1: port1 à pc2: port2 et inversement. Et ensuite, la requête extérieure à Internet peut accéder à pc2: port2 et la réponse à partir de pc2 peut également atteindre l'extérieur. Existe-t-il une méthode pour y parvenir?

Fat Cat
la source
1
Si vous ne pouvez pas accéder au routeur actuel, comment allez-vous le faire transférer depuis le routeur: port1 à pc1: port1?
Paul

Réponses:

1

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
MariusMatutiae
la source