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.
Przeczytaj dwa pierwsze. Potem kroki trzeci, czwarty i piąty to alternatywy — wybierz ten, który pasuje do tego, co budujesz.
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.
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ć.
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.
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.
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.
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.
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.
O co ludzie pytają nas po przeczytaniu tej strony.