Proxmox VE 9 • Rete delle macchine virtuali • Guida

Assegnare un indirizzo IP pubblico a una macchina virtuale Proxmox

Quando il server ti è stato consegnato, su di esso era configurato un solo indirizzo IPv4 e gli altri sono rimasti intatti. È una scelta voluta, e questa pagina ti spiega come completare il lavoro. Ci sono tre modi per farlo e nessuno richiede molto tempo: collegare la macchina direttamente alla rete con un indirizzo proprio, far passare il suo traffico attraverso l'host, oppure nascondere un intero gruppo di macchine dietro l'indirizzo che già possiedi. Li abbiamo provati tutti e tre sulla nostra rete prima di scrivere questa guida.

Nessuna registrazione preliminare Nessun riavvio necessario Qualcuno al telefono, sempre

Guida passo passo

Leggi i primi due. Dopo, i passi tre, quattro e cinque sono alternative — scegli quello che corrisponde a ciò che stai costruendo.

1

Dove sono i tuoi indirizzi e quale gateway usa ciascuno

Cerca l'email intitolata Configurazione del server dedicato, inviata il giorno in cui la macchina è stata creata. Elenca tutto ciò che è stato allocato al server: prima gli indirizzi IPv4, poi eventuali IPv6. Lo stesso elenco si trova nel tuo account, nella pagina del server, nel pannello Accesso, rete e rDNS.

Su un server Proxmox quell'email aggiunge una riga sotto l'elenco, spiegandoti che all'host è stato assegnato solo il primo indirizzo e che i restanti sono tuoi da distribuire — alle macchine virtuali, oppure anche all'host se vuoi che ne possieda più di uno. Noi configuriamo un solo indirizzo affinché la macchina risulti raggiungibile all'avvio, poi ci fermiamo. Configurali tutti sull'host ed esso risponderà per tutti, lasciando alle tue macchine virtuali nulla da rivendicare.

Due numeri contano ogni volta che digiti un indirizzo. La netmask è /24, ovvero 255.255.255.0. Il gateway è il range dell'indirizzo stesso, che termina in .1 — quindi un indirizzo in 203.0.113.0/24 usa 203.0.113.1. Gli indirizzi emessi insieme sono adiacenti e condividono un unico gateway. Gli indirizzi aggiunti a un server mesi dopo possono provenire da un nostro range diverso, e in tal caso usano il proprio .1. Sbagliare questo è la causa più comune per cui una nuova macchina virtuale non riesce a raggiungere nulla, e costa alle persone un intero pomeriggio.

Per il DNS configuriamo 209.244.0.3 sull'host. Punta le tue macchine virtuali dove preferisci.

2

Vedi cosa è già configurato sull'host

Accedi via SSH come root e dai un'occhiata:

ip -br addr
cat /etc/network/interfaces

Su una macchina che abbiamo appena creato, quel file si presenta più o meno così, con il nome della tua interfaccia e il tuo primo indirizzo al posto di quelli mostrati:

auto lo
iface lo inet loopback

iface eno1 inet manual

auto vmbr0
iface vmbr0 inet static
    address 203.0.113.10/24
    gateway 203.0.113.1
    bridge-ports eno1
    bridge-stp off
    bridge-fd 0

La cosa utile da notare è che vmbr0 è già un bridge e la scheda di rete vi è già collegata. Non serve altro per il passo tre, motivo per cui il passo tre ti chiede di non modificare nulla qui.

Proxmox VE 9 si basa su Debian 13 e utilizza ifupdown2, quindi le modifiche di rete hanno effetto senza riavviare la macchina. Salva il file ed esegui:

ifreload -a

Modificando invece tramite l'interfaccia web di Proxmox, le tue modifiche vengono scritte in /etc/network/interfaces.new e restano in sospeso finché non premi Applica configurazione. Qualunque metodo usi, apri prima la console dal tuo account. Un solo refuso in questo file e la macchina cade dalla rete; la console accede per un'altra via e continuerà a funzionare.

