Verschil tussen VPS, VM en VPC uitgelegd
Begrijp het verschil tussen een VM, VPS en VPC. Een VM is de technologie, een VPS is het gehuurde product en een VPC is het netwerk. Lees wat u precies nodig heeft.
VPS, VM en VPC in één alinea
Een VM (virtual machine) is een computer die uit software bestaat: een hypervisor splitst één fysieke server in meerdere onafhankelijke machines, waarbij elk een eigen kernel draait. Een VPS (virtual private server) is een server die als product aan u wordt verhuurd, inclusief besturingssysteem, meestal root-toegang en een maandelijkse prijs. De meeste VPS-abonnementen zijn virtual machines, maar sommige aanbieders verkopen onder dezelfde naam containers die de kernel van de host delen. Een VPC (virtual private cloud) is helemaal geen server. Het is een privénetwerk dat u definieert binnen een cloudaccount, waarin u vervolgens resources plaatst. VM is de gebruikte technologie. VPS is het product. VPC is het netwerk rondom het product.
Twee van deze termen beschrijven een machine. De derde beschrijft een netwerk. Bijna alle verwarring komt voort uit dit verschil, omdat mensen ze vergelijken alsof het drie producten in hetzelfde schap zijn.
Wat een VM is
Een hypervisor is de laag die zich voordoet als hardware. Deze wijst aan elke gast-VM een virtuele CPU, een blok geheugen, een virtuele schijf en een virtuele netwerkkaart toe, en zorgt er vervolgens voor dat de gasten elkaar niet kunnen zien. KVM, Xen, Hyper-V en VMware ESXi zijn de gangbare opties op servers. Moderne hypervisors leunen op virtualisatie-extensies van de CPU (Intel VT-x, AMD-V), waardoor gast-instructies op de fysieke CPU worden uitgevoerd met een snelheid die dicht bij de native snelheid ligt, in plaats van dat deze worden geïnterpreteerd.
Het onderdeel dat voor een systeembeheerder van belang is, is de kernel. Een VM start zijn eigen kernel op, dus u kiest de distributie, u laadt kernelmodules en u stelt sysctl-waarden in die alleen op uw systeem van toepassing zijn. Dit verschilt van een container (LXC, Docker), die de kernel van de host deelt en alleen een eigen weergave van processen en bestanden krijgt.
U kunt het antwoord op elke Linux-machine met één commando achterhalen.
systemd-detect-virtkvm betekent dat u zich in een virtuele machine op een KVM-hypervisor bevindt. lxc of openvz betekent dat u zich in een container op de kernel van iemand anders bevindt. none betekent dat er geen ondersteunde virtualisatie is gedetecteerd. Als het commando ontbreekt, toont lscpu | grep -i hypervisor hypervisor-informatie, maar identificeert het geen containers.
Wat een VPS is
Een VPS is een commerciële verpakking rondom een geïsoleerde server, meestal een VM. De onderliggende technologie is virtualisatie, en de term "VPS" voegt de aspecten toe die het verkoopbaar maken: een OS-image die u opnieuw kunt installeren, een IP-adres, een bandbreedtelimiet, een configuratiescherm, een maandelijkse prijs en een partij die u kunt mailen wanneer de host uitvalt. "Private" dient om het te onderscheiden van shared hosting, waarbij honderden websites één besturingssysteem en één PHP-configuratie delen.
Omdat VPS een productnaam is en geen technische term, betekent het niet altijd een volledige VM. Sommige budgetabonnementen verkopen containers onder dezelfde noemer, en OpenVZ, een containerplatform dat hier vaak achter zit, omschrijft zijn containers als "ook bekend als virtual private servers". Het verschil wordt duidelijk zodra u de kernel nodig hebt. Bij een op containers gebaseerd abonnement is de kernel van de host en mag u deze niet wijzigen. sudo modprobe wireguard faalt als het de module niet kan vinden in de map met modules van de container, zelfs als de host deze al heeft geladen; het laden van een ontbrekende module vereist bovendien toestemming om de host-kernel aan te passen. Als de host-kernel geen WireGuard-ondersteuning heeft, mislukt het aanmaken van de interface (ip link add dev wg0 type wireguard) met RTNETLINK answers: Operation not supported. wg-quick valt dan terug op een userspace-implementatie (standaard wireguard-go) indien deze is geïnstalleerd, waarbij de melding "Missing WireGuard kernel module. Falling back to slow userspace implementation." wordt getoond. Die fallback vereist nog steeds dat de container het TUN-apparaat mag gebruiken, wat niet elke host toestaat, en zonder een userspace-binary stopt wg-quick bij de foutmelding. Bij een KVM-abonnement is de kernel van u: u installeert WireGuard, laadt de module als deze nog niet geladen is, configureert de interface en de tunnel komt tot stand. Als u van plan bent om Docker, een VPN, aangepaste kernels of eigen virtuele machines binnen de server te draaien, controleer dan het virtualisatietype voordat u tot aanschaf overgaat. Het draaien van virtuele machines binnen een VPS vereist KVM met nested virtualisation ingeschakeld op de host, wat slechts bij een beperkt aantal abonnementen mogelijk is.
Wat een VPC is
Een VPC is een softwaregedefinieerd netwerk binnen een cloudprovider. Bij de meeste cloudproviders geeft u een adresbereik op in CIDR-notatie, zoals 10.0.0.0/16, en verdeelt u dit vervolgens in subnetten (Google Cloud slaat het netwerkbrede bereik over en geeft elk regionaal subnet een eigen bereik). U koppelt routetabellen aan het netwerk en plaatst firewallregels (security groups) voor de resources die zich erin bevinden. Een VPC heeft geen CPU, geen geheugen en geen schijf. Er is niets om op in te loggen. Als u alle servers in een VPC verwijdert, blijft de VPC leeg achter; dit is doorgaans kosteloos.
Het voordeel van een VPC is private adressering. Twee servers in dezelfde VPC communiceren via adressen zoals 10.0.1.15 over het interne netwerk van de provider. Hierdoor raakt het verkeer nooit het publieke internet aan en wordt het niet gefactureerd als internet-egress. Een database kan vervolgens alleen op zijn private adres luisteren, waardoor er geen enkele poort aan de buitenwereld wordt blootgesteld.
ip -4 addr showEen adres binnen 10.0.0.0/8, 172.16.0.0/12 of 192.168.0.0/16 is privaat. Een publiek adres alleen maakt een server nog niet bereikbaar vanaf het internet: routering en firewallregels moeten toegang ook expliciet toestaan.
Maakt een VPC mijn server privé?
Nee, en dit is het meest kostbare misverstand van de drie termen. Een VPC beheert routering en adressering. Het bepaalt niet of het internet een machine kan bereiken. Als een instance een publiek IP-adres heeft, het subnet naar het internet routeert en de beveiligingsregels poort 22 vanaf 0.0.0.0/0 toestaan, dan is deze net zo blootgesteld als elke andere server, met of zonder VPC. In een standaard VPC is die route naar het internet al aanwezig. De isolatie die u krijgt van een VPC is de mogelijkheid om een resource helemaal geen publiek adres te geven, aangevuld met regels die bepalen welke subnets met elkaar mogen communiceren.
De drie termen beloven ook verschillende soorten isolatie. Een VM isoleert rekenkracht: de hypervisor scheidt CPU-tijd en geheugen, zodat een andere gast uw RAM niet kan lezen. Die isolatie is zwakker voor schijf en netwerk, waar een drukke buur op dezelfde host u nog steeds kan vertragen. Een container-gebaseerde VPS deelt één kernel, waardoor een bug op kernelniveau een gedeeld risico is. Een VPC isoleert helemaal niets wat betreft rekenkracht. Het vormt enkel het netwerk.
Het mentale model voor prijsstelling
Een VPS wordt meestal verkocht voor een vast maandelijks bedrag voor een vaste machine. U kent de factuur voordat de maand begint, en de schijfruimte en de datalimiet zijn hierin inbegrepen. Die voorspelbaarheid is de belangrijkste reden waarom mensen voor een kleine werklast kiezen voor een VPS in plaats van een cloud-instantie.
Een cloud-VM wordt afgerekend op basis van verbruik. De instantie wordt per uur of per seconde gefactureerd, en de schijf, snapshots, load balancer en uitgaand verkeer worden afzonderlijk in rekening gebracht. De VPC zelf is normaal gesproken gratis, maar de beheerde onderdelen die eraan gekoppeld zijn niet: een NAT gateway waarmee privé-instanties het internet kunnen bereiken, wordt per uur gefactureerd, en hoe het verkeer daarvan wordt belast, hangt af van de provider. AWS brengt kosten in rekening voor elke gigabyte die de NAT gateway verwerkt, terwijl OVHcloud stelt dat hun Public Cloud Gateway per uur en per gebruik wordt belast, inclusief verkeer. Bij AWS wordt verkeer dat tussen beschikbaarheidszones reist ook gefactureerd, terwijl Azure geen kosten in rekening brengt voor verkeer tussen zijn zones in dezelfde regio. Per 27 oktober 2026 stelt de AWS VPC-handleiding dat u in elke regio een standaard-VPC heeft, terwijl de AWS VPC FAQ vermeldt dat accounts die vóór 18 maart 2013 zijn aangemaakt, standaard-VPC's kunnen gebruiken in ingeschakelde regio's waar zij voorheen geen EC2-instanties hebben opgestart of ELB-, RDS-, ElastiCache- of Redshift-resources hebben ingericht. Een verwijderde standaard-VPC kan opnieuw worden aangemaakt, maar niet worden hersteld. Google Cloud geeft elk nieuw project een standaardnetwerk, tenzij een beheerder dit uitschakelt, en Azure maakt een virtueel netwerk aan naast een nieuwe VM als u er niet zelf een kiest. Hoe dan ook bevindt uw cloud-VM zich in een van deze netwerken, of u er nu om heeft gevraagd of niet.
Welke heeft u daadwerkelijk nodig
- Eén server voor een website, een applicatie, een gameserver of een VPN: een VPS. De eerste tien minuten op een nieuwe VPS zijn belangrijker dan de naam van het abonnement.
- Meerdere servers die elkaar moeten bereiken via privéadressen: een VPC, of de privénetwerkfunctie die uw VPS-provider onder een andere naam aanbiedt.
- Een werklast die moet blijven draaien als een heel datacenter uitvalt: een cloud met meerdere zones, wat neerkomt op VM's binnen een VPC.
- Volledige controle over de kernel, of uw eigen hypervisor daarbovenop: een KVM-gebaseerde VPS (met nested virtualisation ingeschakeld als u de hypervisor wilt gebruiken) of een dedicated server. Controleer het schijftype achter het abonnement terwijl u vergelijkt.
De meeste projecten met één server hebben nooit een VPC nodig. De privénetwerkfunctie die bij een VPS is inbegrepen, vervult dezelfde taak voor een handvol machines.
FAQ
Is een VPS hetzelfde als een VM?
Meestal wel, maar niet altijd. Elke VPS die is gebouwd op KVM, Xen of VMware is een virtuele machine, maar niet elke virtuele machine is een VPS; een VM die op uw laptop onder VirtualBox draait, is immers geen commercieel product. Niet elke VPS is bovendien een VM: abonnementen gebaseerd op OpenVZ of LXC zijn containers die de kernel van de host delen, en OpenVZ noemt zijn containers zelf ook virtual private servers. Controleer dit bij systemd-detect-virt voordat u afhankelijk bent van kerneltoegang.
Kan ik een VPS in een VPC plaatsen?
Doorgaans niet, omdat een VPC een constructie is van één specifieke cloudprovider; AWS ondersteunt daarnaast het delen van subnets tussen accounts binnen dezelfde organisatie. Een VPS van een onafhankelijke provider bevindt zich op het netwerk van die provider. Als u private verbindingen tussen beide nodig heeft, bouwt u in plaats daarvan een VPN-tunnel, waarna de VPS via die weg de private subnets kan bereiken.
Waarom is mijn cloudrekening hoger dan die van een vergelijkbare VPS?
De prijs van de instance is slechts een deel van het totaal. Opslag, snapshots, uitgaand verkeer, load balancers en NAT gateways zijn afzonderlijke posten in een cloudomgeving met verbruiksafhankelijke facturering; een NAT gateway alleen kan al meer per maand kosten dan een kleine VPS. Een VPS met een vaste prijs combineert de schijfruimte en een datalimiet in één bedrag, waardoor dezelfde workload daar vaak goedkoper uitvalt.
Hoe controleer ik of mijn server echte kerneltoegang heeft?
Voer systemd-detect-virt uit en lees het resultaat. kvm, xen of vmware (of amazon op nieuwere EC2-instances) betekenen dat u over een eigen kernel beschikt en dat modprobe modules daarin kan laden. lxc, lxc-libvirt of openvz betekenen dat u de kernel van de host deelt; het laden van modules vereist dan rechten op de host-kernel, terwijl instellingen in namespaces onder /proc/sys, inclusief netwerkinstellingen, configureerbaar blijven voor zover de host dit toestaat. Een tweede bevestiging is uname -r, dat bij een container-abonnement vaak een kernelversie rapporteert die uw distributie nooit heeft uitgebracht.