Jak zarejestrować dużą liczbę adresów IP w Debianie/Ubuntu? | INTROSERV
EUR
european

EUR

usa

USD

Poland Pl
Ex. VAT Ex. VAT 0%

Jak zarejestrować dużą liczbę adresów IP w Debianie/Ubuntu?

Pojedynczy serwer często potrzebuje więcej niż jednego adresu IP. Ten przewodnik opisuje dwa sposoby przypisania wielu adresów IPv4 do jednego interfejsu sieciowego w systemach Debian i Ubuntu:

  • automatycznie, za pomocą skryptu powłoki i usługi systemd, zalecane dla dużych zakresów;
  • bezpośrednio w netplan, zalecane, gdy adresy mają przetrwać rekonfigurację sieci, a nie tylko ponowne uruchomienie.

Obie metody sprawiają, że konfiguracja jest trwała po ponownym uruchomieniu. Przeczytaj uwagę na końcu każdej metody, aby wybrać tę odpowiednią dla swojego przypadku.

Kiedy potrzebujesz wielu adresów IP

Kilka typowych zastosowań na pojedynczym serwerze wymaga więcej niż jednego adresu publicznego:

  • Serwery pocztowe, które używają osobnych adresów i rekordów PTR, aby oddzielić reputację wysyłki różnych domen.
  • Serwery WWW, które wymagają dedykowanych adresów dla starszych aplikacji, izolacji klientów lub określonych zasad zapory.
  • Infrastruktura proxy i VPN, w której każda instancja proxy lub każdy punkt końcowy VPN jest powiązany z własnym adresem publicznym.
  • Kontenery lub maszyny wirtualne używające trasowanych adresów IP.

Plany VPS firmy INTROSERV domyślnie obejmują dwa adresy IPv4 oraz podsieć IPv6 /112. Dodatkowe adresy IPv4 są dostępne w wielu lokalizacjach. Sprawdź dostępność dla swojego regionu w konfiguratorze zamówień.

Zanim zaczniesz

Potrzebujesz dostępu root oraz nazwy interfejsu, który będzie przenosił dodatkowe adresy. Nowoczesne wersje Debiana i Ubuntu nie używają już starej nazwy eth0, więc nie zakładaj jej z góry. Wyświetl interfejsy wraz z ich bieżącymi adresami i ustal ten, który ma już Twój adres podstawowy:

ip -br addr show

Dane wyjściowe pokazują wpisy takie jak ens3, enp1s0 lub eth0 obok adresów już na nich skonfigurowanych. Interfejs, który ma już Twój główny adres IP, to ten, którego należy użyć w poniższych krokach. W przykładach używamy ens3.

Ostrzeżenie: Te kroki zmieniają konfigurację sieci na serwerze, do którego najprawdopodobniej łączysz się przez SSH. Błąd może odciąć Ci własny dostęp. Jeśli to możliwe, zachowaj drugą drogę wejścia, taką jak konsola dostawcy lub IP-KVM, i preferuj pokazane poniżej opcje bezpiecznego stosowania zmian.

Tworzenie skryptu adresów

Krótki skrypt dodaje zakres adresów w jednym przebiegu. Utwórz go w /usr/local/sbin:

nano /usr/local/sbin/extra-ips.sh

Wklej poniższy skrypt. Zastąp nazwę interfejsu, prefiks i zakres blokiem przydzielonym Tobie. Adresy poniżej używają zakresu dokumentacyjnego z RFC 5737 i są wartościami zastępczymi:

#!/bin/bash set -euo pipefail # Interfejs, ktory bedzie przenosil dodatkowe adresy. IFACE="ens3" # Wspolny prefiks oraz pierwsza i ostatnia wartosc oktetu hosta. # Zastap je blokiem przydzielonym Tobie. PREFIX="203.0.113" FIRST=10 LAST=60 # Zatrzymaj sie wczesnie z czytelnym komunikatem, jesli nazwa interfejsu jest bledna. if ! ip link show "$IFACE" >/dev/null 2>&1; then echo "Nie znaleziono interfejsu $IFACE. Sprawdz nazwe poleceniem: ip -br addr show" >&2 exit 1 fi for HOST in $(seq "$FIRST" "$LAST"); do ip addr replace "${PREFIX}.${HOST}/32" dev "$IFACE" done