3

La via rapida: collega la macchina direttamente alla rete

Inizia da qui. La tua macchina virtuale si comporta come un computer separato collegato allo stesso switch, dialoga da sola con i nostri router e l'host non richiede alcuna modifica.

In Proxmox, aggiungi un dispositivo di rete alla macchina, imposta il bridge su vmbr0 e lascia l'indirizzo MAC compilato da Proxmox. Poi imposta l'indirizzo all'interno della macchina. Debian o Ubuntu con la configurazione classica:

auto lo
iface lo inet loopback

auto ens18
iface ens18 inet static
    address 203.0.113.58/24
    gateway 203.0.113.1
    dns-nameservers 209.244.0.3 1.1.1.1

Ubuntu con netplan, in /etc/netplan/01-netcfg.yaml:

network:
  version: 2
  ethernets:
    ens18:
      addresses: [203.0.113.58/24]
      routes:
        - to: default
          via: 203.0.113.1
      nameservers:
        addresses: [209.244.0.3, 1.1.1.1]

Su Windows, gli stessi tre valori vanno nelle impostazioni IPv4 dell'adattatore. Non importa davvero cosa esegue la macchina; per noi è un computer in più sul cavo.

Non c'è nulla da comunicarci prima. Non devi inviarci l'indirizzo MAC di ogni macchina virtuale e non poniamo limiti a quanti ne possa usare la tua porta. Diverse società di hosting lo fanno, e le loro istruzioni ti fanno compilare un modulo per ogni nuova macchina. Noi abbiamo verificato anziché supporre: la porta su cui si trova il tuo server non ha limiti di MAC e la sicurezza della porta è disattivata, e prima di pubblicare questa guida abbiamo messo un secondo indirizzo e MAC sulla porta di una macchina del personale e l'abbiamo raggiunta da internet pubblico.

Tre cose da fare bene:

• Ogni macchina ha bisogno del proprio indirizzo MAC. Due macchine che ne condividono uno, o che copiano quello dell'host, e nessuna funziona correttamente.
• Usa il gateway appartenente al range di quell'indirizzo, dal passo uno.
Usa solo indirizzi presenti sul tuo account. Questo bridge si affaccia su una rete reale con le macchine di altre persone. Un indirizzo che non è tuo porta via con sé il loro traffico.

Stesso motivo: nulla che distribuisca indirizzi ha posto su vmbr0. Nessun server DHCP, nessun annuncio di router. Se vuoi assegnare automaticamente indirizzi alle tue macchine, usa il passo cinque, dove il bridge non ha via d'uscita e non può raggiungere nessun altro.

4

La via controllata: tutto attraverso l'host

Scegli questa quando vuoi che l'host veda ogni pacchetto, così il suo firewall può intervenire, oppure quando preferisci che le tue macchine non compaiano affatto sulla rete condivisa. Ricevono comunque indirizzi pubblici reali dal tuo account; cambia solo il percorso.

L'indirizzo pubblico viene tolto dal bridge e va sulla scheda di rete, all'host viene detto di inoltrare, ed esso risponde per conto delle macchine dietro di sé. Sull'host:

auto lo
iface lo inet loopback

auto eno1
iface eno1 inet static
    address 203.0.113.10/24
    gateway 203.0.113.1
    post-up echo 1 > /proc/sys/net/ipv4/ip_forward
    post-up echo 1 > /proc/sys/net/ipv4/conf/eno1/proxy_arp

auto vmbr0
iface vmbr0 inet manual
    bridge-ports none
    bridge-stp off
    bridge-fd 0
    up ip route add 203.0.113.58/32 dev vmbr0
    down ip route del 203.0.113.58/32 dev vmbr0

Una riga up e una down per ogni indirizzo instradato in questo modo. Dentro la macchina l'indirizzo è un /32, e l'host deve essere raggiunto tramite una rotta esplicita prima di quella predefinita:

auto lo
iface lo inet loopback

