[Résolu] Problème réseau avec iptables, route et virtualbox

Problème réseau avec iptables, route et virtualbox [Résolu] - réseaux et sécurité - Linux et OS Alternatifs

Marsh Posté le 15-08-2013 à 18:29:48    

Bonjour,
 
Je suis plutôt débutant dans tout ce qui est Linux et sa couche réseau- Raison pour laquelle je poste ici, dans l'espoir que quelqu'un puisse m'aider.
Sachez tout d'abord que j'ai recherché de nombreux articles sur Internet pour essayer de trouver la solution seul. Je viens pas ici les mains vides.
 
J'ai loué un Linux Ubuntu (10.04 LTS). C'est une version DESKTOP, j'utilise X2go pour me connecter à distance. Il est, donc bien évidemment, relié à Internet.
 
La carte réseau locale d'Ubuntu s'appelle eth0, voici sa configuration IP statique;
Vitesse : 1000 Mb/s
Pilote : ATL1E
Sécurité : Aucun
IPv4 : 192.168.1.240
IPv6 : Désactivé
Masque de sous-réseau : 255.255.255.0
Passerelle : 192.168.1.1
DNS 1 : 192.168.1.1
 
J'ai activé le reroutage IPv4 dans /etc/sysctl.conf (net.ipv4.ip_forward = 1)
J'ai activé le reroutage avec la commande sysctl -p
 
J'ai installé iptables et VirtualBox.
 
J'ai appliqué les différentes modifications apportées au noyau par iptables et Virtualbox avec la commande update-initramfs -u
 
Après tout ça, j'ai redémarré le système distant puis je me suis employé installer Windows XP SP3 dans une machine virtuelle, où va tourner le logiciel serveur qui m'intéresse.
 
Après l'installation, j'ai procédé aux modifications suivantes sur la carte réseau de la machine virtuelle;
 
Type de réseau : Réseau privé hôte (vboxnet0).
Mode de promiscuité : Tout autoriser
 
Puis les paramètres suivants ont étés appliqués à la carte réseau dans Windows;
 
Type d'adresse : Attribution auto. par serveur DHCP
Adresse IP : 192.168.56.101
Masque de sous-réseau : 255.255.255.0
Serveur DHCP : 192.168.56.100
Serveur DNS : Aucun
 
 
Lorsque je tape la commande wget 192.168.56.101 dans le terminal Ubuntu, je télécharge bel et bien la page d'accueil du mini-site hébergé. J'en conclus que la communication entre la machine virtuelle et l'hôte est okey.
 
 
Il ne me restait plus qu'a dévier les communication entrantes et sortantes du port TCP 80 de mon Ubuntu vers ma machine virtuelle- C'est là que ça coince totalement, je ne maîtrise pas et comprends pas comment fonctionne iptables.
 
 
Je me suis basé sur les articles suivants pour m'aider ;
 
http://linux.about.com/od/commands/l/blcmdl8_route.htm
http://forum.slicehost.com/index.p [...] rt-8080/p1
http://www.croc-informatique.fr/20 [...] -iptables/
http://forum.hardware.fr/hfr/OSAlt [...] 8707_1.htm
http://www.admin6.fr/2012/03/regle [...] -iptables/
http://www.debian-fr.org/rediriger [...] 22344.html
http://itsecureadmin.com/wiki/inde [...] g_IPTables
http://blog.inforeseau.com/2010/10 [...] s-un-autre
http://web.mit.edu/rhel-doc/4/RH-D [...] t-fwd.html
http://www.yolinux.com/TUTORIALS/L [...] teway.html
 
 
Voici le contenu de mon script pour activer les redirections de ports;
 

Code :
  1. sudo iptables --flush
  2. sudo iptables --table nat --flush
  3. sudo iptables --delete-chain
  4. sudo iptables --table-nat --delete-chain
  5. sudo iptables -A INPUT -p tcp --dport 80 -j ACCEPT
  6. sudo iptables -A INPUT -p udp --dport 80 -j ACCEPT
  7. sudo iptables -A FORWARD -i vboxnet0 -j ACCEPT
  8. sudo iptables -A FORWARD -o vboxnet0 -j ACCEPT
  9. sudo iptables -t nat -A PREROUTING -j DNAT -i eth0 -p tcp --dport 80 --to 192.168.56.101:80
  10. sudo iptables -t nat -A PREROUTING -j DNAT -i eth0 -p tcp --dport 80 --to-destination 192.168.56.101:80
  11. sudo iptables -t nat -A POSTROUTING -j MASQUERADE -o eht0 -p tcp --dport 80 -d 192.168.56.101


 
 
Malgré ces commandes, je n'ai jamais été en mesure de contacter le serveur web depuis l'extérieur. Je précise néanmoins que les ports sont ouverts dans le modem.
 
Rappel :  
• 192.168.1.1 = Passerelle Internet de la machine hôte
• 192.168.1.1 = Serveur DNS de la machine hôte
• 192.168.1.240 = Machine hôte qui héberge VirtualBOX
• 192.168.56.101 = Machine virtuelle Windows XP fonctionnant sous VirtualBOX
• 192.168.56.100 = Serveur DHCP machine virtuelle Windows XP
• 255.255.255.0 = Masque de sous-réseau de l'hôte ET de la machine virtuelle
• 213.3.6.241 = Adresse IP publique (Internet) de ma machine hôte.
 
 
Si quelqu'un pouvait m'aider, je lui en serait très reconnaissant.
Cordialement.  
 
 
 
