Lors de la création d'une machine virtuelle (VM), vous disposez de nombreuses options concernant la mise en réseau. Vous pouvez configurer votre VM pour qu'elle agisse simplement comme un autre ordinateur sur votre réseau, la sécuriser derrière un routeur interne et un pare-feu, ou même simuler un réseau réel entièrement personnalisé.
Ce guide couvrira spécifiquement les options de mise en réseau de VirtualBox, mais les mêmes concepts s'appliqueront également à d'autres programmes de virtualisation.
Traduction d'adresses réseau (NAT)
Ce type de réseau est la valeur par défaut pour les nouvelles instances de VirtualBox et est assez simple à comprendre. Il permet simplement au système d'exploitation invité d'accéder à Internet, de la même manière que votre ordinateur y accède derrière votre routeur domestique.
Par exemple, votre ordinateur peut avoir une adresse IP 192.168.1.5
sur votre réseau domestique. Votre routeur aura une adresse IP attribuée par votre FAI, telle que 73.45.123.123
. Lorsque vous vous connectez à un service externe, votre routeur traduit votre adresse IP interne en IP externe publique avec laquelle vous communiquez. (Techniquement, il utilise une extension de NAT, appelée Traduction d'adresse de port, mais le concept est le même.)
D'une certaine manière, c'est exactement comme mettre vos VM derrière un routeur supplémentaire. Les paquets envoyés à partir des VM passeront par deux traductions: tout d'abord, pour traduire l'adresse IP privée de la VM en adresse IP privée de l'hôte, puis pour traduire l'adresse privée de l'hôte en adresse publique de votre passerelle. En fin de compte, cela active la connectivité Internet pour la machine virtuelle. À la connaissance de la VM, c'est exactement comme un appareil sur un réseau domestique.
Le mode NAT ne donne pas à l'hôte (ou à toute autre machine locale) l'accès aux services s'exécutant sur une VM, de la même manière qu'un service s'exécutant sur votre réseau local n'est pas accessible publiquement depuis Internet ouvert. Si vous souhaitez qu’une application soit accessible, vous devez transférer les ports sur lesquels elle s’exécute et les lier aux ports locaux de l’hôte. C'est à la fois une bonne et une mauvaise chose. D'une part, c'est beaucoup plus sûr de cette façon, car même les appareils locaux ne peuvent pas accéder aux services de la VM, mais l'ouverture manuelle des ports n'est peut-être pas ce que vous voulez. Si cela semble être un problème, le mode Bridged est une solution potentielle. Vous pouvez également exposer les services invités à l'openinternet en redirigeant le port de votre routeur pour transférer un port à la machine hôte, ce qui transmettra la connexion à l'invité.
Alors que toutes les autres directions de communication sont possibles, le mode NAT ne donne pas d'accès d'invité à hôte.
Vous devez choisir NAT si vous avez besoin d'un accès Internet de base, mais que vous souhaitez tout de même garder la machine virtuelle séparée des autres machines de votre réseau.
Réseau NAT
En mode NAT, le routeur interne est configuré pour chaque machine virtuelle. Une machine virtuelle ne peut pas accéder aux services exécutés sur une autre machine virtuelle. En fait, chaque machine peut avoir exactement la même adresse IP privée, car tout est traduit à la fin.
Le mode réseau NAT suit le même principe que NAT, mais au lieu de séparer logiquement chaque VM en son propre réseau, le réseau NAT utilise un réseau pour toutes les VM configurées sur le même réseau NAT (bien que rien ne vous empêche d'avoir plusieurs réseaux séparés).
Cela permet un accès invité à invité via un commutateur virtuel, tout comme la façon dont un ordinateur branché sur la première prise Ethernet de votre routeur peut accéder à une machine branchée sur la deuxième prise. Sinon, ce mode fonctionne exactement de la même manière que NAT; L'accès d'hôte à invité ne peut être effectué que via la redirection de port (cependant, cette fois, vous devrez choisir à quelle VM transférer).
La seule différence majeure est que, comme il existe plusieurs machines virtuelles dans un même réseau, chaque machine virtuelle doit avoir une adresse différente. Cela nécessite que l'hôte exécute un serveur DHCP (encore une fois, tout comme vous le trouverez dans votre routeur domestique), qui attribue dynamiquement des adresses IP internes à chaque VM sur le réseau. Cela peut être désactivé et configuré manuellement si vous le souhaitez.
Vous devez choisir le réseau NAT sur NAT de base si vous avez besoin d'un accès invité à invité.
Ponté
Le mode ponté est unique parmi les modes réseau, car c'est le seul mode qui n'isole pas les machines virtuelles d'une manière ou d'une autre. En mode ponté, votre VM communique directement avec les services externes, à l'aide de l'interface réseau de l'hôte.
Cela signifie que les VM apparaîtront sur votre routeur comme une adresse IP entièrement distincte, bien que routées vers la même machine. Cela vous permet d'héberger des services sur les VM et d'y accéder sur votre réseau local à l'aide d'une adresse et numéro de port, ce qui rend la mise en réseau pontée très flexible.
Ce mode de mise en réseau est utilisé par de nombreux fournisseurs VPS, comme AWS, car il leur permet de partitionner un grand serveur puissant en plusieurs serveurs plus petits qui peuvent être vendus aux clients. Chaque machine aura sa propre adresse IP unique sur le réseau. Cependant, pour des services comme AWS, de nombreuses protections et systèmes supplémentaires sont mis en place pour vous empêcher d'accéder aux machines virtuelles d'autres clients, et ses ordres de grandeur sont plus compliqués que cela.
Bien que l'hôte soit utilisé pour acheminer les paquets vers le serveur, il n'interfère en aucune façon avec eux, faisant apparaître le système d'exploitation invité comme un simple ordinateur sur votre réseau. Cependant, comme rien n'isole la VM du réseau extérieur, il n'y a pas de pare-feu ou de protection inhérent en place autre que le pare-feu de votre passerelle, ni aucun pare-feu configuré manuellement sur le système d'exploitation invité.
La plupart des serveurs seront livrés avec de nombreux ports Ethernet et plusieurs interfaces physiques. Étant donné que le mode ponté relie simplement l'une de ces interfaces physiques, il peut être utilisé pour exécuter des machines virtuelles sur des réseaux entièrement séparés, en fonction de votre câblage réel.
Vous devez choisir la mise en réseau pontée si vous souhaitez un accès complet et sans entrave. Également utile si vous souhaitez simplement exécuter plusieurs serveurs «virtuels» en utilisant le même matériel, comme le ferait un fournisseur VPS.
Adaptateur hôte uniquement
En mode Host-Only, les machines virtuelles n'ont aucun moyen d'accéder à Internet. Cependant, la communication d'hôte à invité et d'invité à hôte est toujours possible et constitue la principale raison d'utiliser ce mode.
Dans ce mode, un serveur DHCP est généralement exécuté pour donner des adresses IP aux invités, et la communication d'invité à invité est également facile en utilisant le réseau Internet.
Vous devez choisir le mode Host-Only si vous avez besoin de beaucoup de communication bidirectionnelle entre l'hôte et l'invité mais que vous ne voulez pas d'accès Internet sur l'hôte. Si vous avez besoin d'une communication bidirectionnelle mais que vous avez besoin d'un accès externe, vous pouvez obtenir le même effet avec le mode ponté, qui permet un accès complet.
Réseau interne (simulé)
Le réseau interne est utilisé pour modéliser des réseaux réels. Hors de la boîte, il est entièrement séparé du monde extérieur; plusieurs invités déployés dans le même réseau peuvent accéder les uns aux autres, mais pas à l'hôte, ni à Internet, ou vice versa. Ceci est utile en soi en étant capable de simuler des réseaux qui sont entièrement déconnectés du monde, mais le réseau interne peut être configuré pour donner un accès Internet aux machines privées.
En créant une nouvelle machine virtuelle et en la configurant en tant que routeur (comme avec iptables
), vous pouvez dire à toutes les autres machines du réseau virtuel d'utiliser la nouvelle VM du routeur comme passerelle par défaut. Pour accéder réellement aux réseaux externes, vous devez créer une interface réseau séparée en utilisant un mode connecté à Internet (NAT, Bridged, etc.) et la connecter au routeur. Techniquement, le réseau interne en lui-même n'est pas ce qui donne accès à Internet, mais VM1 et VM2 dans cet exemple ne disposeront d'aucune interface réseau permettant un accès direct à Internet.
D'une certaine manière, cette configuration n'est pas très différente du mode réseau NAT, mais tout est géré manuellement.
Vous devez choisir Réseau interne si vous souhaitez simuler ou modéliser un réseau virtuel, ou si vous avez simplement besoin de la flexibilité de tout configurer vous-même. Le réseau interne est très utile à des fins de formation, car il permet à quiconque de configurer son propre réseau sans se rendre à Radioshack pour acheter le matériel dont il a besoin.