Indirizzamento IPv6, prefisso dinamico parte locale statica


10

Il router sulla mia rete distribuisce un prefisso IPv6 assegnato dal mio ISP. Questo prefisso è dinamico ma "abbastanza appiccicoso".

Vorrei che le mie macchine rilevassero automaticamente il prefisso pubblicizzato nelle RA, ma lo combino con una parte locale specificata dall'utente anziché generarne una in modo casuale o in base all'indirizzo MAC. C'è un modo semplice per farlo?


1
Non ho visto alcun sistema operativo che ti permetta di farlo :(
Sander Steffann

@SanderSteffann Non hai mai usato Linux?
Michael Hampton,

1
@Michael Non ho mai visto un sistema operativo che ti consenta di configurare i token IID. Tecnicamente il kernel può farlo, ma nessun sistema operativo (come nella distribuzione) lo supporta :(
Sander Steffann

Risposte:


11

Ci sono due modi per farlo. Uno è il modo semplice e l'altro è il modo difficile.

Il modo più semplice è eseguire un server DHCPv6 sulla rete e assegnare personalmente gli indirizzi host a ciascun dispositivo. Oppure lascia che il server scelga la parte host; i server DHCPv6 che ho visto manterranno la stessa parte host anche se il prefisso cambia.

Il modo più difficile è usare ip tokenper impostare identificatori di interfaccia tokenizzati. Questo è descritto come:

Il supporto dell'identificatore di interfaccia tokenizzata IPv6 viene utilizzato per assegnare indirizzi di parti host noti ai nodi pur ottenendo un prefisso di rete globale dagli annunci del router. La destinazione principale per gli identificatori tokenizzati sono le piattaforme server in cui gli indirizzi sono generalmente configurati manualmente, anziché utilizzare DHCPv6 o SLAAC. Usando identificatori tokenizzati, gli host possono ancora determinare il loro prefisso di rete usando SLAAC, ma più rapidamente possono essere rinumerati automaticamente se il loro prefisso di rete cambia. Gli identificatori IPv6 con token sono descritti nella bozza: <draft-chown-6man-tokenised-ipv6-identifiers-02>.

La ragione per cui questo è il modo difficile è che mentre Linux include questa funzionalità, nessuna distribuzione Linux di cui sono a conoscenza include il supporto per rendere persistente tale configurazione e applicarla all'avvio, come fanno per gli indirizzi configurati manualmente o DHCP. Quindi probabilmente non funzionerà molto bene per te, fino a quando una certa distribuzione non lo farà. Si noti che ora è possibile configurare i token IPv6 in NetworkManager e systemd-networkd; le risposte più recenti hanno istruzioni di configurazione specifiche.


Infine, se il tuo ISP cambia occasionalmente il prefisso, considera l'utilizzo di Indirizzi locali unici all'interno della tua rete. In questo modo, tutti i tuoi dispositivi avranno sempre un indirizzo che non cambierà mai, con cui possono dialogare. Alcuni router domestici / SOHO che supportano IPv6 (come OpenWrt) hanno un'opzione per abilitare ULA su tutta la rete domestica; se ci sono più router in casa, questo dovrebbe essere abilitato sul router che si collega all'ISP.


Il problema che ha effettivamente sollevato la domanda è stato che il mio router ISP invia RA con una breve durata. Ciò causa grossi problemi con gli indirizzi di privacy. OTOH Non mi piace molto l'idea di rivelare il mio indirizzo MAC al mondo.
lavaggio:

Una parte locale statica evita i problemi con gli indirizzi di privacy senza rivelare il mio indirizzo MAC, grazie.
lavare i capelli il

Conosci un modo per aggiungere più token a una singola interfaccia per impostare più indirizzi IPv6 "statici dinamici"?
wedi,

@wedi Linux supporta solo un token per interfaccia. I token IPv6 probabilmente non sono la soluzione al tuo problema, qualunque esso sia.
Michael Hampton,

6

Michael ha fatto un ottimo riassunto e il recente suggerimento del plugwash è stato il migliore che ho potuto trovare dopo aver cercato per diverse ore una soluzione CentOS 7 / RHEL (anche systemd e network manager). Dopo essermi abituato a nmcli (stavo ancora usando ifcfg e ip), ho potuto applicarlo con successo.

Ma scavare più a fondo secondo https://developer.gnome.org/NetworkManager/stable/settings-ipv6.html NetworkManager supporta direttamente gli identificativi dell'interfaccia tokenizzata IPv6 come proprietà (dalla versione 1.4 agosto 2016 http://news.softpedia.com/ news / networkmanager-1-4-aggiunge-supporto-per-impostazione-ipv6-tokenized-interface-identifier-507601.shtml ).

Quindi non è necessario configurare le impostazioni IPv6 di Network Manager da ignorare, ma è necessario impostarle su

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"

che scriverà IPV6_TOKEN=::2su / etc / sysconfig / network-scripts / ifcfg-eth0 per sopravvivere al riavvio. Per applicare immediatamente questo riavvia l'interfaccia da

nmcli connection up id eth0  # restart

3

Grazie a Michael per aver confermato che Linux supportava la funzionalità e puntava al comando di basso livello. Questa risposta spiega come farlo funzionare in pratica su un desktop stretch Debian (con systemd e gestore di rete).

Innanzitutto modifica la connessione in Network Manager e imposta le impostazioni IPv6 su Ignora.

Ora crea un file /etc/NetworkManager/dispatcher.d/pre-up.d/iptoken. Il file deve essere di proprietà di root, autorizzazioni 755 e con i seguenti contenuti.

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

Sostituisci eth0 con il dispositivo desiderato e :: 2 con il suffisso desiderato.


2

Sotto Linux puoi usare systemd-network.

Basta creare un .networkfile sotto /etc/systemd/network/somename.network:

[Match]
Name=e*

[Network]
DHCP=yes
IPv6Token=::1

invece di e*abbinare tutte le interfacce a partire da e, puoi inserire il nome dell'interfaccia completo. Ciò abilita DHCP {v4, v6} e lo utilizza ::1come suffisso. È possibile scegliere qualsiasi indirizzo IPv6, ma i primi 64 bit devono essere impostati su zero.

Dopo questo abilitare e avviare il systemd-networkd.service.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.