VPS, VM ou VPC : quelles différences ?
VM, VPS et VPC ne désignent pas la même chose : la VM est une technologie, le VPS un produit loué et le VPC un réseau privé cloud. Voici comment les distinguer.
VPS, VM et VPC en un paragraphe
Une VM (machine virtuelle) est un ordinateur constitué de logiciels : un hyperviseur divise un serveur physique en plusieurs machines indépendantes, et chacune exécute son propre kernel. Un VPS (serveur privé virtuel) est un serveur que vous louez comme un produit, avec un système d’exploitation, généralement un accès root et un tarif mensuel. La plupart des offres VPS sont des machines virtuelles, mais certains hébergeurs vendent des conteneurs qui partagent le kernel de l’hôte sous le même nom. Un VPC (cloud privé virtuel) n’est pas un serveur. Il s’agit d’un réseau privé que vous définissez dans un compte cloud et dans lequel vous placez des ressources. VM désigne la technologie habituelle. VPS désigne le produit. VPC désigne le réseau qui entoure le produit.
Deux de ces termes désignent une machine. Le troisième désigne un réseau. La quasi-totalité de la confusion vient de cette différence, car on les compare comme s’il s’agissait de trois produits posés sur la même étagère.
Ce qu’est une VM
Un hyperviseur est la couche logicielle qui simule le matériel. Il fournit à chaque guest un CPU virtuel, une portion de mémoire, un disque virtuel et une carte réseau virtuelle, puis empêche les guests de se voir entre eux. KVM, Xen, Hyper-V et VMware ESXi sont les hyperviseurs courants sur les serveurs. Les hyperviseurs modernes s’appuient sur les extensions de virtualisation du CPU (Intel VT-x, AMD-V) : les instructions du guest s’exécutent sur le CPU réel à une vitesse proche de celle du matériel, au lieu d’être interprétées.
Pour un sysadmin, le point essentiel est le kernel. Une VM démarre avec son propre kernel. Vous choisissez donc la distribution, vous chargez les modules du kernel et vous définissez des valeurs sysctl qui ne s’appliquent qu’à votre VM. C’est différent d’un conteneur (LXC, Docker), qui partage le kernel de l’hôte et dispose seulement de sa propre vue des processus et des fichiers.
Vous pouvez obtenir la réponse sur n’importe quelle machine Linux avec une seule commande.
systemd-detect-virtkvm signifie que vous êtes dans une machine virtuelle sur un hyperviseur KVM. lxc ou openvz signifie que vous êtes dans un conteneur qui utilise le kernel de quelqu’un d’autre. none signifie qu’aucune virtualisation prise en charge n’a été détectée. Si la commande est absente, lscpu | grep -i hypervisor affiche les informations sur l’hyperviseur, mais n’identifie pas les conteneurs.
Quel est le rôle d’un VPS
Un VPS est une offre commerciale basée sur un serveur isolé, le plus souvent une VM. La technologie sous-jacente est la virtualisation, et le terme « VPS » regroupe les éléments qui rendent cette offre commercialisable : une image d’OS que vous pouvez réinstaller, une adresse IP, un quota de bande passante, un panneau de contrôle, un tarif mensuel et un interlocuteur à contacter lorsque l’hôte tombe en panne. Le terme « privé » sert à le distinguer de l’hébergement mutualisé, où des centaines de sites partagent un même système d’exploitation et une même configuration PHP.
Comme VPS est un nom de produit et non un terme technique, il ne désigne pas toujours une VM complète. Certaines offres d’entrée de gamme vendent des conteneurs sous le même nom, et OpenVZ, une plateforme de conteneurs utilisée par nombre de ces offres, décrit ses conteneurs comme étant « également connus sous le nom de serveurs privés virtuels ». La différence apparaît dès que vous devez accéder au kernel. Avec une offre basée sur des conteneurs, le kernel appartient à l’hôte et vous ne pouvez pas le modifier. sudo modprobe wireguard échoue s’il ne trouve pas le module dans le répertoire des modules du conteneur, même si l’hôte l’a déjà chargé ; le chargement d’un module manquant nécessite également l’autorisation de modifier le kernel de l’hôte. Si le kernel de l’hôte ne prend pas en charge WireGuard, la création de l’interface (ip link add dev wg0 type wireguard) échoue avec RTNETLINK answers: Operation not supported. wg-quick utilise alors une implémentation en espace utilisateur (wireguard-go par défaut) si une telle implémentation est installée, et affiche « Missing WireGuard kernel module. Falling back to slow userspace implementation. » Ce repli nécessite malgré tout que le conteneur soit autorisé à utiliser le périphérique TUN, ce que tous les hébergeurs n’autorisent pas. Sans binaire en espace utilisateur, wg-quick s’arrête avec une erreur. Avec une offre KVM, le kernel vous appartient : vous installez WireGuard, chargez le module s’il ne l’est pas déjà, configurez l’interface et le tunnel s’établit. Si vous prévoyez d’exécuter Docker, un VPN, des kernels personnalisés ou vos propres machines virtuelles dans le serveur, vérifiez le type de virtualisation avant l’achat. L’exécution de machines virtuelles dans un VPS nécessite KVM avec la virtualisation imbriquée activée sur l’hôte, ce qui réduit encore le nombre d’offres disponibles.
Ce qu’est un VPC
Un VPC est un réseau défini par logiciel au sein d’un fournisseur cloud. Sur la plupart des clouds, vous lui attribuez une plage d’adresses au format CIDR, comme 10.0.0.0/16, puis vous y créez des sous-réseaux (Google Cloud ignore la plage à l’échelle du réseau et attribue sa propre plage à chaque sous-réseau régional). Vous lui associez des tables de routage et placez des règles de firewall (groupes de sécurité) devant les ressources qu’il contient. Il n’a ni CPU, ni mémoire, ni disque. Il n’y a rien auquel se connecter. Supprimer tous les serveurs d’un VPC laisse le VPC en place, vide et généralement gratuit.
Un VPC fournit un adressage privé. Deux serveurs du même VPC communiquent avec des adresses comme 10.0.1.15 sur le réseau interne du fournisseur. Le trafic ne passe donc jamais par Internet et n’est pas facturé comme trafic sortant vers Internet. Une base de données peut alors écouter uniquement sur son adresse privée. Aucun port n’est exposé au monde extérieur.
ip -4 addr showUne adresse située dans 10.0.0.0/8, 172.16.0.0/12 ou 192.168.0.0/16 est privée. Une adresse publique ne suffit pas à rendre le serveur accessible depuis Internet : le routage et les règles de firewall doivent également autoriser l’accès.
Un VPC rend-il mon serveur privé ?
Non, et c’est le malentendu le plus coûteux entre ces trois notions. Un VPC contrôle le routage et l’adressage. Il ne détermine pas si Internet peut atteindre une machine. Si une instance possède une adresse IP publique, si son sous-réseau dispose d’une route vers Internet et si les règles de sécurité autorisent le port 22 depuis 0.0.0.0/0, elle est exposée exactement comme n’importe quel autre serveur, avec ou sans VPC. Dans un VPC par défaut, cette route vers Internet est déjà en place. L’isolation fournie par un VPC consiste à pouvoir n’attribuer aucune adresse publique à une ressource, et à définir quelles sous-réseaux peuvent communiquer entre eux.
Ces trois termes désignent également des types d’isolation différents. Une VM isole le calcul : l’hyperviseur sépare le temps processeur et la mémoire, de sorte qu’un autre invité ne peut pas lire votre RAM. Cette isolation est plus limitée pour le disque et le réseau, où un voisin très sollicité sur le même hôte peut tout de même ralentir votre instance. Un VPS basé sur des conteneurs partage un même noyau ; un bug au niveau du noyau constitue donc un risque commun. Un VPC n’isole pas du tout le calcul. Il contrôle uniquement le réseau.
Le modèle mental de la tarification
Un VPS est généralement vendu à un prix mensuel fixe pour une machine donnée. Vous connaissez le montant de la facture avant le début du mois, et le disque ainsi que le quota de transfert sont inclus. Cette prévisibilité est la principale raison pour laquelle on choisit un VPS plutôt qu’une instance cloud pour une petite charge de travail.
Une VM cloud est facturée à la consommation. L’instance est facturée à l’heure ou à la seconde, tandis que le disque, les snapshots, le load balancer et le trafic sortant sont facturés séparément. Le VPC lui-même est généralement gratuit, mais les composants managés qui y sont attachés ne le sont pas : une passerelle NAT qui permet aux instances privées d’accéder à Internet est facturée à l’heure, et la facturation de son trafic dépend du fournisseur. AWS ajoute des frais pour chaque gigaoctet traité par la passerelle NAT, tandis qu’OVHcloud indique que sa Public Cloud Gateway est facturée à l’heure et à l’usage, avec le trafic inclus. Sur AWS, le trafic qui traverse des zones de disponibilité est également facturé, alors qu’Azure ne facture pas le trafic entre ses zones d’une même région. Au 27 octobre 2026, le guide AWS VPC indique que vous disposez d’un VPC par défaut dans chaque région, tandis que la FAQ AWS VPC précise que les comptes créés avant le 18 mars 2013 peuvent utiliser des VPC par défaut dans les régions activées où ils n’ont pas auparavant lancé d’instances EC2 ni provisionné de ressources ELB, RDS, ElastiCache ou Redshift. Un VPC par défaut supprimé peut être recréé, mais pas restauré. Google Cloud fournit à chaque nouveau projet un réseau par défaut, sauf si un administrateur désactive cette option, et Azure crée un réseau virtuel avec une nouvelle VM si vous ne sélectionnez pas de réseau existant. Dans tous les cas, votre VM cloud se trouve dans l’un de ces réseaux, que vous l’ayez demandé ou non.
Lequel vous faut-il réellement
- Un seul serveur pour un site web, une application, un serveur de jeu ou un VPN : un VPS. Les dix premières minutes sur un nouveau VPS comptent davantage que l’intitulé de l’offre.
- Plusieurs serveurs qui doivent communiquer entre eux via des adresses privées : un VPC, ou la fonctionnalité de réseau privé proposée par votre fournisseur de VPS sous un autre nom.
- Une charge de travail qui doit continuer à fonctionner malgré la perte d’un centre de données entier : un cloud avec plusieurs zones, ce qui implique des VM au sein d’un VPC.
- Un contrôle total du kernel, ou votre propre hyperviseur au-dessus : un VPS basé sur KVM (avec la virtualisation imbriquée activée si vous voulez utiliser l’hyperviseur) ou un serveur dédié. Vérifiez également le type de disque utilisé par l’offre pendant la comparaison.
La plupart des projets reposant sur un seul serveur n’ont jamais besoin d’un VPC. La fonctionnalité de réseau privé incluse avec un VPS couvre le même besoin pour quelques machines.
FAQ
Un VPS est-il la même chose qu’une VM ?
Généralement, mais pas toujours. Tout VPS basé sur KVM, Xen ou VMware est une machine virtuelle, mais toute machine virtuelle n’est pas un VPS, car la VM qui s’exécute sur votre ordinateur portable avec VirtualBox n’est le produit d’aucun fournisseur. Tous les VPS ne sont pas non plus des VM : les offres basées sur OpenVZ ou LXC sont des conteneurs qui partagent le kernel de l’hôte, et OpenVZ appelle lui-même ses conteneurs des serveurs privés virtuels. Vérifiez avec systemd-detect-virt avant de dépendre de l’accès au kernel.
Puis-je mettre un VPS dans un VPC ?
Généralement non, car un VPC est une construction propre à un fournisseur cloud ; AWS prend également en charge le partage de ses sous-réseaux entre des comptes d’une même organisation. Un VPS fourni par un prestataire indépendant se trouve sur le réseau de ce prestataire. Si vous avez besoin de liaisons privées entre les deux, vous devez établir un tunnel VPN entre eux ; le VPS accède ensuite aux sous-réseaux privés par ce tunnel.
Pourquoi ma facture cloud est-elle plus élevée que celle d’un VPS équivalent ?
Le prix de l’instance n’en représente qu’une partie. Le stockage, les snapshots, le trafic sortant, les load balancers et les passerelles NAT sont facturés séparément dans un cloud avec facturation à l’usage, et une passerelle NAT peut à elle seule coûter plus cher par mois qu’un petit VPS. Un VPS à prix fixe regroupe le disque et un quota de transfert dans un même montant, ce qui explique pourquoi la même charge de travail paraît souvent moins chère sur un VPS.
Comment vérifier que mon serveur dispose d’un véritable accès au kernel ?
Exécutez systemd-detect-virt et lisez la réponse. kvm, xen ou vmware (ou amazon sur les instances EC2 plus récentes) indiquent que vous disposez de votre propre kernel et que modprobe peut y charger des modules. lxc, lxc-libvirt ou openvz indiquent que vous partagez le kernel de l’hôte ; le chargement de modules nécessite les privilèges du kernel de l’hôte, tandis que les paramètres sous /proc/sys isolés par namespace, notamment les paramètres réseau, restent configurables lorsque l’hôte l’autorise. Une deuxième confirmation est fournie par uname -r, qui, sur une offre conteneurisée, affiche souvent une version de kernel que votre distribution n’a jamais publiée.