auto ens18
iface ens18 inet static
    address 203.0.113.58/32
    post-up ip route add 203.0.113.10 dev ens18
    post-up ip route add default via 203.0.113.10
    dns-nameservers 209.244.0.3 1.1.1.1

Non omettere la riga proxy_arp. I nostri router chiedono alla rete chi possiede ciascun indirizzo, e quella riga è ciò che fa rispondere l'host per le macchine dietro di sé. Se la ometti, sono semplicemente invisibili. Le due righe post-up echo sono il modo di Proxmox per scriverla. Per impostarle in modo permanente, crea invece un file in /etc/sysctl.d/ contenente:

net.ipv4.ip_forward=1
net.ipv4.conf.eno1.proxy_arp=1

Ciò che ottieni con il lavoro extra è un host in grado di filtrare e registrare ogni pacchetto. Se non ti serve, il passo tre ha meno cose che possono andare storte.

5

Macchine che non hanno bisogno di un indirizzo proprio

Molte macchine si limitano ad avviare conversazioni: runner di build, worker di coda, un database che nulla all'esterno dovrebbe toccare. Assegna loro un indirizzo privato su un bridge senza via d'uscita propria e lascia che l'host traduca il loro traffico sul proprio indirizzo al passaggio. Non consuma nulla della tua allocazione, quindi puoi eseguirne quante ne regge l'hardware.

Aggiungi un secondo bridge, lasciando vmbr0 esattamente com'è:

auto vmbr1
iface vmbr1 inet static
    address 10.10.10.1/24
    bridge-ports none
    bridge-stp off
    bridge-fd 0
    post-up echo 1 > /proc/sys/net/ipv4/ip_forward
    post-up iptables -t nat -A POSTROUTING -s '10.10.10.0/24' -o eno1 -j MASQUERADE
    post-down iptables -t nat -D POSTROUTING -s '10.10.10.0/24' -o eno1 -j MASQUERADE

Metti le macchine su vmbr1, assegna a ciascuna un indirizzo in quel range con 10.10.10.1 come gateway, e sono operative. Per il resto di internet sembrano il tuo server. Nulla le raggiunge dall'esterno a meno che tu non lo richieda, e richiederlo è una regola in più accanto alla prima, su una porta che l'host non sta già usando:

post-up iptables -t nat -A PREROUTING -i eno1 -p tcp --dport 8443 -j DNAT --to 10.10.10.2:443
post-down iptables -t nat -D PREROUTING -i eno1 -p tcp --dport 8443 -j DNAT --to 10.10.10.2:443

Questo bridge non ha una porta fisica, quindi un server DHCP su di esso è sicuro ed è un modo ordinato per assegnare indirizzi alle macchine dietro di esso.

6

Aggiungere i tuoi indirizzi IPv6

Ciò che possiedi è una manciata di indirizzi IPv6 separati, non un blocco da suddividere. Sono in fondo alla stessa email di configurazione e si posizionano uno alla volta esattamente come quelli IPv4: uno sull'host se vuoi che l'host sia raggiungibile via IPv6, gli altri sulle macchine che ne hanno bisogno. Il programma di installazione non ne configura nessuno, quindi spetta a te aggiungerli tutti.

Scrivi ciascuno con un /64 alla fine, e il gateway è il prefisso con ::1 dopo — un indirizzo dentro 2001:db8:1234::/64 usa 2001:db8:1234::1. Sull'host, accanto al bridge già presente:

iface vmbr0 inet6 static
    address 2001:db8:1234::2/64
    gateway 2001:db8:1234::1

E in una macchina sul bridge:

iface ens18 inet6 static
    address 2001:db8:1234::5/64
    gateway 2001:db8:1234::1

Poi ifreload -a, come prima. Poiché si tratta di indirizzi individuali e non di un blocco tuo, non annunciare rotte né distribuire indirizzi che non ti sono stati assegnati. Te ne servono di più? Chiediceli.

7

Dare un nome ai tuoi indirizzi: DNS inverso

