Proxmox VE 9 • Rețea pentru mașini virtuale • Ghid

Cum pui o adresă IP publică pe o mașină virtuală Proxmox

Când ți-a fost predat serverul, o singură adresă IPv4 a fost configurată pe el, iar restul au rămas neatinse. Asta e intenționat, iar pagina aceasta îți arată cum termini treaba. Sunt trei metode și niciuna nu durează mult: pui mașina direct în rețea cu propria adresă, îi trimiți traficul prin gazdă sau ascunzi un set întreg de mașini în spatele adresei pe care o ai deja. Le-am testat pe toate trei pe propria noastră rețea înainte să scriem asta.

Nimic de înregistrat în prealabil Fără repornire Un om la telefon, mereu

Ghid pas cu pas

Citește primele două. După aceea, pașii trei, patru și cinci sunt alternative — alege-l pe cel care se potrivește cu ce construiești.

1

Unde sunt adresele tale și ce gateway folosește fiecare

Caută e-mailul cu titlul Dedicated Server Setup, trimis în ziua în care a fost construită mașina. Listează tot ce este alocat serverului: întâi adresele IPv4, apoi orice IPv6. Aceeași listă se află în contul tău, pe pagina serverului, în panoul intitulat Access, Networking & rDNS.

Pe un server Proxmox, acel e-mail adaugă o linie sub listă, spunându-ți că gazdei i s-a dat doar prima adresă și că restul sunt ale tale să le distribui — către mașini virtuale sau și către gazdă, dacă vrei ca ea să dețină mai mult de una. Configurăm o singură adresă ca mașina să pornească accesibilă, apoi ne oprim. Configurează-le pe toate pe gazdă și ea răspunde pentru toate, lăsând mașinile tale virtuale fără nimic de revendicat.

Două numere contează de fiecare dată când tastezi o adresă. Masca de rețea este /24, adică 255.255.255.0. Gateway-ul este intervalul propriu al acelei adrese, terminat în .1 — deci o adresă din 203.0.113.0/24 folosește 203.0.113.1. Adresele emise împreună stau una lângă alta și împart un singur gateway. Adresele adăugate la un server luni mai târziu pot veni dintr-un alt interval de-al nostru, iar atunci folosesc propriul .1. Să greșești asta este cea mai frecventă cauză pentru care o mașină virtuală nouă nu poate ajunge la nimic și îi costă pe oameni o după-amiază.

Pentru DNS configurăm 209.244.0.3 pe gazdă. Îndreaptă-ți mașinile virtuale oriunde dorești.

2

Vezi ce este deja configurat pe gazdă

Autentifică-te prin SSH ca root și aruncă o privire:

ip -br addr
cat /etc/network/interfaces

Pe o mașină pe care tocmai am construit-o, acel fișier arată aproximativ așa, cu numele interfeței tale și propria ta primă adresă în locul celor afișate:

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

Lucrul util de observat este că vmbr0 este deja un bridge, iar placa de rețea este deja conectată la el. Nimic altceva nu este necesar pentru pasul trei, motiv pentru care pasul trei îți cere să nu schimbi nimic aici.

Proxmox VE 9 stă pe Debian 13 și folosește ifupdown2, așa că modificările de rețea intră în vigoare fără repornirea mașinii. Salvează fișierul și rulează:

ifreload -a

Editarea prin interfața web Proxmox scrie în schimb modificările tale în /etc/network/interfaces.new și le păstrează până apeși Apply Configuration. Indiferent pe care o folosești, deschide mai întâi consola din contul tău. O singură greșeală de tastare în acest fișier și mașina dispare din rețea; consola intră pe altă cale și va funcționa în continuare.

3

Metoda rapidă: pune mașina direct în rețea

Începe de aici. Mașina ta virtuală se comportă ca un computer separat conectat la același switch, vorbește singură cu routerele noastre și gazda nu are nevoie de nicio modificare.

În Proxmox, adaugă un dispozitiv de rețea la mașină, setează bridge-ul pe vmbr0 și lasă adresa MAC pe care Proxmox a completat-o. Apoi setează adresa în interiorul mașinii. Debian sau Ubuntu cu configurarea clasică:

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 cu netplan, în /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]

Pe Windows, aceleași trei valori intră în setările IPv4 ale adaptorului. Chiar nu contează ce rulează mașina; pentru noi este încă un computer pe fir.