Info: Adresy używają prefiksu /32 celowo. Interfejs podstawowy ma już trasę dla swojej podsieci, więc każdy adres dodatkowy potrzebuje jedynie lokalnej trasy hosta. Prefiks /32 zapobiega dodawaniu przez jądro zduplikowanej trasy podsieci i utrzymuje tablicę routingu w czystości. Skrypt używa ip addr replace zamiast ip addr add, dzięki czemu można go bezpiecznie uruchomić ponownie bez zgłaszania błędu dla adresów, które już istnieją.

Nadaj skryptowi uprawnienia do wykonywania. Zwróć uwagę na pełną ścieżkę, której brakowało w poprzedniej wersji tego przewodnika:

chmod +x /usr/local/sbin/extra-ips.sh

Utrwalanie adresów za pomocą usługi systemd

Ręczne uruchomienie skryptu dodaje adresy tylko do następnego ponownego uruchomienia. Aby stosować je automatycznie przy starcie, utwórz usługę systemd, która uruchamia skrypt podczas rozruchu. Ta metoda działa tak samo, niezależnie od tego, czy system używa netplan, systemd-networkd czy starszego stosu ifupdown.

Utwórz plik jednostki:

nano /etc/systemd/system/extra-ips.service

Dodaj poniższą zawartość:

[Unit] Description=Assign additional IP addresses After=network-online.target Wants=network-online.target [Service] Type=oneshot ExecStart=/usr/local/sbin/extra-ips.sh RemainAfterExit=yes [Install] WantedBy=multi-user.target

Przeładuj systemd i włącz usługę, aby uruchamiała się teraz oraz przy każdym rozruchu:

systemctl daemon-reload systemctl enable --now extra-ips.service

Potwierdź, że usługa uruchomiła się poprawnie:

systemctl status --no-pager extra-ips.service

Ostrzeżenie: Adresy dodane przez ten skrypt nie są częścią konfiguracji netplan ani systemd-networkd. Późniejsze netplan apply, networkctl reconfigure lub dowolne ponowne uruchomienie sieci może je usunąć. Wracają przy następnym rozruchu lub natychmiast po uruchomieniu systemctl restart extra-ips.service. Jeśli adresy mają pozostać również po rekonfiguracji sieci, użyj zamiast tego metody netplan opisanej poniżej.

Alternatywa: definiowanie adresów w netplan

W Ubuntu, gdzie netplan jest rozwiązaniem domyślnym, adresy można zadeklarować bezpośrednio w netplan. Stos sieciowy traktuje je wówczas jako adresy zarządzane, więc przetrwają rekonfigurację. Nadaje się to do małej, stałej listy. Dla dużego zakresu usługa systemd opisana powyżej skaluje się lepiej, ponieważ netplan wymaga jednej linii na adres.

Gdy wiele plików netplan definiuje ten sam interfejs, ich ustawienia mogą się nadpisywać lub łączyć w nieoczekiwany sposób, co może usunąć Twój adres podstawowy i odciąć dostęp. Edycja istniejącego pliku konfiguracyjnego jest zwykle bezpieczniejsza niż tworzenie kolejnego pliku dla tego samego interfejsu. Otwórz plik, który już konfiguruje Twój interfejs, zazwyczaj /etc/netplan/50-cloud-init.yaml lub /etc/netplan/00-installer-config.yaml:

ls /etc/netplan/ nano /etc/netplan/50-cloud-init.yaml

Zachowaj wszystkie istniejące ustawienia interfejsu, takie jak dhcp4, adres podstawowy, bramę i serwery nazw. Dodaj dodatkowe adresy pod listą addresses na tym samym interfejsie. Poniższy przykład zachowuje DHCP dla adresu podstawowego i dodaje trzy adresy dodatkowe:

network: version: 2 ethernets: ens3: dhcp4: true addresses: - 203.0.113.10/32 - 203.0.113.11/32 - 203.0.113.12/32

Nowsze wersje netplan ostrzegają, jeśli plik jest czytelny dla innych użytkowników. Ogranicz uprawnienia, aby usunąć to ostrzeżenie:

chmod 600 /etc/netplan/50-cloud-init.yaml

