Skip to main content

Wprowadzenie do IPv6 na NSIS Cloud

IPv6 jest najnowszą wersją protokołu internetowego, który zapewnia znacznie większą liczbę adresów IP w porównaniu z obecnie używanym systemem IPv4. To Rozszerzenie jest kluczowe dla zapewnienia połączenia z Internetem coraz większej liczby urządzeń. IPv6 jest przydatny dla:

  • rozwinięcia IoT (Internetu rzeczy)

  • rozwinięcia 5G i kolejnych wersji

  • rozwiązanie problemu wyczerpywania się adresów IPv4

  • chmury obliczeniowej, sieci wielochmurowych

  • zwiększenia bezpieczeństwa sieci

  • usprawnienia doświadczenia mobilnego

  • umożliwienia tworzenia większych sieci domowych i firmowych

i tak dalej.

Co obejmuje ten artykuł?

  • Niektóre przypadki użycia IPv6 – przegląd techniczny

    • Sieci prywatne

    • Sieci publiczne

    • Single/Dual stack

    • Grupy bezpieczeństwa

    • Przypisanie adresu

  • Usługi Load Balancer i dual-stack

  • Konfigurowanie dostępu do sieci zewnętrznej dla IPv6

  • Tworzenie sieci IPv6 z routerem

    • Wymagania wstępne

    • Krok 1: Tworzenie sieci

    • Krok 2: Tworzenie podsieci

    • Krok 3: Wdrożenie routerów

    • Krok 4: Konfigurowanie bramy zewnętrznej dla routerów

    • Krok 5: Integracja podsieci z routerem

  • Ważne rozważania

Wymagania wstępne

Nr 1 Konto

Potrzebujesz konta hostingowego NSIS Cloud z dostępem do interfejsu Horizon: https://horizon.cloudferro.com.

Nr 2 Klient OpenStack CLI

Jeśli chcesz komunikować się z chmurą NSIS Cloud przy użyciu klienta OpenStack CLI, musisz go zainstalować. Sprawdź jeden z tych artykułów:

Po zainstalowaniu oprogramowania musisz sie uwierzytelnić, aby zacząć je używać: Jak aktywować dostęp OpenStack CLI do chmury NSIS przy użyciu uwierzytelniania dwuskładnikowego

Aby przetestować, czy polecenie openstack działa, wyświetl listę flavorów:

openstack flavor list

Jeśli wyświetli się lista flavorów w taki sposób:

../_images/Screenshot_20241014_112929.png

to potwierdzi prawidłowe działanie.

Niektóre przypadki użycia IPv6 – przegląd techniczny

Każda sieć, w tym również sieci wcześniej utworzone, może mieć dołączoną podsieć IPv6, podobnie jak sieć IPv4.

Sieci prywatne

Zakres adresów IPv6 dla sieci prywatnych obejmuje fc00::/7, co sprawia, że każda podsieć /64 w tym zakresie jest nie tylko doskonałym wyborem, ale również najbardziej zalecanym wyborem dla prefiksów sieci lokalnych.

Na przykład, sieć może być skonfigurowana z zapamiętanym adresem, jak fc00:abcd:1234:1::/64. Zwykle brama sieci znajduje się pod pierwszym adresem podsieci (pod :1), i jest niezmiernie ważne, aby ta brama była aktywna, aby wspierać każdą formę automatycznego przypisywania adresów, taką jak SLAAC.

Chociaż jest możliwe użycie innych prefiksów IPv6, w tym takich, które są publicznie routowalne, w sieciach prywatnych, te adresy nie będą widoczne z Internetu. W rezultacie, prywatna sieć IPv6 nie będzie miała dostępu do Internetu.

Sieci publiczne

Aby utworzyć publiczną sieć IPv6, wykorzystaj adresy z podanej puli podsieci, którą można wybrać za pomocą interfejsu Horizon lub za pomocą opcji –subnet-pool w interfejsie wiersza poleceń (CLI).

Po wybraniu odpowiedniej podsieci utwórz sieć tenant’ową i połącz ją z routerem, który ma bramę w jednej z naszych sieci zewnętrznych.

Ważne jest, aby zauważyć, że wszystkie sieci IPv6 z dostępem do Internetu są publicznie widoczne. Dlatego unikaj podłączania serwerów z grupami dostępu o dużej elastyczności do sieci publicznych, chyba że jest to konieczne.

Single/Dual stack

Pomimo wsparcia single stack dla sieć IPv6, zaleca się dołączenie tej sieci IPv4 podczas konfiguracji i przez cały okres istnienia maszyny wirtualnej.

To zapewnia kompatybilność i pozwala usługom takim jak cloud-init działać poprawnie.

Grupy bezpieczeństwa

Grupy bezpieczeństwa IPv6 są w pełni obsługiwane, ale wymagają dodatkowych reguł w porównaniu z IPv4, w tym reguły „Any host” ustawionej na ::/0, aby objąć wszystkie adresy IPv6.

Podczas dodawania interfejsów do serwera, bądź ostrożny wobec grup bezpieczeństwa przypisanych do każdego portu, ponieważ nowy port może nie odziedziczyć wszystkich grup bezpieczeństwa z serwera.

Przypisanie adresu

Zalecane ustawienie dla przypisywania adresu to SLAAC za pomocą formatu EUI-64. To ustawienie MUSI być jawnie skonfigurowane, ponieważ w przeciwnym razie domyślnie będzie ustawione na „None”.

Istnieją następujące tryby:

SLAAC (eui-64) ZALECANE

Router bramy wysyła RA zawierające prefiks sieci, aby maszyny wirtualne mogły obliczyć swoje adresy za pomocą algorytmu eui-64.

Ważne jest, aby zauważyć, że jakikolwiek inny algorytm lub rozszerzenie prywatności eui-64 złamie funkcjonalność - musi to być dokładnie eui-64 bez prywatności.

SLAAC(external)

Istnieje dla określonych przypadków użycia poza zakresem tego artykułu.

DHCPv6 stateful

Klasyczny DHCP, obsługiwany w wielu obrazach jako domyślna opcja.

DHCPv6 stateless

Połączenie SLAAC i DHCP - router zapewnia prefiks, DHCP zapewnia dodatkowe opcje, takie jak DNS.

Usługi Load Balancer i dual-stack

Usługi Load Balancer w OpenStack nie mogą obsługiwać dual-stack Virtual IPs na jednej instancji. Jeśli potrzebne są front-endy IPv4 i IPv6, wymagane są dwie oddzielne usługi równoważenia obciążenia, każda połączona z odpowiednią podsiecią. Dodatkowo, w sieciach dual-stack, usługi równoważenia obciążenia mogą obsługiwać członków puli za pomocą IPv4 i IPv6. Mogą również zawierać członków puli z sieci zewnętrznych, które są routowalne.

Konfigurowanie dostępu do sieci zewnętrznej dla IPv6

Poniżej znajduje się krok-po-kroku instrukcja, jak skonfigurować dostęp zewnętrzny dla sieci IPv6 przy użyciu OpenStack:

Krok 1.

Sprawdź, czy neutron-server ma wszystkie niezbędne poprawki, aby obsługiwać funkcjonalność IPv6.

Krok 2.

Utwórz podsieć IPv6 jako podsieć podstawową w sieci zewnętrznej. Podsieć ta będzie obsługiwać ruch zewnętrzny IPv6, zapewniając bramę do Internetu. Użyj następującego polecenia, aby utworzyć podsieć:

openstack subnet create \
--network external \
--tag external \
--subnet-pool external-ipv6-pool \
--gateway "<addr>::1" \
--dhcp --ip-version 6 \
--ipv6-ra-mode slaac \
--ipv6-address-mode \
slaac external-ipv6
Krok 3.

Dodaj pule podsieci IPv6. Konfigurowanie puli podsieci jest niezbędne do zarządzania przydzielaniem adresów IPv6 w sieci zewnętrznej.

openstack subnet pool create \
--pool-prefix "<addr>::/48" \
--min-prefix-length 64 \
--max-prefix-length 64 \
--default --share \
--description "GUA publiczne adresy IPv6" \
external-ipv6-pool