Nu trebuie să ne anunți mai întâi. Nu trebuie să ne trimiți adresa MAC a fiecărei mașini virtuale și nu limităm câte poate folosi portul tău. O serie de companii de găzduire fac asta, iar instrucțiunile lor te pun să completezi un formular pentru fiecare mașină nouă. Noi am verificat în loc să presupunem: portul pe care stă serverul tău nu are nicio limită de MAC-uri setată și securitatea portului este dezactivată, iar înainte să publicăm asta am pus o a doua adresă și un al doilea MAC pe portul propriu al unei mașini de personal și am ajuns la ea de pe internetul public.

Trei lucruri care merită făcute corect:

• Fiecare mașină are nevoie de propria adresă MAC. Două mașini care împart una, sau care copiază MAC-ul gazdei, și niciuna nu funcționează cum trebuie.
• Folosește gateway-ul care aparține intervalului acelei adrese, de la pasul unu.
Folosește doar adrese care sunt în contul tău. Acest bridge dă spre o rețea reală cu mașinile altor oameni pe ea. O adresă care nu este a ta le ia traficul cu ea.

Din același motiv: nimic care distribuie adrese nu are ce căuta pe vmbr0. Niciun server DHCP, nicio anunțare de router. Dacă vrei să distribui automat adrese propriilor mașini, folosește pasul cinci, unde bridge-ul nu are nicio ieșire și nu poate ajunge la nimeni altcineva.

4

Metoda controlată: totul prin gazdă

Alege asta când vrei ca gazda să vadă fiecare pachet, ca firewall-ul ei să poată acționa asupra lui, sau când preferi ca mașinile tale să nu apară deloc în rețeaua partajată. Ele primesc în continuare adrese publice reale din contul tău; doar calea se schimbă.

Adresa publică coboară de pe bridge și urcă pe placa de rețea, gazda este instruită să facă forward și răspunde în numele mașinilor din spatele ei. Pe gazdă:

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

O linie up și una down pentru fiecare adresă pe care o routezi astfel. În interiorul mașinii adresa este un /32, iar gazda trebuie atinsă printr-o rută explicită înaintea celei implicite:

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

Nu omite linia proxy_arp. Routerele noastre întreabă rețeaua cine deține fiecare adresă, iar acea linie este cea care face gazda să răspundă pentru mașinile din spatele ei. Dacă o lași afară, ele sunt pur și simplu invizibile. Cele două linii post-up echo sunt modul propriu al Proxmox de a o scrie. Ca să le setezi permanent în schimb, pune un fișier în /etc/sysctl.d/ care conține:

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

Ceea ce cumperi cu munca suplimentară este o gazdă care poate filtra și înregistra fiecare pachet. Dacă nu ai nevoie de asta, pasul trei are mai puține lucruri care pot merge prost.

5

Mașini care nu au nevoie de o adresă proprie

O mulțime de mașini doar pornesc conversații: build runners, lucrători de coadă, o bază de date pe care nimic din exterior nu ar trebui să o atingă. Dă-le acelora o adresă privată pe un bridge fără ieșire proprie și lasă gazda să le traducă traficul pe adresa ei în trecere. Nu folosește nimic din alocarea ta, așa că poți rula câte suportă hardware-ul.

Adaugă un al doilea bridge, lăsând vmbr0 exact așa cum este:

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

Pune mașinile pe vmbr1, dă fiecăreia o adresă din acel interval cu 10.10.10.1 ca gateway și sunt gata. Pentru restul internetului arată ca serverul tău. Nimic nu ajunge la ele din exterior decât dacă ceri asta, iar a cere înseamnă încă o regulă lângă prima, pe un port pe care gazda nu îl folosește deja:

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

Acest bridge nu are port fizic, așa că un server DHCP pe el este sigur și este o modalitate ordonată de a adresa mașinile din spatele lui.

6

Adăugarea adreselor tale IPv6

Ceea ce ai este un pumn de adrese IPv6 separate, nu un bloc de împărțit. Ele sunt la baza aceluiași e-mail de configurare și sunt plasate una câte una exact ca cele IPv4: una pe gazdă dacă vrei ca gazda să fie accesibilă prin IPv6, celelalte pe mașinile care au nevoie de ele. Instalatorul nu configurează niciuna, așa că toate acestea sunt ale tale de adăugat.

Scrie fiecare cu un /64 la sfârșit, iar gateway-ul este prefixul cu ::1 după el — o adresă din interiorul 2001:db8:1234::/64 folosește 2001:db8:1234::1. Pe gazdă, alături de bridge-ul care este deja acolo:

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

Și într-o mașină de pe bridge:

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

Apoi ifreload -a, ca înainte. Pentru că acestea sunt adrese individuale, nu un bloc propriu, nu anunța rute și nu distribui adrese care nu ți-au fost date. Ai nevoie de mai multe? Întreabă-ne.

7

Denumirea adreselor tale: DNS invers

Configurezi singur DNS-ul invers, pe orice adresă, fără să întrebi pe nimeni. Autentifică-te, deschide serverul și găsește panoul intitulat Access, Networking & rDNS. Fiecare adresă este listată cu orice nume la care răspunde în prezent și cu un buton Edit rDNS lângă ea. Adresele IPv6 funcționează la fel.

Câmpul vrea un nume de gazdă: litere, cifre, cratime și puncte, fiecare parte între 1 și 63 de caractere, cel puțin două părți, iar punctul final este adăugat pentru tine. Dă-i câteva minute să intre în vigoare.

Dacă mașina trimite e-mail, adresa de denumit este cea de pe care pleacă efectiv corespondența — cu pasul cinci aceasta este adresa gazdei, nu a mașinii — și vei dori și înregistrarea forward corespunzătoare la furnizorul tău de DNS. Serverele de e-mail de la celălalt capăt verifică dacă cele două se potrivesc și refuză corespondența când nu se potrivesc.

Întrebări frecvente

Ce ne întreabă oamenii după ce urmează această pagină.

Mașina virtuală este pornită, dar nimic nu funcționează. Unde mă uit?

Gateway-ul, în nouă din zece cazuri. Trebuie să fie .1-ul intervalului căruia îi aparține acea adresă, iar un server ale cărui adrese au fost cumpărate în momente diferite poate avea cu ușurință două intervale cu două gateway-uri. După aceea, verifică dacă adresa este într-adevăr în contul tău, dacă ai folosit /24 și dacă nicio altă mașină nu poartă aceeași adresă MAC.

Trebuie să vă trimit adresa MAC a fiecărei mașini virtuale?

Nu, și nu este nimic de completat nicăieri. Portul tău învață câte adrese MAC pui pe el, iar securitatea portului este dezactivată, așa că o mașină virtuală apare în rețea exact ca una fizică. Păstrează adresa MAC generată de Proxmox și asigură-te că nicio două mașini nu împart una.

De ce a fost configurată o singură adresă când a sosit serverul?

Pentru că o gazdă care poartă fiecare adresă ar răspunde pentru fiecare adresă, iar mașinile tale virtuale nu ar avea ce să ia. Configurăm prima ca mașina să pornească accesibilă și le lăsăm pe celelalte pentru tine. E-mailul de configurare spune asta direct, sub listă.

Pe care să-l aleg, pasul trei sau pasul patru?

Pasul trei, dacă nu știi de ce vrei pasul patru. Nu schimbă nimic pe gazdă, nu are nevoie de setări neobișnuite în mașină și se comportă așa cum se comportă un computer real într-o rețea. Pasul patru este pentru când vrei ca gazda să inspecteze și să filtreze totul în trecere și ești dispus să configurezi fiecare mașină puțin mai atent în schimb.

Pot distribui automat adrese cu DHCP?

Pe un bridge privat fără port fizic, absolut, și este o modalitate elegantă de a rula o mulțime de mașini. Niciodată pe vmbr0, care este conectat la o rețea pe care sunt și alți clienți: un server DHCP sau anunțuri de router acolo încep să răspundă pentru mașini care nu sunt ale tale.

Am salvat un fișier greșit și serverul a dispărut. Ce fac acum?

Folosește consola din contul tău. Ea ajunge la mașină prin placa sa de management în loc de rețea, așa că rămâne funcțională când rețeaua nu mai merge. Repară /etc/network/interfaces, rulează ifreload -a și ești înapoi. Să deschizi consola înainte de a aplica o modificare este un obicei care merită cultivat.

Pot obține mai multe adrese?

Da. Scrie-ne pe chat live sau deschide un tichet și spune-ne pentru ce este fiecare — registrele de adrese cer un motiv pentru fiecare atribuire, așa că este primul lucru pe care trebuie să-l înregistrăm. Adresele IPv4 suplimentare sunt taxate lunar pe același cont și apar în panoul tău odată ce sunt alocate.

Cauți un server pe care să-l rulezi?

Proxmox VE este unul dintre sistemele de operare pe care le poți instala cu un clic, pe hardware care este doar al tău, cu acces la consolă și fără licență de cumpărat.