Przetestuj zmianę za pomocą netplan try. Stosuje on konfigurację i automatycznie ją wycofuje po 120 sekundach, jeśli jej nie potwierdzisz, co chroni Cię przed utratą zdalnego dostępu:

netplan try

Jeśli połączenie pozostaje aktywne i wszystko wygląda poprawnie, potwierdź po wyświetleniu monitu, a następnie zastosuj konfigurację na stałe:

netplan apply

Weryfikacja wyniku

Wyświetl adresy aktualnie powiązane z interfejsem i potwierdź, że nowe są obecne:

ip -br addr show ens3

Dodatkowe adresy powinny teraz pojawić się w danych wyjściowych i będą automatycznie przywracane po każdym ponownym uruchomieniu.

Usuwanie adresów

Aby usunąć pojedynczy adres, usuń go z interfejsu:

ip addr del 203.0.113.10/32 dev ens3

Jeśli użyłeś skryptu i usługi, zatrzymaj przypisywanie całego zakresu przy rozruchu, wyłączając i usuwając usługę:

systemctl disable --now extra-ips.service rm /etc/systemd/system/extra-ips.service systemctl daemon-reload

Jeśli użyłeś netplan, usuń dodatkowe linie z listy addresses w pliku netplan, a następnie uruchom netplan apply.

Rozwiązywanie problemów

Jeśli usługa się nie uruchamia, sprawdź jej stan i logi:

systemctl status --no-pager extra-ips.service journalctl -u extra-ips.service

Potwierdź następujące kwestie:

  • nazwa interfejsu w skrypcie odpowiada rzeczywistej nazwie z ip -br addr show;
  • adresy należą do bloku przydzielonego Tobie;
  • skrypt ma uprawnienia do wykonywania.

Jeśli przez pomyłkę użyłeś prefiksu /24 zamiast /32, tablica routingu pokaże ten objaw w postaci kilku zduplikowanych tras podsieci. Sprawdź ją za pomocą:

ip route

Ten przewodnik koncentruje się na IPv4. Podobnie jak w przypadku IPv4, dodatkowe adresy IPv6 są zwykle dodawane jako adresy hosta z prefiksem /128, przy użyciu tego samego polecenia ip addr replace, na przykład ip addr replace 2001:db8::10/128 dev ens3.

VAT

  • Other

    Ex. VAT

    0%
  • austria

    Austria

    20%
  • Belgium

    Belgium

    21%
  • Bulgaria

    Bulgaria

    20%
  • Croatia

    Croatia

    25%
  • Cyprus

    Cyprus

    19%
  • Czech Republic

    Czech Republic

    21%
  • Denmark

    Denmark

    25%
  • Estonia

    Estonia

    22%
  • France

    France

    20%
  • Finland

    Finland

    24%
  • Germany

    Germany

    19%
  • Greece

    Greece

    24%
  • Hungary

    Hungary

    27%
  • Ireland

    Ireland

    23%
  • Italy

    Italy

    22%
  • Latvia

    Latvia

    21%
  • Lithuania

    Lithuania

    21%
  • Luxembourg

    Luxembourg

    17%
  • Malta

    Malta

    18%
  • Netherlands

    Netherlands

    21%
  • Poland

    Poland

    23%
  • Portugal

    Portugal

    23%
  • Romania

    Romania

    19%
  • Slovakia

    Slovakia

    20%
  • Slovenia

    Slovenia

    22%
  • Spain

    Spain

    21%
  • Sweden

    Sweden

    25%
  • USA

    USA

    0%
european
states
  • germany
  • Español
  • Italiano
  • Poland
  • Русский
  • Slovenski
  • Türkçe
  • ukraine
  • kingdom
  • French
  • Hrvatska
  • Other
  • Austria
  • Belgium
  • Bulgaria
  • Croatia
  • Cyprus
  • Czech Republic
  • Denmark
  • Estonia
  • Finland
  • France
  • Germany
  • Greece
  • Hungary
  • Ireland
  • Italy
  • Latvia
  • Lithuania
  • Luxembourg
  • Malta
  • Netherlands
  • Poland
  • Portugal
  • Romania
  • Slovakia
  • Slovenia
  • Spain
  • Sweden
  • USA