PS: Ubuntu Desktop était une solution quasi-gratuite contrairement à un hébergement Windows Server 2008 R2 où il faut payer la licence. N'ayant pas trop de moyens pour le moment, j'ai donc décidé de mettre de coté Windows où j'aurais facilement réglé cette question seul...


Message édité par silverangel958 le 21-08-2013 à 11:33:02
Reply

Marsh Posté le 15-08-2013 à 18:29:48   

Reply

Marsh Posté le 16-08-2013 à 15:05:33    

Précisions sur une réponse que j'ai eue sur un autre forum;
 
Il n'existe pas d'équivalent Linux au logiciel que je fais tourner sous VirtualBOX, c'est un logiciel- ou plus particulièrement un programme serveur de jeu conçu par Microsoft datant des années 2000; Microsoft Freelancer.
C'est suffisamment âgé pour être partiellement incompatible Windows 7 et complètement incompatible Windows 8.  
 
Pour ce qui est du réseau de VirtualBOX, il m'est impossible de sélectionner un autre mode de réseau que le réseau privé hôte; je n'ai droit qu'à une seule adresse IP- Je ne peux donc pas capturer une autre adresse IP sur le réseau de la machine hôte.
 
Le pare-feu de Windows XP est bien connu pour ne pas bloquer grand chose... :D
Mais j'ai tout de même désactivé le pare-feu puis son service supprimé (sc delete MpsSvc). Il en est de même pour de nombreux services comme le Centre de sécurité, Registre à distance, Avertissements, Audio Windows, Terminal Server, Spooler d'impression, Thèmes, etc............
Mon Windows est vraiment lite. Moins de 100Mb de RAM en fin de chargement- De plus, ce n'est pas un problème de droit d'accès aux fichier; le Windows est installé sur un VDD de 30 Gb formaté en FAT32. Il n'y a pas de gestion de droits d'accès aux fichiers.
 
Mon objectif est de ponter le port UDP et TCP 2302 ainsi que le port TCP 80 et 8080 de la machine virtuelle sur la machine hôte. Comme ça, si je contacte le serveur (Machine hôte) depuis l'extérieur, je tombe en fait sur la machine virtuelle.
 
Qui, soit-dit en passant, j'ai réussi à faire durant l'espace d'un instant!... Le problème c'est que je n'ai pas réussi à le reproduire après le redémarrage de la machine hôte (iptables est réinitialisé lors du redémarrage de la machine). Même malgré mes tentatives de récupération des milliers de commandes que j'ai testées via le fichier .bash_history, impossible de réactiver ce pontage.
 
À mon avis, c'est bel et bien mon script iptables qui est foireux.


Message édité par silverangel958 le 16-08-2013 à 15:59:39
Reply

Marsh Posté le 21-08-2013 à 11:32:45    

J'ai obtenu réponse et informations sur un autre forum. Je poste les informations à titre d'informations pour une éventuelle personne qui serait confrontée au même problème;
 
 
1) iptables, en plus d'être extrêmement compliqué à configurer, ne sert absolument rien dans ce cas de figure.
 
2) Pour «natter» un port de la machine virtuelle vers la machine hôte, ces trois commandes, tapées DANS l'ORDRE, dans un terminal suffisent;
 
VBoxManage setextradata "Nom de votre VM" "VBoxInternal/Devices/Interface utilisée (e1000 ou pcnet)/0/LUN#0/Config/Nom_du_service/Protocol" TCP ou UDP
VBoxManage setextradata "Nom de votre VM" "VBoxInternal/Devices/Interface utilisée (e1000 ou pcnet)/0/LUN#0/Config/Nom_du_service/HostPort" Port d'accès sur l'hôte
VBoxManage setextradata "Nom de votre VM" "VBoxInternal/Devices/Interface utilisée (e1000 ou pcnet)/0/LUN#0/Config/Nom_du_service/GuestPort" Port d'accès sur la machine virtuelle
 
Exemple;

Code :
  1. VBoxManage setextradata "windowsxp-srv" "VBoxInternal/Devices/pcnet/0/LUN#0/Config/Apache/Protocol" TCP
  2. VBoxManage setextradata "windowsxp-srv" "VBoxInternal/Devices/pcnet/0/LUN#0/Config/Apache/HostPort" 8001
  3. VBoxManage setextradata "windowsxp-srv" "VBoxInternal/Devices/pcnet/0/LUN#0/Config/Apache/GuestPort" 80


 
3) Il semblerait (et c'était la cause principale de mon problème car je n'étais pas au courant et qu'il n'y a aucune documentation sur ce problème...) que les ports classiques comme 123, 80, 445, 143, 25, etc... ne peuvent pas êtres utilisés sur la machine hôte... Même s'ils sont libres! (peut-être pour des raisons de sécurité?) Vous devez donc, par exemple, «natter» le port machine virtuelle 80 sur le port 8001 de la machine hôte via les commandes indiquées précédemment puis, dans votre routeur, «natter» le port d'entrée 80 sur le port 8001 de la machine hôte!
 
4) Il semblerait, encore une fois, que si la machine virtuelle est en activité ou même si elle est arrêtée mais que la fenêtre principale de VirtualBOX est ouverte, les commandes que vous tapez dans le terminal n'auront aucun effet et ne seront pas conservée lors que vous quitterez VirtualBox. Veillez donc à éteindre la machine virtuelle et quitter complètement virtualbox avant de taper les trois commandes pour «natter» un port.
 
 
Voili-voilou.
Sujet résolu.


Message édité par silverangel958 le 21-08-2013 à 11:34:06
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed