Adresowanie IPv6, statyczna część lokalna z prefiksem dynamicznym


10

Router w mojej sieci rozdaje prefiks IPv6 przypisany przez mojego dostawcę usług internetowych. Ten przedrostek jest dynamiczny, ale „dość lepki”.

Chciałbym, aby moje maszyny automatycznie pobierały prefiks reklamowany w RA, ale łączą go z częścią lokalną określoną przez użytkownika, zamiast generować jedną losowo lub na podstawie adresu MAC. Czy jest na to jakiś prosty sposób?


1
Nie widziałem żadnych systemów operacyjnych, które by to umożliwiały :(
Sander Steffann

@SanderSteffann Nigdy nie korzystałeś z Linuksa?
Michael Hampton

1
@Michael Nigdy nie widziałem systemu operacyjnego, który pozwala konfigurować tokeny IID. Technicznie jądro to potrafi, ale nie obsługuje go żaden system operacyjny (jak w dystrybucji) :(
Sander Steffann

Odpowiedzi:


11

Można to zrobić na dwa sposoby. Jedna jest łatwa, a druga trudna.

Najprostszym sposobem jest uruchomienie serwera DHCPv6 w sieci i samodzielne przypisanie adresów hostów do każdego urządzenia. Lub pozwól serwerowi wybrać część hosta; serwery DHCPv6, które widziałem, zachowają tę samą część hosta, nawet jeśli zmieni się prefiks.

Trudnym sposobem jest ip tokenustawienie tokenizowanych identyfikatorów interfejsów. Jest to opisane jako:

Obsługa tokenizowanego identyfikatora interfejsu IPv6 służy do przypisywania dobrze znanych adresów części hosta do węzłów przy jednoczesnym uzyskiwaniu prefiksu sieci globalnej z reklam routera. Podstawowym celem tokenizowanych identyfikatorów są platformy serwerowe, na których adresy są zwykle konfigurowane ręcznie, zamiast używania DHCPv6 lub SLAAC. Korzystając z tokenizowanych identyfikatorów, hosty mogą nadal określać swój prefiks sieciowy za pomocą SLAAC, ale łatwiej jest automatycznie przenumerować go w przypadku zmiany ich prefiksu sieciowego. Tokenizowane identyfikatory IPv6 opisano w wersji roboczej: <draft-chown-6man-tokenised-ipv6-identifiers-02>.

Powodem tego jest to, że choć Linux zawiera tę funkcjonalność, żadna dystrybucja Linuksa, o której wiem, nie obejmuje obsługi utrwalania takiej konfiguracji i stosowania jej podczas uruchamiania, tak jak w przypadku adresów skonfigurowanych ręcznie lub DHCP. Prawdopodobnie nie będzie to dla ciebie zbyt dobre, dopóki nie zrobi tego jakaś dystrybucja. Zauważ, że teraz można skonfigurować tokeny IPv6 w NetworkManager i systemd-networkd; nowsze odpowiedzi zawierają szczegółowe instrukcje konfiguracji.


Wreszcie, jeśli Twój dostawca usług internetowych czasami zmienia prefiks, rozważ użycie unikalnych adresów lokalnych w Twojej sieci. W ten sposób wszystkie twoje urządzenia będą zawsze miały adres, który nigdy się nie zmieni, dzięki któremu będą mogły ze sobą rozmawiać. Niektóre routery domowe / SOHO obsługujące protokół IPv6 (takie jak OpenWrt) mają opcję włączenia ULA w całej sieci domowej; jeśli w domu jest wiele routerów, należy włączyć tę funkcję na routerze, który łączy się z usługodawcą internetowym.


Problem, który faktycznie spowodował powstanie pytania, polegał na tym, że mój router ISP wysyła RA z krótkim okresem użytkowania. Powoduje to duże problemy z adresami prywatności. OTOH Nie podoba mi się pomysł ujawnienia mojego adresu MAC światu.
płukanie

Dzięki statycznej części lokalnej unika się problemów z adresami prywatności bez ujawniania mojego adresu MAC, dzięki.
płukanie

Czy znasz sposób dodawania wielu tokenów do jednego interfejsu w celu ustawienia wielu „dynamicznych statycznych” adresów IPv6?
Wedi

@wedi Linux obsługuje tylko jeden token na interfejs. Tokeny IPv6 prawdopodobnie nie są rozwiązaniem twojego problemu, cokolwiek to jest.
Michael Hampton

6

Michael zrobił bardzo dobre podsumowanie, a ostatnia wskazówka plugwash była najlepszą, jaką mogłem znaleźć po kilku godzinach polowania na CentOS 7 / RHEL (również systemd i menedżer sieci). Po przyzwyczajeniu się do nmcli (głównie nadal używałem ifcfg i ip) - mogłem z powodzeniem je zastosować.

Ale głębsze kopanie zgodnie z https://developer.gnome.org/NetworkManager/stable/settings-ipv6.html NetworkManager bezpośrednio obsługuje tokenizowane interfejsy IPv6 jako właściwość (od wydania 1.4 sierpnia 2016 http://news.softpedia.com/ news / networkmanager-1-4-added-support-for-setting-ipv6-tokenized-interface-ID-507601.shtml ).

Dlatego nie musisz ustawiać ignorowania ustawień IPv6 menedżera sieci, ale powinieneś ustawić te ustawienia na

nmcli connection modify eth0 ipv6.method "auto" # if not already
nmcli connection modify eth0 ipv6.addr-gen-mode "eui64" # use interface token
nmcli connection modify eth0 ipv6.token "::2"

który napisze IPV6_TOKEN=::2do / etc / sysconfig / network-scripts / ifcfg-eth0, aby przetrwać restart. Aby natychmiast zastosować to zrestartuj interfejs przez

nmcli connection up id eth0  # restart

3

Podziękowania dla Michaela za potwierdzenie, że Linux obsługuje tę funkcję i wskazanie polecenia niskiego poziomu. Ta odpowiedź dotyczy tego, jak sprawić, by działał w praktyce na elastycznym pulpicie Debiana (z systemd i menedżerem sieci).

Najpierw edytuj połączenie w menedżerze sieci i ustaw ignorowanie ustawień IPv6.

Teraz utwórz plik /etc/NetworkManager/dispatcher.d/pre-up.d/iptoken. Plik powinien być własnością użytkownika root, uprawnień 755 i następującej treści.

#!/bin/sh
ip token set ::2 dev eth0

Zamień eth0 na żądane urządzenie, a :: 2 na odpowiedni sufiks.


2

W systemie Linux możesz używać systemd-network.

Wystarczy utworzyć .networkplik w /etc/systemd/network/somename.network:

[Match]
Name=e*

[Network]
DHCP=yes
IPv6Token=::1

zamiast e*dopasowywać wszystkie interfejsy zaczynające się od e, możesz wprowadzić pełną nazwę interfejsu. Umożliwia to DHCP {v4, v6} i używa ::1jako sufiksu. Możesz wybrać dowolny adres IPv6, ale pierwsze 64 bity muszą być ustawione na zero.

Po tym włącz i uruchom systemd-networkd.service.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.