Proxmox VE 9 • Sieć maszyn wirtualnych • Poradnik

Przypisywanie publicznego adresu IP do maszyny wirtualnej Proxmox

Gdy serwer został Ci przekazany, skonfigurowano na nim jeden adres IPv4, a resztę pozostawiono nietkniętą. To celowe działanie, a ta strona pomoże Ci dokończyć zadanie. Są trzy sposoby, żadne nie zajmuje dużo czasu: podłącz maszynę bezpośrednio do sieci z własnym adresem, kieruj jej ruch przez hosta albo ukryj cały zestaw maszyn za adresem, który już masz. Wszystkie trzy przetestowaliśmy na własnej sieci, zanim to napisaliśmy.

Nic nie trzeba wcześniej rejestrować Bez restartu Zawsze ktoś przy telefonie

Przewodnik krok po kroku

Przeczytaj dwa pierwsze. Potem kroki trzeci, czwarty i piąty to alternatywy — wybierz ten, który pasuje do tego, co budujesz.

1

Gdzie są Twoje adresy i której bramy używa każdy z nich

Poszukaj e-maila zatytułowanego Dedicated Server Setup, wysłanego w dniu postawienia maszyny. Wymienia wszystko, co przydzielono serwerowi: najpierw adresy IPv4, potem ewentualne IPv6. Ta sama lista znajduje się na Twoim koncie, na stronie serwera, w panelu zatytułowanym Access, Networking & rDNS.

Na serwerze Proxmox ten e-mail dodaje pod listą wiersz informujący, że host otrzymał tylko pierwszy adres, a pozostałe są Twoje do rozdania — maszynom wirtualnym albo również hostowi, jeśli chcesz, by obsługiwał więcej niż jeden. Konfigurujemy pojedynczy adres, żeby maszyna startowała osiągalna, i na tym poprzestajemy. Skonfiguruj je wszystkie na hoście, a będzie odpowiadał za wszystkie, nie zostawiając maszynom wirtualnym nic do przejęcia.

Dwie liczby mają znaczenie za każdym razem, gdy wpisujesz adres. Maska sieci to /24, czyli 255.255.255.0. Brama to zakres tego adresu, kończący się na .1 — więc adres z 203.0.113.0/24 używa 203.0.113.1. Adresy wydawane razem leżą obok siebie i współdzielą jedną bramę. Adresy dodane do serwera miesiące później mogą pochodzić z innego naszego zakresu i wtedy używają własnego .1. Pomyłka w tym miejscu to najczęstszy powód, dla którego nowa maszyna wirtualna nie może się z niczym połączyć, i kosztuje ludzi całe popołudnie.

Dla DNS ustawiamy na hoście 209.244.0.3. Swoje maszyny wirtualne kieruj, gdzie chcesz.

2

Zobacz, co już jest skonfigurowane na hoście

Zaloguj się przez SSH jako root i spójrz:

ip -br addr
cat /etc/network/interfaces

Na maszynie, którą właśnie zbudowaliśmy, ten plik wygląda mniej więcej tak, z Twoją nazwą interfejsu i Twoim własnym pierwszym adresem zamiast pokazanych:

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

Warto zauważyć, że vmbr0 jest już mostkiem, a karta sieciowa jest już do niego podłączona. Nic więcej nie potrzeba do kroku trzeciego, dlatego krok trzeci prosi, byś niczego tu nie zmieniał.

Proxmox VE 9 działa na Debianie 13 i używa ifupdown2, więc zmiany sieciowe wchodzą w życie bez restartu maszyny. Zapisz plik i uruchom:

ifreload -a

Edycja przez interfejs webowy Proxmoxa zapisuje zmiany do /etc/network/interfaces.new i wstrzymuje je, dopóki nie naciśniesz Apply Configuration. Niezależnie od wybranej metody, najpierw otwórz konsolę ze swojego konta. Jedna literówka w tym pliku i maszyna znika z sieci; konsola łączy się inną drogą i nadal będzie działać.

3

Szybki sposób: podłącz maszynę bezpośrednio do sieci

Zacznij tutaj. Twoja maszyna wirtualna zachowuje się jak osobny komputer podłączony do tego samego przełącznika, sama rozmawia z naszymi routerami, a host nie wymaga żadnych zmian.

W Proxmoxie dodaj urządzenie sieciowe do maszyny, ustaw mostek na vmbr0 i zostaw adres MAC wypełniony przez Proxmoxa. Następnie ustaw adres wewnątrz maszyny. Debian lub Ubuntu z klasyczną konfiguracją:

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 z netplanem, w /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]

W Windowsie te same trzy wartości trafiają do ustawień IPv4 karty sieciowej. Naprawdę nie ma znaczenia, co działa na maszynie; dla nas to po prostu kolejny komputer w sieci.

Nie musisz nas wcześniej o niczym informować. Nie musisz przesyłać nam adresu MAC każdej maszyny wirtualnej i nie ograniczamy, ile ich może używać Twój port. Wiele firm hostingowych to robi, a ich instrukcje każą wypełniać formularz dla każdej nowej maszyny. Sprawdziliśmy, zamiast zakładać: port, na którym siedzi Twój serwer, nie ma ustawionego limitu MAC, a ochrona portu jest wyłączona, a przed publikacją tego tekstu umieściliśmy drugi adres i MAC na porcie maszyny pracownika i połączyliśmy się z nim z publicznego internetu.

Trzy rzeczy, które warto zrobić dobrze:

• Każda maszyna potrzebuje własnego adresu MAC. Dwie maszyny współdzielące jeden albo kopiujące adres hosta sprawiają, że żadna nie działa poprawnie.
• Użyj bramy należącej do zakresu tego adresu, z kroku pierwszego.
Używaj wyłącznie adresów, które są na Twoim koncie. Ten mostek styka się z prawdziwą siecią, na której są maszyny innych ludzi. Adres, który nie jest Twój, zabiera ze sobą ich ruch.

Z tego samego powodu: nic, co rozdaje adresy, nie powinno znajdować się na vmbr0. Żadnego serwera DHCP, żadnych ogłoszeń routera. Jeśli chcesz automatycznie przydzielać adresy własnym maszynom, użyj kroku piątego, gdzie mostek nie ma wyjścia i nie może dosięgnąć nikogo innego.

4

Kontrolowany sposób: wszystko przez hosta

Wybierz to, gdy chcesz, by host widział każdy pakiet i mógł na niego reagować zaporą, albo gdy wolisz, by Twoje maszyny w ogóle nie pojawiały się we współdzielonej sieci. Nadal otrzymują prawdziwe publiczne adresy z Twojego konta; zmienia się tylko ścieżka.

Publiczny adres schodzi z mostka i trafia na kartę sieciową, host otrzymuje polecenie przekazywania i odpowiada w imieniu maszyn za sobą. Na hoście:

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

Jedna linia up i down dla każdego adresu kierowanego w ten sposób. Wewnątrz maszyny adres to /32, a host musi być osiągalny przez jawną trasę przed trasą domyślną:

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

Nie pomijaj linii proxy_arp. Nasze routery pytają sieć, kto trzyma każdy adres, a ta linia sprawia, że host odpowiada za maszyny za sobą. Bez niej są po prostu niewidoczne. Dwie linie post-up echo to własny sposób Proxmoxa na jej zapisanie. Aby ustawić je na stałe, wrzuć plik do /etc/sysctl.d/ zawierający:

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

To, co zyskujesz za dodatkową pracę, to host, który może filtrować i logować każdy pakiet. Jeśli tego nie potrzebujesz, krok trzeci to mniej rzeczy, które mogą pójść źle.

5

Maszyny, które nie potrzebują własnego adresu

Wiele maszyn tylko inicjuje połączenia: build runnery, pracownicy kolejek, baza danych, której nic z zewnątrz nie powinno dotykać. Daj im prywatny adres na mostku bez własnego wyjścia i pozwól hostowi tłumaczyć ich ruch na swój adres po drodze. Nie zużywa to nic z Twojej puli, więc możesz uruchomić ich tyle, ile sprzęt udźwignie.

Dodaj drugi mostek, zostawiając vmbr0 dokładnie takim, jaki jest:

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

Umieść maszyny na vmbr1, nadaj każdej adres z tego zakresu z 10.10.10.1 jako bramą i już działają. Dla reszty internetu wyglądają jak Twój serwer. Nic nie dociera do nich z zewnątrz, chyba że o to poprosisz, a proszenie to jedna dodatkowa reguła obok pierwszej, na porcie, którego host jeszcze nie używa:

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

Ten mostek nie ma fizycznego portu, więc serwer DHCP na nim jest bezpieczny i stanowi schludny sposób adresowania maszyn za nim.

6

Dodawanie adresów IPv6

To, co masz, to garść osobnych adresów IPv6, a nie blok do podziału. Są na dole tego samego e-maila konfiguracyjnego i umieszcza się je pojedynczo, dokładnie jak adresy IPv4: jeden na hoście, jeśli chcesz, by host był osiągalny po IPv6, pozostałe na maszynach, które ich potrzebują. Instalator nie konfiguruje żadnego z nich, więc wszystko to należy dodać samodzielnie.

Zapisuj każdy z /64 na końcu, a brama to prefiks z ::1 po nim — adres wewnątrz 2001:db8:1234::/64 używa 2001:db8:1234::1. Na hoście, obok mostka, który już tam jest:

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

A w maszynie na mostku:

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

Potem ifreload -a, jak wcześniej. Ponieważ to pojedyncze adresy, a nie własny blok, nie ogłaszaj tras ani nie rozdawaj adresów, których Ci nie przydzielono. Brakuje Ci? Zapytaj nas.

7

Nazywanie adresów: rewers DNS

Rewers DNS ustawiasz samodzielnie, dla dowolnego adresu, bez pytania kogokolwiek. Zaloguj się, otwórz serwer i znajdź panel zatytułowany Access, Networking & rDNS. Każdy adres jest wymieniony z nazwą, na którą obecnie odpowiada, i przyciskiem Edit rDNS obok. Adresy IPv6 działają tak samo.

Pole oczekuje nazwy hosta: liter, cyfr, myślników i kropek, każda część od 1 do 63 znaków, co najmniej dwie części, a końcowa kropka jest dodawana za Ciebie. Daj jej kilka minut na wejście w życie.

Jeśli maszyna wysyła e-maile, adres do nazwania to ten, z którego poczta faktycznie wychodzi — w kroku piątym to adres hosta, nie maszyny — a także będziesz potrzebować pasującego rekordu forward u swojego dostawcy DNS. Serwery pocztowe po drugiej stronie sprawdzają, czy te dwa się zgadzają, i odrzucają pocztę, gdy tak nie jest.

FAQ

O co ludzie pytają nas po przeczytaniu tej strony.

Maszyna wirtualna działa, ale nic nie działa. Gdzie szukać?

Brama, w dziewięciu przypadkach na dziesięć. Musi to być .1 zakresu, do którego należy sam adres, a serwer, którego adresy kupowano w różnym czasie, może łatwo mieć dwa zakresy z dwiema bramami. Potem sprawdź, czy adres naprawdę jest na Twoim koncie, czy użyłeś /24 i czy żadna inna maszyna nie ma tego samego adresu MAC.

Czy muszę przesyłać Wam adres MAC każdej maszyny wirtualnej?

Nie i nigdzie nic nie trzeba wypełniać. Twój port uczy się tylu adresów MAC, ile na nim umieścisz, a ochrona portu jest wyłączona, więc maszyna wirtualna pojawia się w sieci dokładnie jak fizyczna. Zachowaj adres MAC wygenerowany przez Proxmoxa i upewnij się, że żadne dwie maszyny go nie współdzielą.

Dlaczego po dostarczeniu serwera skonfigurowano tylko jeden adres?

Ponieważ host obsługujący każdy adres odpowiadałby za każdy adres, a Twoje maszyny wirtualne nie miałyby czego przejąć. Konfigurujemy pierwszy, żeby maszyna startowała osiągalna, a resztę zostawiamy Tobie. E-mail konfiguracyjny mówi to wprost, pod listą.

Co wybrać, krok trzeci czy czwarty?

Krok trzeci, chyba że wiesz, dlaczego chcesz krok czwarty. Nie zmienia nic na hoście, nie wymaga nietypowych ustawień w maszynie i zachowuje się tak, jak zachowuje się prawdziwy komputer w sieci. Krok czwarty jest dla sytuacji, gdy chcesz, by host sprawdzał i filtrował wszystko po drodze, i jesteś gotów w zamian konfigurować każdą maszynę nieco staranniej.

Czy mogę automatycznie rozdawać adresy przez DHCP?

Na prywatnym mostku bez fizycznego portu absolutnie tak i jest to schludny sposób obsługi wielu maszyn. Nigdy na vmbr0, który jest podłączony do sieci, na której są też inni klienci: serwer DHCP lub ogłoszenia routera zaczynają tam odpowiadać za maszyny, które nie są Twoje.

Zapisałem zły plik i serwer zniknął. Co teraz?

Użyj konsoli na swoim koncie. Dociera do maszyny przez kartę zarządzania zamiast przez sieć, więc działa nadal, gdy sieć nie działa. Napraw /etc/network/interfaces, uruchom ifreload -a i wracasz. Otwieranie konsoli przed zastosowaniem zmiany to nawyk wart wyrobienia.

Czy mogę dostać więcej adresów?

Tak. Napisz do nas na czacie na żywo albo otwórz zgłoszenie i powiedz, do czego każdy ma służyć — rejestry adresów wymagają powodu dla każdego przydziału, więc to pierwsza rzecz, którą musimy odnotować. Dodatkowe adresy IPv4 są naliczane miesięcznie na tym samym koncie i pojawiają się w panelu po przydzieleniu.

Szukasz serwera, na którym to uruchomisz?

Proxmox VE to jeden z systemów operacyjnych, które możesz zainstalować jednym kliknięciem, na sprzęcie wyłącznie Twoim, z dostępem do konsoli i bez licencji do kupienia.