Tworzenie sieci IPv6 z routerem

Krok 1: Tworzenie sieci

Rozpocznij tworzenie sieci, wykonując następujące polecenie:

openstack network create ipv6-network

Krok 2: Tworzenie podsieci

Ustaw konfigurację podsieci, aby określić alokację adresów dla sieci.

openstack subnet create \
--ip-version 6 \
--ipv6-ra-mode slaac \
--ipv6-address-mode slaac \
--use-default-subnet-pool \
--network ipv6-network \
ipv6-subnet

Krok 3: Wdrażanie routerów

Włącz funkcje routingowe w ramach infrastruktury sieciowej, aby umożliwić komunikację między podsieciami.

openstack router create router1

Krok 4: Konfigurowanie bramy zewnętrznej dla routerów

Skonfiguruj router, aby nawiązał połączenie z siecią zewnętrzną, uzyskując dostęp poza środowiskiem lokalnym.

openstack router set router1 --external-gateway external

Krok 5: Integracja podsieci z routerem

Zintegruj nowo utworzoną podsiec z routerem, aby zapewnić płynną komunikację urządzeń w sieci.

openstack router add subnet router1 ipv6-subnet

Po wykonaniu opisanych kroków wyniki można wyświetlić przy użyciu interfejsu Horizon.

../_images/image_2024-04-24-15-13-21.png

Ważne uwagi

Przed przystąpieniem do implementacji należy zwrócić uwagę na następujące kwestie:

  1. Adresy HTTP(s): Upewnij się, że adresy IPv6 używane w adresach URL są otoczone nawiasami kwadratowymi, aby odróżnić adres od numeru portu.

    http://[fd00:dead:beef:64:34::2]:80
    
  2. Adresy link-local: Każdemu interfejsowi w sieci IPv6 automatycznie przypisywany jest adres link-local. Adresy te są kluczowe dla komunikacji lokalnej, a określenie interfejsu podczas ich używania jest ważne, aby zapewnić jasną i skierowaną interakcję sieciową. Przykład:

    fe80::a9fe:a9fe%eth0
    
  3. Zakres prywatny: Zakres prywatny dla IPv6 to fc00::/7.

  4. Adres link-local: Adres link-local (fe80::) jest kluczowy dla funkcjonalności protokołu IPv6 i jest zawsze obecny na interfejsach sieciowych.

  5. Podsieciowanie sieci: Używaj sieci /64 dla podsieci, chyba że masz uzasadniony powód, aby tego nie robić. To standaryzowanie zapewnia odpowiednią funkcjonalność i kompatybilność IPv6.

  6. Konfiguracja SLAAC: EUI64 bez rozszerzeń prywatnych jest zalecany w naszym SLAAC. Inna metoda nie zadziała, ponieważ adres musi być taki sam, jak ten wyświetlany przez OpenStack w poleceniu server show. Wynika to z bezpieczeństwa portu.

  7. Bezpieczeństwo portu i usługa Metadata6: Wyłączenie bezpieczeństwa portu może zakłócić działanie usługi Metadata6. Usługa ta nasłuchuje na adresie link-local fe80::a9fe:a9fe%interface, wymagając określonego interfejsu wskazującego. Jest to niezbędne do kompatybilności źródła cloud-init OpenStack, chociaż nie działa dla źródła EC2.

  8. Konfiguracja DNS: W przypadku implementacji z pojedynczym stackiem IPv6 wymagana jest ręczna konfiguracja DNS dla instancji, aby zapewnić poprawne rozwiązywanie nazw.

  9. Rekomendacja dotycząca dual-stack: Zdecydowanie zalecamy wdrożenia dual-stack, nawet z podsiecią prywatną IPv4 stub. Dual-stack oferuje prostotę konfiguracji i zapewnia kompatybilność z różnymi typami obrazów.

  10. Grupy zabezpieczeń domyślnych: W chwili obecnej domyślne grupy zabezpieczeń nie zezwalają na ruch przychodzący IPv6. Upewnij się, że wymagania dotyczące ruchu IPv6 są odpowiednio uwzględnione.