Il DNS inverso lo configuri da solo, su qualsiasi indirizzo, senza chiedere a nessuno. Accedi, apri il server e trova il pannello Accesso, rete e rDNS. Ogni indirizzo è elencato con il nome a cui risponde attualmente e un pulsante Modifica rDNS accanto. Gli indirizzi IPv6 funzionano allo stesso modo.

Il campo richiede un hostname: lettere, numeri, trattini e punti, ogni parte tra 1 e 63 caratteri, almeno due parti, e il punto finale viene aggiunto per te. Concedigli qualche minuto per avere effetto.

Se la macchina invia email, l'indirizzo da nominare è quello da cui la posta parte effettivamente — con il passo cinque è l'indirizzo dell'host, non quello della macchina — e ti servirà anche il record forward corrispondente presso il tuo provider DNS. I server di posta all'altro capo verificano che i due coincidano e rifiutano la posta quando non è così.

FAQ

Cosa ci chiedono le persone dopo aver seguito questa pagina.

La macchina virtuale è accesa ma non funziona nulla. Dove guardo?

Il gateway, nove volte su dieci. Deve essere il .1 del range a cui appartiene quell'indirizzo stesso, e un server i cui indirizzi sono stati acquistati in momenti diversi può facilmente avere due range con due gateway. Dopo, verifica che l'indirizzo sia davvero sul tuo account, che tu abbia usato /24 e che nessun'altra macchina porti lo stesso indirizzo MAC.

Devo inviarvi l'indirizzo MAC di ogni macchina virtuale?

No, e non c'è nulla da compilare da nessuna parte. La tua porta apprende tutti gli indirizzi MAC che vi metti sopra e la sicurezza della porta è disattivata, quindi una macchina virtuale appare sulla rete esattamente come una fisica. Mantieni l'indirizzo MAC generato da Proxmox e assicurati che nessuna macchina ne condivida uno.

Perché all'arrivo del server era configurato un solo indirizzo?

Perché un host che porta ogni indirizzo risponderebbe per ogni indirizzo, e le tue macchine virtuali non avrebbero nulla da prendere. Noi configuriamo il primo affinché la macchina si avvii raggiungibile e lasciamo gli altri a te. L'email di configurazione lo dice direttamente, sotto l'elenco.

Quale dovrei scegliere, il passo tre o il passo quattro?

Il passo tre, a meno che tu non sappia perché vuoi il passo quattro. Non cambia nulla sull'host, non richiede impostazioni insolite nella macchina e si comporta come un vero computer su una rete. Il passo quattro è per quando vuoi che l'host ispezioni e filtri tutto al passaggio, e sei disposto a configurare ogni macchina con un po' più di attenzione in cambio.

Posso distribuire automaticamente gli indirizzi con DHCP?

Su un bridge privato senza porta fisica, assolutamente, ed è un modo pulito per gestire molte macchine. Mai su vmbr0, che è collegato a una rete su cui si trovano anche altri clienti: un server DHCP o annunci di router lì iniziano a rispondere per macchine che non sono tue.

Ho salvato un file errato e il server è sparito. E adesso?

Usa la console nel tuo account. Raggiunge la macchina tramite la sua scheda di gestione invece che attraverso la rete, quindi continua a funzionare quando la rete non funziona. Ripara /etc/network/interfaces, esegui ifreload -a e sei di nuovo operativo. Aprire la console prima di applicare una modifica è un'abitudine che vale la pena acquisire.

Posso ottenere più indirizzi?

Sì. Scrivici in live chat o apri un ticket e dicci a cosa serve ciascuno — i registri degli indirizzi richiedono una motivazione per ogni assegnazione, quindi è la prima cosa che dobbiamo registrare. Gli indirizzi IPv4 extra vengono addebitati mensilmente sullo stesso account e compaiono nel tuo pannello una volta allocati.

Cerchi un server su cui eseguirlo?

Proxmox VE è uno dei sistemi operativi che puoi installare con un clic, su hardware solo tuo, con accesso alla console e nessuna licenza da acquistare.