Konfiguracja protokołu IPv6 na serwerach VPS i serwerach dedykowanych
Poziom: Początkujący / Średnio zaawansowany
Szacowany czas: ~30 minut
Cel: Włączyć i skonfigurować sieć IPv6 na serwerze dedykowanym lub VPS, aby serwer był dostępny przez IPv6, a wszystkie usługi sieciowe działały poprawnie z nowym adresem.
Wprowadzenie
Do Twojego serwera INTROSERV prawdopodobnie jest już przypisany adres IPv6 – po prostu nie jest jeszcze skonfigurowany. W tym poradniku konfiguracji sieci IPv6 na VPS włączysz IPv6 na serwerze z Linuksem, przypiszesz statyczny adres IPv6, skonfigurujesz bramę IPv6 w systemie Linux i sprawdzisz łączność. Poradnik obejmuje Ubuntu (Netplan), Debian (/etc/network/interfaces) i AlmaLinux (nmcli).
Czym jest IPv6?
IPv6 (Internet Protocol version 6) to obecna generacja protokołu internetowego, zaprojektowana jako następca IPv4. Najważniejsze praktyczne różnice dla administratorów serwerów:
- Adres IPv6 ma 128 bitów i jest zapisywany jako osiem grup po cztery cyfry szesnastkowe oddzielonych dwukropkami:
2001:db8:85a3::8a2e:370:7334. - Global Unicast Address (GUA) to odpowiednik publicznego adresu IPv4 w IPv6, routowalny w internecie. Twój VPS otrzyma taki adres.
- Adres link-local jest automatycznie przypisywany każdemu interfejsowi obsługującemu IPv6 (prefiks
fe80::/10). Nie jest routowalny poza segment lokalny, ale jest wymagany do wykrywania sąsiadów (neighbor discovery) i przez protokoły routingu. - Podsieć (prefiks IPv6) określa, która część adresu identyfikuje sieć. Na typowym VPS zobaczysz prefiks
/64lub/128. - Brama domyślna (IPv6) to router, do którego serwer wysyła pakiety, gdy cel nie znajduje się w łączu lokalnym. Ten adres poda Twój dostawca.
Wymagania wstępne
Zanim zaczniesz, upewnij się, że spełnione są następujące warunki:
- System operacyjny: Ubuntu 20.04/22.04/24.04 LTS, Debian 11/12/13 lub AlmaLinux/RHEL 8/9/10
- Dostęp: dostęp sudo lub root do serwera przez SSH
- Przydział IPv6: adres IPv6, prefiks podsieci i brama domyślna dostarczone przez dostawcę hostingu. Znajdziesz je w panelu klienta przed rozpoczęciem pracy.
- Wymagana wiedza: swobodne posługiwanie się wierszem poleceń Linuksa i podstawowa edycja plików konfiguracyjnych
W INTROSERV przypisany adres IPv6, prefiks i bramę znajdziesz w Client Area: przejdź do swojej usługi, a następnie otwórz kartę Network lub IP Addresses. Plany VPS INTROSERV zwykle otrzymują prefiks /112, a serwery dedykowane – prefiks /64. Jeśli nie widać żadnego adresu IPv6, skontaktuj się z pomocą techniczną INTROSERV, aby poprosić o przydział.
Krok 1: Sprawdź aktualny stan IPv6
Zanim zmienisz jakąkolwiek konfigurację, sprawdź, co kernel już wie.
Uruchom:
ip -6 addr show
Oczekiwany wynik na serwerze, na którym nie zastosowano jeszcze żadnej konfiguracji IPv6:
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 state UNKNOWN inet6 ::1/128 scope host valid_lft forever preferred_lft forever 2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 state UP inet6 fe80::250:56ff:fe00:1/64 scope link valid_lft forever preferred_lft forever
Adres fe80:: to adres link-local, przypisywany automatycznie przez kernel niezależnie od konfiguracji. Brak wpisu z scope global oznacza, że nie skonfigurowano jeszcze żadnego Global Unicast Address.
Sprawdź także, czy IPv6 jest włączony w kernelu:
sudo sysctl net.ipv6.conf.all.disable_ipv6
W Debianie 13 zwykli użytkownicy nie mają /usr/sbin w zmiennej $PATH, więc uruchomienie sysctl bez sudo zwróci command not found. Ponadto minimalna instalacja Debiana 13 domyślnie nie zawiera sudo. Przed kontynuacją musisz przełączyć się na użytkownika root (su -), zainstalować sudo (apt install sudo) i dodać swojego użytkownika do grupy sudoers.
Oczekiwany wynik:
net.ipv6.conf.all.disable_ipv6 = 0
Wartość 0 oznacza, że IPv6 jest włączony. Jeśli widzisz 1, IPv6 został wyłączony na poziomie kernela.
Aby włączyć go ponownie tymczasowo:
sudo sysctl -w net.ipv6.conf.all.disable_ipv6=0
Aby zmiana była trwała, poszukaj w /etc/sysctl.conf lub w plikach w /etc/sysctl.d/ wiersza net.ipv6.conf.all.disable_ipv6 = 1, usuń go lub zakomentuj, a następnie uruchom:
sudo sysctl -p
Krok 2: Ustal nazwę interfejsu
Przed edycją jakiegokolwiek pliku konfiguracyjnego potrzebujesz dokładnej nazwy publicznego interfejsu sieciowego.
Uruchom:
ip -br link
Oczekiwany wynik:
lo UNKNOWN 00:00:00:00:00:00 <LOOPBACK,UP,LOWER_UP> eth0 UP 00:50:56:00:00:01 <BROADCAST,MULTICAST,UP,LOWER_UP>
Interfejs w stanie UP z adresem MAC to Twój interfejs główny. Typowe nazwy to eth0, ens3, ens18, ens33, ens160 (częste w VMware i nowoczesnych kernelach) oraz podobne warianty ensXX/enpXsX. We wszystkich poniższych krokach konfiguracji używaj dokładnie tej nazwy, którą pokazuje ip -br link.
Krok 3: Skonfiguruj statyczny adres IPv6
Metoda konfiguracji zależy od dystrybucji. Ubuntu 18.04 i nowsze używają Netplan, Debian domyślnie używa /etc/network/interfaces, a AlmaLinux korzysta z NetworkManager lub skryptów interfejsów w /etc/sysconfig/network-scripts/.
Zanim przejdziesz dalej, zbierz z panelu dostawcy następujące wartości:
| Pole | Przykład |
|---|---|
| Adres IPv6 | 2001:db8:1000::10 |
| Długość prefiksu | 64 |
| Brama domyślna (IPv6) | 2001:db8:1000::1 |
W poniższych krokach zastąp te przykładowe wartości rzeczywistymi.
3.1 Ubuntu (Netplan)
Ubuntu używa konfiguracji IPv6 w Netplan. Pliki konfiguracyjne znajdują się w /etc/netplan/.
Najpierw wyświetl zawartość katalogu /etc/netplan/, aby znaleźć swój plik konfiguracyjny:
ls /etc/netplan/
Na większości VPS nie istnieje z góry ustalona nazwa pliku, taka jak 00-installer-config.yaml. W obrazach z cloud-init plik nazywa się zwykle 50-cloud-init.yaml. W poniższych krokach użyj rzeczywistej nazwy pliku ustalonej poprzednim poleceniem.
Utwórz kopię zapasową istniejącego pliku (zastąp 50-cloud-init.yaml rzeczywistą nazwą pliku):
sudo cp /etc/netplan/50-cloud-init.yaml /etc/netplan/50-cloud-init.yaml.bak
Otwórz plik:
sudo nano /etc/netplan/50-cloud-init.yaml
Dodaj bloki addresses i routes pod swoim interfejsem. Kompletny plik z IPv4 (już skonfigurowanym) i nowym statycznym adresem IPv6 wygląda tak:
network: version: 2 ethernets: eth0: addresses: - 203.0.113.10/24 # existing IPv4 address - 2001:db8:1000::10/64 # new IPv6 address routes: - to: default via: 203.0.113.1 # existing IPv4 gateway - to: default via: 2001:db8:1000::1 # IPv6 default gateway nameservers: addresses: - 8.8.8.8 - 2001:4860:4860::8888 # Google public DNS over IPv6
Jeśli serwer otrzymuje adres IPv4 przez DHCP (co jest częste w wielu świeżo utworzonych VPS), Twój plik będzie wyglądać nieco inaczej. Nie kopiuj bezmyślnie powyższej statycznej konfiguracji IPv4, bo stracisz działające połączenie IPv4. Oto przykład z dhcp4: true:
network: version: 2 ethernets: eth0: dhcp4: true addresses: - 2001:db8:1000::10/64 # new IPv6 address routes: - to: default via: 2001:db8:1000::1 # IPv6 default gateway nameservers: addresses: - 2001:4860:4860::8888 # Google public DNS over IPv6
Netplan używa YAML. Wcięcia mają znaczenie: używaj spacji, nigdy tabulatorów. Jedna źle wyrównana linia może sprawić, że konfiguracja zawiedzie bez komunikatu lub nie zostanie zastosowana.
Przetestuj konfigurację przed jej zastosowaniem:
sudo netplan try
netplan try stosuje konfigurację z 120-sekundowym licznikiem czasu. Jeśli jej nie potwierdzisz, zostanie automatycznie cofnięta, więc polecenie jest bezpieczne przez SSH. Jeśli wynik wygląda poprawnie, potwierdź:
# Press Enter when prompted, or type: sudo netplan apply
Podczas pracy przez SSH zawsze używaj netplan try zamiast netplan apply. Jeśli nowa konfiguracja przerwie połączenie, automatyczne cofnięcie przywróci Ci dostęp.
3.2 Debian (/etc/network/interfaces)
W Debianie klasyczny sposób dodania IPv6 w /etc/network/interfaces polega na dodaniu drugiej sekcji iface dla tego samego interfejsu z rodziną adresów inet6.
Najpierw utwórz kopię zapasową:
sudo cp /etc/network/interfaces /etc/network/interfaces.bak
Otwórz plik:
sudo nano /etc/network/interfaces
Istniejący blok IPv4 wygląda mniej więcej tak:
auto eth0 iface eth0 inet static address 203.0.113.10 netmask 255.255.255.0 gateway 203.0.113.1
Dodaj sekcję IPv6 bezpośrednio pod nim:
iface eth0 inet6 static address 2001:db8:1000::10 netmask 64 gateway 2001:db8:1000::1
Nie dodawaj drugiego wiersza auto eth0. Pojedyncza dyrektywa auto uruchamia zarówno sekcję inet, jak i inet6 podczas inicjalizacji interfejsu.
Zastosuj nową konfigurację bez pełnego restartu:
sudo ifdown eth0 && sudo ifup eth0
Uruchomienie ifdown eth0 przez SSH zrywa połączenie. Wykonaj to polecenie z konsoli szeregowej/webowej dostawcy lub użyj ifreload -a. Pamiętaj, że ifreload -a wymaga pakietu ifupdown2, który nie jest dołączony do podstawowej instalacji Debiana. Zainstaluj go poleceniem sudo apt install ifupdown2, aby przeładowywać interfejsy bez zrywania aktywnych sesji.
3.3 AlmaLinux / RHEL (nmcli)
W AlmaLinux i RHEL 8/9 domyślnie działa NetworkManager. Użyj nmcli, aby dodać adres IPv6 bez ręcznej edycji plików.
Sprawdź nazwę swojego połączenia:
nmcli connection show
Oczekiwany wynik:
NAME UUID TYPE DEVICE eth0 5fb06bd0-0bb0-7ffb-45f1-d6edd65f3e03 ethernet eth0
Dodaj statyczny adres IPv6:
sudo nmcli connection modify eth0 \ ipv6.method manual \ ipv6.addresses "2001:db8:1000::10/64" \ ipv6.gateway "2001:db8:1000::1"
Zastosuj konfigurację bez zrywania połączenia SSH:
sudo nmcli device reapply eth0
Krok 4: Przetestuj łączność IPv6
Po zastosowaniu konfiguracji sprawdź, czy adres jest przypisany i czy routing działa.
4.1 Sprawdź, czy adres jest przypisany
ip -6 addr show eth0
Oczekiwany wynik:
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 state UP inet6 2001:db8:1000::10/64 scope global valid_lft forever preferred_lft forever inet6 fe80::250:56ff:fe00:1/64 scope link valid_lft forever preferred_lft forever
Powinieneś zobaczyć swój Global Unicast Address z scope global. Obecny będzie także adres link-local (scope link).
4.2 Sprawdź bramę domyślną
ip -6 route show
Oczekiwany wynik:
2001:db8:1000::/64 dev eth0 proto kernel metric 100 default via 2001:db8:1000::1 dev eth0 proto static metric 100
Wiersz default via potwierdza, że brama domyślna IPv6 jest skonfigurowana poprawnie.
4.3 Przetestuj łączność IPv6
Aby przetestować łączność IPv6 ze znanym hostem publicznym, użyj ping6 (lub ping -6 w nowszych systemach):
ping6 -c 4 2606:4700:4700::1111
Oczekiwany wynik:
PING 2606:4700:4700::1111(2606:4700:4700::1111) 56 data bytes 64 bytes from 2606:4700:4700::1111: icmp_seq=1 ttl=57 time=1.23 ms 64 bytes from 2606:4700:4700::1111: icmp_seq=2 ttl=57 time=1.19 ms 64 bytes from 2606:4700:4700::1111: icmp_seq=3 ttl=57 time=1.21 ms 64 bytes from 2606:4700:4700::1111: icmp_seq=4 ttl=57 time=1.20 ms
Jeśli ping6 nie działa, ale adres jest przypisany, przyczyną są prawie zawsze trzy rzeczy: błędna brama domyślna, blokowanie ICMPv6 przez zaporę dostawcy albo nieaktywowany po stronie dostawcy przydział IPv6.
Łączność możesz też sprawdzić z zewnątrz za pomocą publicznego narzędzia, takiego jak https://ipv6-test.com. Wpisz adres IPv6 swojego serwera i uruchom test osiągalności.
4.4 Sprawdź rozwiązywanie nazw DNS przez IPv6
Najpierw upewnij się, że masz zainstalowane narzędzie dig.
W AlmaLinux 10 dig nie jest dołączony do podstawowej instalacji:
sudo dnf install -y bind-utils
W minimalnych obrazach Debiana pakiet również może być niedostępny:
sudo apt install -y dnsutils
Sprawdź, czy serwer potrafi rozwiązywać nazwy hostów za pomocą serwera DNS przez IPv6:
dig AAAA google.com @2001:4860:4860::8888
Poprawna odpowiedź zawiera ANSWER SECTION z jednym lub kilkoma rekordami AAAA.
Krok 5: Dostosuj zaporę do IPv6
Jeśli na serwerze działa programowa zapora, musisz jawnie zezwolić na ruch IPv6. Domyślnie wiele konfiguracji zapór obejmuje wyłącznie IPv4.
W INTROSERV wszystkie porty są domyślnie otwarte na poziomie sieci dla VPS i serwerów dedykowanych, z niewielką liczbą wyjątków (porty poczty 25, 465, 587, 2525 oraz port LDAP 389 są filtrowane w celu ochrony reputacji adresów IP). Oznacza to, że nie musisz otwierać portów w zaporze po stronie dostawcy dla standardowego ruchu WWW ani SSH. Nadal odpowiadasz za zaporę na poziomie systemu operacyjnego działającą na serwerze. Szczegóły znajdziesz w poradniku Bezpieczeństwo sieci i filtrowanie portów.
Ubuntu/Debian (UFW)
W Debianie UFW nie jest dołączony do podstawowej instalacji. W razie potrzeby zainstaluj go najpierw:
sudo apt install -y ufw
UFW stosuje reguły zarówno do IPv4, jak i IPv6, gdy w jego konfiguracji ustawiono IPV6=yes. Sprawdź:
grep IPV6 /etc/default/ufw
Oczekiwany wynik:
IPV6=yes
Jeśli widnieje IPV6=no, otwórz plik i zmień wartość:
sudo nano /etc/default/ufw
Następnie przeładuj UFW:
sudo ufw reload
Jeśli UFW nie został jeszcze aktywowany, ufw reload zwróci Firewall not enabled. To w porządku; reguły zostaną zastosowane automatycznie, gdy w końcu włączysz zaporę poleceniem sudo ufw enable.
Istniejące reguły ufw allow (SSH, HTTP, HTTPS) będą teraz obowiązywać także dla IPv6.
AlmaLinux / RHEL (firewalld)
firewalld obsługuje IPv6 natywnie w ramach modelu stref. Jeśli interfejs znajduje się we właściwej strefie, ruch IPv6 jest zarządzany automatycznie. Sprawdź:
sudo firewall-cmd --get-active-zones
Dla usług takich jak SSH i HTTPS:
sudo firewall-cmd --permanent --add-service=ssh sudo firewall-cmd --permanent --add-service=https sudo firewall-cmd --reload
Jeśli usługa jest już dozwolona w strefie, firewall-cmd wyświetli Warning: ALREADY_ENABLED. To normalne i nie jest błędem. W AlmaLinux ssh i dhcpv6-client są domyślnie dozwolone w strefie public.
ICMPv6 jest niezbędny do poprawnego działania IPv6. Obsługuje wykrywanie sąsiadów, wykrywanie Path MTU i ogłoszenia routera (router advertisements), czyli odpowiedniki ARP w IPv6. Nie blokuj ICMPv6 w całości. Większość narzędzi zaporowych domyślnie na niego zezwala; jeśli piszesz reguły nftables lub ip6tables ręcznie, jawnie zezwól na icmpv6.
Wycofanie zmian (rollback)
Ubuntu (Netplan)
Przywróć kopię zapasową i zastosuj ją (zastąp 50-cloud-init.yaml rzeczywistą nazwą pliku):
sudo cp /etc/netplan/50-cloud-init.yaml.bak /etc/netplan/50-cloud-init.yaml sudo netplan apply
Debian (/etc/network/interfaces)
Przywróć kopię zapasową:
sudo cp /etc/network/interfaces.bak /etc/network/interfaces sudo ifdown eth0 && sudo ifup eth0
AlmaLinux (nmcli)
Usuń ustawienia IPv6 z połączenia:
sudo nmcli connection modify eth0 ipv6.method auto sudo nmcli connection modify eth0 ipv6.addresses "" ipv6.gateway "" sudo nmcli connection modify eth0 ipv6.method ignore sudo nmcli device reapply eth0
NetworkManager nie pozwala ustawić ipv6.method ignore, dopóki istnieją statyczne ipv6.addresses. Ustawienie najpierw metody auto pozwala prawidłowo wyczyścić adresy.
Wyłączenie IPv6 w całym systemie (sytuacja awaryjna)
Jeśli musisz całkowicie wyłączyć IPv6 na wszystkich interfejsach:
sudo sysctl -w net.ipv6.conf.all.disable_ipv6=1 sudo sysctl -w net.ipv6.conf.default.disable_ipv6=1
Aby zmiana była trwała, dodaj poniższe wpisy do /etc/sysctl.d/99-disable-ipv6.conf:
net.ipv6.conf.all.disable_ipv6 = 1 net.ipv6.conf.default.disable_ipv6 = 1
Następnie uruchom sudo sysctl -p /etc/sysctl.d/99-disable-ipv6.conf.
Rozwiązywanie problemów
Ping6 od razu kończy się błędem „Network unreachable”
Brama domyślna (IPv6) jest nieustawiona lub błędna. Uruchom ip -6 route show i sprawdź, czy wpis default via istnieje i zgadza się z bramą z panelu dostawcy.
Adres jest widoczny, ale scope ma wartość tylko link, a nie global
Adres został dodany do niewłaściwego interfejsu albo w pliku konfiguracyjnym jest literówka w adresie lub prefiksie. Uważnie sprawdź przydział od dostawcy.
Netplan apply zwraca błąd parsowania
Wcięcia YAML są nieprawidłowe. Uruchom cat -A /etc/netplan/50-cloud-init.yaml (lub z rzeczywistą nazwą pliku), aby ujawnić znaki tabulacji (widoczne jako ^I), i zastąp je spacjami.
SSH rozłącza się po ifdown w Debianie
Skorzystaj z konsoli webowej dostawcy lub dostępu VNC/IPMI, aby odzyskać dostęp. Przywróć /etc/network/interfaces z kopii zapasowej i uruchom ifup eth0.
UFW nadal blokuje IPv6 po ustawieniu IPV6=yes
Reguły dodane przed zmianą zostały zapisane tylko dla IPv4. Uruchom sudo ufw reset, a następnie dodaj reguły ponownie – będą już obowiązywać dla obu rodzin adresów.
Polecenie sudo ufw reset jest destrukcyjne. Przywraca wszystkie reguły zapory do wartości domyślnych. Zanim je uruchomisz, upewnij się, które porty trzeba ponownie zezwolić (np. SSH), aby nie zablokować sobie dostępu.
Podsumowanie
To wszystko. Twój serwer INTROSERV ma teraz działający adres IPv6, poprawnie skonfigurowaną bramę domyślną i zaporę obejmującą obie rodziny protokołów. Kolejne kroki: poproś o rekord PTR przez Client Area INTROSERV oraz zaktualizuj hosty wirtualne Nginx lub Apache, aby nasłuchiwały na nowym adresie IPv6.
Wersja dokumentu: 1.0
Ostatnia aktualizacja: maj 2026
Właściciel: Zespół dokumentacji technicznej