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 wyjaśnia dwa sposoby przypisania wielu adresów IPv4 do jednego interfejsu sieciowego w Debianie 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 muszą przetrwać zarówno rekonfigurację sieci, jak i ponowne uruchomienie.

Obie metody sprawiają, że konfiguracja jest trwała między ponownymi uruchomieniami. Przeczytaj uwagę na końcu każdej metody, aby wybrać tę, która pasuje do twojego przypadku.

Kiedy potrzebujesz wielu adresów IP

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

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

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

Zanim zaczniesz

Potrzebujesz dostępu root oraz nazwy interfejsu, który będzie obsługiwał 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 listę interfejsów wraz z ich bieżącymi adresami i zidentyfikuj ten, który już zawiera twój główny adres:

ip -br addr show

Wynik pokazuje wpisy takie jak ens3, enp1s0 czy eth0 obok adresów już na nich skonfigurowanych. Interfejs, który już obsługuje twój główny adres IP, to ten, którego należy użyć w poniższych krokach. Przykłady tutaj wykorzystują ens3.

Warning

Te kroki zmieniają konfigurację sieci na serwerze, do którego najprawdopodobniej łączysz się przez SSH. Błąd może odciąć twój własny dostęp. Zachowaj drugi sposób dostępu, jeśli go masz, na przykład konsolę dostawcy lub IP-KVM, i preferuj bezpieczne opcje stosowania zmian pokazane poniżej.

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 przypisanym do ciebie. Poniższe adresy wykorzystują zakres dokumentacyjny z RFC 5737 i są jedynie symbolami zastępczymi:

#!/bin/bash set -euo pipefail # Interface that will carry the additional addresses. IFACE="ens3" # Common prefix and the first and last value of the host octet. # Replace these with the block assigned to you. PREFIX="203.0.113" FIRST=10 LAST=60 # Stop early with a clear message if the interface name is wrong. if ! ip link show "$IFACE" >/dev/null 2>&1; then echo "Interface $IFACE not found. Check the name with: 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 celowo używają prefiksu /32. Interfejs główny posiada już trasę dla swojej podsieci, więc każdy adres dodatkowy potrzebuje tylko lokalnej trasy hosta. Prefiks /32 zapobiega dodaniu przez jądro zduplikowanej trasy podsieci i utrzymuje porządek w tabeli routingu. Skrypt używa ip addr replace zamiast ip addr add, dzięki czemu można go bezpiecznie uruchomić ponownie bez błędów dla adresów, które już istnieją.

Nadaj skryptowi uprawnienia do wykonywania. Zwróć uwagę na pełną ścieżkę, która była elementem brakującym w poprzedniej wersji tego przewodnika:

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

Utrwalenie 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 systemu, 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 następującą 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 uruchomiła się teraz oraz przy każdym starcie:

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

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

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

Warning

Adresy dodane przez ten skrypt nie są częścią konfiguracji netplan ani systemd-networkd. Późniejsze netplan apply, networkctl reconfigure lub jakikolwiek restart sieci może je usunąć. Wracają one przy następnym ponownym uruchomieniu lub natychmiast, jeśli uruchomisz systemctl restart extra-ips.service. Jeśli adresy muszą pozostać na miejscu również podczas rekonfiguracji sieci, użyj zamiast tego metody netplan opisanej poniżej.

Alternatywa: definiowanie adresów w netplan

W Ubuntu, gdzie netplan jest domyślnym rozwiązaniem, adresy można zadeklarować bezpośrednio w netplan. Stos sieciowy traktuje je wtedy jako adresy zarządzane, dzięki czemu przetrwają rekonfigurację. Sprawdza się to w przypadku małej, stałej listy. Dla dużego zakresu opisana wyżej usługa systemd 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 główny adres i odciąć dostęp. Edytowanie istniejącego pliku konfiguracyjnego jest zwykle bezpieczniejsze niż tworzenie kolejnego pliku dla tego samego interfejsu. Otwórz plik, który już konfiguruje twój interfejs, zwykle /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 główny, bramę i serwery nazw. Dodaj dodatkowe adresy pod listą addresses dla tego samego interfejsu. Poniższy przykład zachowuje DHCP dla adresu głównego 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

Najnowsze wersje netplan ostrzegają, jeśli plik jest odczytywalny przez 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. Polecenie to stosuje konfigurację i automatycznie wycofuje ją 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 listę adresów obecnie przypisanych do interfejsu i potwierdź, że nowe adresy są obecne:

ip -br addr show ens3

Dodatkowe adresy powinny teraz pojawić się w wyniku 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 starcie, 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

Sprawdź, czy:

  • nazwa interfejsu w skrypcie zgadza się z rzeczywistą nazwą uzyskaną z ip -br addr show;
  • adresy należą do bloku przypisanego do ciebie;
  • skrypt ma uprawnienia do wykonywania.

Jeśli przez pomyłkę użyto prefiksu /24 zamiast /32, w tabeli routingu objawia się to jako kilka zduplikowanych tras podsieci. Sprawdź to 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