VPS, VM e VPC: differenze e significato
VM è la tecnologia, VPS è un server in noleggio e VPC è una rete cloud privata. Confronto chiaro su kernel, accesso root, costi e uso reale.
VPS, VM e VPC in un paragrafo
Una VM (macchina virtuale) è un computer realizzato tramite software: un hypervisor suddivide un server fisico in più macchine indipendenti e ognuna esegue il proprio kernel. Un VPS (server virtuale privato) è un server fornito in noleggio come prodotto, con un sistema operativo, in genere accesso root e un prezzo mensile. La maggior parte dei piani VPS usa macchine virtuali, ma alcuni provider vendono container che condividono il kernel dell'host usando lo stesso nome. Una VPC (cloud privato virtuale) non è affatto un server. È una rete privata definita all'interno di un account cloud, nella quale si inseriscono le risorse. VM è la tecnologia normalmente utilizzata. VPS è il prodotto. VPC è la rete che circonda il prodotto.
Due di questi termini descrivono una macchina. Il terzo descrive una rete. Quasi tutta la confusione nasce da questa differenza, perché vengono confrontati come se fossero tre prodotti sullo stesso scaffale.
Cos'è una VM
Un hypervisor è il livello che simula l'hardware. Assegna a ogni guest una CPU virtuale, un blocco di memoria, un disco virtuale e una scheda di rete virtuale, isolando i guest in modo che non possano vedersi a vicenda. KVM, Xen, Hyper-V e VMware ESXi sono i più comuni sui server. Gli hypervisor moderni si basano sulle estensioni di virtualizzazione della CPU (Intel VT-x, AMD-V), quindi le istruzioni del guest vengono eseguite sulla CPU reale a una velocità vicina a quella nativa, invece di essere interpretate.
La parte rilevante per un sysadmin è il kernel. Una VM avvia il proprio kernel, quindi puoi scegliere la distribuzione, caricare i moduli del kernel e impostare valori sysctl che si applicano esclusivamente a te. Questo differisce da un container (LXC, Docker), che condivide il kernel dell'host e ottiene solo una propria vista di processi e file.
Puoi vedere la risposta su qualsiasi macchina Linux con un solo comando.
systemd-detect-virtkvm indica che sei su una macchina virtuale basata su hypervisor KVM. lxc o openvz indicano che ti trovi in un container che utilizza il kernel di qualcun altro. none indica che non è stata rilevata alcuna virtualizzazione supportata. Se il comando non è presente, lscpu | grep -i hypervisor mostra le informazioni sull'hypervisor, ma non identifica i container.
Cos'è una VPS
Una VPS è un involucro commerciale attorno a un server isolato, il più delle volte una VM. La tecnologia sottostante è la virtualizzazione e il termine "VPS" aggiunge gli elementi che la rendono commerciabile: un'immagine del sistema operativo che puoi reinstallare, un indirizzo IP, una quota di banda, un pannello di controllo, un prezzo mensile e qualcuno a cui scrivere se l'host smette di funzionare. "Private" serve a distinguerla dall'hosting condiviso, dove centinaia di siti condividono lo stesso sistema operativo e la stessa configurazione PHP.
Poiché VPS è un nome commerciale e non un termine tecnico, non significa sempre una VM completa. Alcuni piani economici vendono container sotto lo stesso nome e OpenVZ, una piattaforma di container dietro molti di essi, descrive i propri container come "noti anche come virtual private servers". La differenza emerge la prima volta che hai bisogno del kernel. In un piano basato su container, il kernel è quello dell'host e non ti è consentito modificarlo. sudo modprobe wireguard fallisce se non riesce a trovare il modulo nella directory dei moduli del container, anche se l'host lo ha già caricato; il caricamento di un modulo mancante richiede inoltre il permesso di modificare il kernel dell'host. Se il kernel dell'host non supporta WireGuard, la creazione dell'interfaccia (ip link add dev wg0 type wireguard) fallisce con RTNETLINK answers: Operation not supported. wg-quick quindi ripiega su un'implementazione in userspace (wireguard-go per impostazione predefinita), se installata, stampando "Missing WireGuard kernel module. Falling back to slow userspace implementation." Quel fallback richiede comunque che al container sia consentito utilizzare il dispositivo TUN, cosa che non tutti gli host permettono, e senza un binario in userspace wg-quick si arresta con l'errore. In un piano KVM il kernel è sotto il tuo controllo: puoi installare WireGuard, caricare il modulo se non è già caricato, configurare l'interfaccia e il tunnel viene stabilito. Se prevedi di eseguire Docker, una VPN, kernel personalizzati o macchine virtuali all'interno del server, verifica il tipo di virtualizzazione prima dell'acquisto. L'esecuzione di macchine virtuali all'interno di una VPS richiede KVM con la virtualizzazione nidificata (nested virtualisation) attivata sull'host, il che restringe ulteriormente la scelta dei piani.
Cos'è una VPC
Una VPC è una rete definita via software all'interno di un provider cloud. Sulla maggior parte dei cloud si assegna un intervallo di indirizzi in notazione CIDR, come 10.0.0.0/16, per poi suddividerlo in subnet (Google Cloud omette l'intervallo a livello di rete e assegna a ogni subnet regionale il proprio intervallo). Si collegano tabelle di routing e si applicano regole firewall (security group) davanti alle risorse interne. Non possiede CPU, memoria o disco. Non c'è nulla a cui accedere tramite login. Eliminare ogni server in una VPC lascia la VPC attiva, vuota e solitamente gratuita.
Il vantaggio di una VPC è l'indirizzamento privato. Due server nella stessa VPC comunicano tramite indirizzi come 10.0.1.15 sulla rete interna del provider, in modo che il traffico non tocchi mai Internet e non venga fatturato come traffico in uscita verso Internet. Un database può quindi restare in ascolto solo sul suo indirizzo privato, senza esporre alcuna porta al mondo esterno.
ip -4 addr showUn indirizzo all'interno di 10.0.0.0/8, 172.16.0.0/12 o 192.168.0.0/16 è privato. Un indirizzo pubblico da solo non rende il server raggiungibile da Internet: anche le regole di routing e del firewall devono consentire l'accesso.
Una VPC rende privato il mio server?
No. Questo è il fraintendimento più costoso tra i tre termini. Una VPC controlla il routing e l'indirizzamento. Non determina se Internet può raggiungere una macchina. Se un'istanza ha un IP pubblico, la relativa subnet dispone di una route verso Internet e le regole di sicurezza consentono l'accesso alla porta 22 da 0.0.0.0/0, l'istanza è esposta esattamente come qualsiasi altro server, con o senza VPC. In una VPC predefinita, la route verso Internet è già configurata. L'isolamento offerto da una VPC consiste nella possibilità di assegnare a una risorsa nessun indirizzo pubblico e di definire regole che stabiliscono quali subnet possono comunicare tra loro.
I tre termini indicano inoltre tipi diversi di isolamento. Una VM isola le risorse di calcolo: l'hypervisor separa il tempo CPU e la memoria, quindi un altro guest non può leggere la RAM della VM. Questo isolamento è più debole per lo storage e la rete, dove un vicino che utilizza intensivamente lo stesso host può comunque rallentare la VM. Un VPS basato su container condivide un unico kernel, quindi un bug a livello di kernel rappresenta un rischio condiviso. Una VPC non isola affatto le risorse di calcolo. Modella soltanto la rete.
Il modello mentale dei costi
Un VPS viene solitamente venduto a un prezzo mensile fisso per una macchina definita. L'importo della fattura è noto prima dell'inizio del mese e il disco e la franchigia di trasferimento dati sono inclusi. Questa prevedibilità è il motivo principale per cui si sceglie un VPS rispetto a un'istanza cloud per carichi di lavoro ridotti.
Una VM cloud è soggetta a misurazione. L'istanza viene fatturata a ora o a secondo, mentre disco, snapshot, load balancer e traffico in uscita vengono addebitati separatamente. Il VPC in sé è solitamente gratuito, ma i componenti gestiti ad esso collegati non lo sono: un NAT gateway che consente alle istanze private di raggiungere Internet viene fatturato a ora, e le modalità di addebito del traffico dipendono dal provider. AWS aggiunge un costo per ogni gigabyte elaborato dal NAT gateway, mentre OVHcloud specifica che il suo Public Cloud Gateway è addebitato a ora e in base all'utilizzo, con traffico incluso. Su AWS viene fatturato anche il traffico che attraversa le zone di disponibilità, mentre Azure non addebita il traffico tra le sue zone all'interno della stessa regione. Al 27 ottobre 2026, la guida AWS VPC indica che è presente un VPC predefinito in ogni regione, mentre le FAQ AWS VPC specificano che gli account creati prima del 18 marzo 2013 possono utilizzare VPC predefiniti nelle regioni abilitate in cui non sono state precedentemente avviate istanze EC2 o provisionate risorse ELB, RDS, ElastiCache o Redshift. Un VPC predefinito eliminato può essere ricreato ma non ripristinato. Google Cloud assegna a ogni nuovo progetto una rete predefinita, a meno che un amministratore non disabiliti tale opzione, e Azure crea una rete virtuale insieme a una nuova VM se non ne viene selezionata una esistente. In ogni caso, la VM cloud risiede all'interno di una di queste reti, indipendentemente dal fatto che sia stata richiesta esplicitamente.
Quale soluzione serve davvero
- Un solo server per un sito web, un'applicazione, un game server o una VPN: un VPS. I primi dieci minuti su un nuovo VPS sono più importanti del nome del piano.
- Più server che devono comunicare tra loro tramite indirizzi privati: una VPC oppure la funzionalità di rete privata offerta dal provider VPS con un nome diverso.
- Un carico di lavoro che deve continuare a funzionare anche se un intero datacenter diventa indisponibile: un cloud con più zone, quindi macchine virtuali all'interno di una VPC.
- Controllo completo del kernel o un hypervisor proprietario eseguito sopra il sistema: un VPS basato su KVM, con la virtualizzazione annidata abilitata se vuoi eseguire l'hypervisor, oppure un server dedicato. Durante il confronto, verifica anche il tipo di disco incluso nel piano.
La maggior parte dei progetti con un singolo server non richiede una VPC. La funzionalità di rete privata inclusa in un VPS svolge lo stesso compito per un numero ridotto di macchine.
FAQ
Un VPS è la stessa cosa di una VM?
Di solito, ma non sempre. Ogni VPS basato su KVM, Xen o VMware è una macchina virtuale, ma non ogni macchina virtuale è un VPS, poiché la VM in esecuzione sul tuo portatile tramite VirtualBox non è un prodotto commerciale. Non ogni VPS è una VM: i piani basati su OpenVZ o LXC sono container che condividono il kernel dell'host, e OpenVZ stesso definisce i propri container come virtual private server. Verifica con systemd-detect-virt prima di fare affidamento sull'accesso al kernel.
Posso inserire un VPS all'interno di una VPC?
Di solito no, perché una VPC è un costrutto di un singolo provider cloud; AWS supporta anche la condivisione delle sue subnet tra account nella stessa organizzazione. Un VPS di un provider indipendente risiede sulla rete di quel provider. Se hai bisogno di collegamenti privati tra i due, costruisci invece un tunnel VPN tra loro, e il VPS raggiungerà le subnet private attraverso di esso.
Perché la mia fattura cloud è più alta di quella di un VPS equivalente?
Il prezzo dell'istanza è solo una parte. Storage, snapshot, traffico in uscita, load balancer e NAT gateway sono voci di costo separate in un cloud a consumo, e un solo NAT gateway può costare al mese più di un piccolo VPS. Un VPS a prezzo fisso include il disco e una quota di trasferimento in un unico importo, motivo per cui lo stesso carico di lavoro spesso risulta più economico su quest'ultimo.
Come verifico se il mio server ha un vero accesso al kernel?
Esegui systemd-detect-virt e leggi la risposta. kvm, xen o vmware (o amazon sulle istanze EC2 più recenti) indicano che disponi di un tuo kernel e che modprobe può caricarvi moduli. lxc, lxc-libvirt o openvz indicano che condividi il kernel dell'host; il caricamento di moduli richiede privilegi del kernel dell'host, mentre le impostazioni basate su namespace sotto /proc/sys, incluse le impostazioni di rete, rimangono configurabili quando l'host lo permette. Una seconda conferma è uname -r, che su un piano container spesso riporta una versione del kernel che la tua distribuzione non ha mai distribuito.