Come evitare di esporre il mio indirizzo MAC quando si utilizza IPv6?


140

Sui miei Mac, ogni indirizzo IPv6 include l'indirizzo MAC di un computer specifico ( non del mio router). Siti come ipv6-test.com non solo lo mostrano, ma mi dicono anche che appartiene a un computer Apple.

Sembra un super cookie e potrebbe applicarsi anche ad altri sistemi operativi. Come posso evitare che i miei indirizzi MAC vengano esposti?

Contesto: l'indirizzo MAC non è in bella vista . Come per 2001:0db8:1:2:60:8ff:fe52:f9d8:

  • Prendete gli ultimi 64 bit (l'identificatore host) e aggiungere zeri: 0060:08ff:fe52:f9d8.
  • Striscia la ff:feparte dal centro. Se questi byte non ci sono, allora non c'è alcun indirizzo MAC.
  • Per il primo byte: completare il secondo bit di ordine inferiore (il bit universale / locale; se il bit è un 1, renderlo 0 e se è uno 0, renderlo 1). Quindi: 0x00(00000000) diventa 0x02(00000010).
  • Presto: 60:8ff:fe52:f9d8traduce nuovamente in indirizzo MAC 02:60:08:52:f9:d8.

Nota: da macOS 10.12 Sierra, secondo Ars Technica, Apple ha adottato un nuovo modo di generare indirizzi stabili che non si basano su un indirizzo MAC , cosa che Windows apparentemente aveva già fatto per anni.


Questa domanda era una domanda super utente della settimana .
Leggi la voce del blog per maggiori dettagli o contribuisci tu stesso al blog


14
Caspita non lo sapevo su IPV6, bella scoperta.
Supercereal

18
Bene, ovviamente mostra un computer Apple. Dopotutto è un indirizzo MAC.
Graeme Perrow,

@Kronos, un'immagine è scomparsa nel blog; blog.superuser.com/2011/02/11/… L'aggiunta di ".stack" all'URL aiuta: i.stack.imgur.com/RNXoA.png
Arjan l'

... ma, @KronoS, l'aggiunta di ".stack" in realtà fa scomparire un'altra forma di immagine che lo stesso post sul blog scompare, come i.imgur.com/vjK73.png (okay) vs i.stack.imgur.com/vjK73.png ( non va bene). In altre parole: forse tutte le immagini sul blog che attualmente non utilizzano .stackdovrebbero essere ricaricate ...?
Arjan,

@Arjan non ne sono sicuro. Dovrò controllare in questo. Vorrei per una funzione che tutte le immagini caricate sul blog vengano caricate automaticamente sull'account imgur dello stack. Simile a quello che fanno attualmente i siti regolari
James Mertz,

Risposte:


134

Questo è risolto da due estensioni a IPv6:

  • RFC 4941 alias "Indirizzamento della privacy" consente alle connessioni in uscita di utilizzare indirizzi temporanei generati casualmente (che vengono ruotati ogni poche ore).
  • RFC 7217 consente di generare l'indirizzo statico primario da un hash opaco che non rivela alcuna informazione.

Almeno uno ma sempre più entrambi i metodi sono supportati dai sistemi operativi più diffusi.

Si noti che queste funzionalità sono ortogonali. Puoi usarli entrambi contemporaneamente, se lo desideri.

Indirizzi privati ​​stabili

In alcuni sistemi operativi, l'indirizzo MAC (EUI-48) semplicemente non viene più utilizzato per gli identificatori di interfaccia. Invece viene utilizzato un identificatore casuale o basato su hash, generalmente secondo RFC 7217.

  • Windows utilizza uno schema personalizzato per impostazione predefinita a partire da Windows Vista.

    Per verificare se la funzionalità è attiva, eseguire un comando PowerShell:

    Get-NetIPv6Protocol | fl RandomizeIdentifiers
    

    Per abilitare / disabilitare la funzione:

    Set-NetIPv6Protocol -RandomizeIdentifiers Enabled
    Set-NetIPv6Protocol -RandomizeIdentifiers Disabled
    
  • Linux (NetworkManager) supporta RFC 7217 a partire da NetworkManager v1.2.0, utilizzando l'UUID del profilo di connessione come parte del seed. Questa funzione è attiva per impostazione predefinita nelle recenti versioni NM.

    Per abilitare o disabilitare questa funzione:

    nmcli con modify "<profilename>" ipv6.addr-gen-mode stable-privacy
    nmcli con modify "<profilename>" ipv6.addr-gen-mode eui64
    
  • Linux (kernel SLAAC) supporta RFC 7217 a partire dal kernel v4.1.0; tuttavia, deve essere attivato manualmente memorizzando il seme segreto tramite sysctl.

    La chiave segreta è una stringa esadecimale a 128 bit (a forma di indirizzo IPv6), che deve essere memorizzata nel net.ipv6.conf.default.stable_secretsysctl. Per renderlo persistente, potrebbe essere inserito /etc/sysctl.d/50-rfc7217.confo simile:

    net.ipv6.conf.default.stable_secret = 84a0:d5aa:52b0:4d35:k567:3aa6:7af5:474c
    

    L'impostazione del segreto attiva automaticamente questa modalità per tutte le interfacce di rete. Per verificare se la funzione è attiva, cerca "addrgenmode stable_secret" in ip -d linko il valore "2" in sysctl net.ipv6.conf.<ifname>.addr_gen_mode.

Indirizzi privati ​​temporanei

Come definito in RFC 4941, gli indirizzi di privacy temporanei vengono generati casualmente e ruotati ogni poche ore.

  • Windows supporta indirizzi temporanei a partire da Windows XP SP2.

    Per abilitare / disabilitare questa funzione:

    netsh interface ipv6 set privacy state=enabled
    netsh interface ipv6 set privacy state=disabled
    

    Nota che Windows non utilizza più indirizzi primari basati su indirizzi MAC a partire da Windows Vista.

  • Linux (NetworkManager) : le versioni recenti di NetworkManager gestiscono RA da sole, sebbene i due valori seguenti abbiano significati identici a sysctl (2 = preferisce l'indirizzo di privacy, 1 = preferiscono l'indirizzo principale):

     nmcli con modify <name> ipv6.ip6-privacy 2
    

    Inoltre, a partire da 1.2.0 è diventata disponibile una modalità migliore, che cambia l' indirizzo principale in non più basato su MAC ma piuttosto univoco per ogni rete (RFC 7217):

    (Si noti che l'indirizzamento della privacy è ortogonale alla modalità addr-gen; è possibile utilizzare entrambi.)

    Nota a margine: dalla 1.4.0, NM consente anche di randomizzare l'indirizzo MAC stesso. Impostare wifi.cloned-mac-addressper stableavere un MAC diverso per ogni rete (consigliato) o randomper randomizzarlo per ogni connessione (potrebbe causare problemi).

    In tutti i casi, <name>deve essere il nome della connessione, ad esempio WiFi SSID o "Wired Connection 1". Utilizzare nmcli conper elencare tutto.

    Per renderlo predefinito per le nuove connessioni, a partire dalla 1.2.0 è possibile modificare /etc/NetworkManager/NetworkManager.conf:

     [connection]
     ipv6.addr-gen-mode=stable-privacy
     wifi.cloned-mac-address=stable
    
  • Linux (kernel SLAAC) supporta indirizzi temporanei, ma non li utilizza per impostazione predefinita. Possono essere attivati ​​tramite sysctls.

    Per abilitare gli indirizzi temporanei e renderli preferiti per le connessioni in uscita:

     sysctl net.ipv6.conf.all.use_tempaddr=2
     sysctl net.ipv6.conf.default.use_tempaddr=2
    

    Per abilitare la generazione di indirizzi temporanei, ma mantenere l'indirizzo SLAAC statico come preferito:

     sysctl net.ipv6.conf.all.use_tempaddr=1
     sysctl net.ipv6.conf.default.use_tempaddr=1
    

    La parte allo defaultpuò essere sostituita con un nome di interfaccia specifico; es net.ipv6.conf.eth0.use_tempaddr.

    (Prima ip link set eth0 down && ip link set eth0 upimponevo un indirizzo, ma puoi anche eseguire rdisc6 eth0o semplicemente attendere qualche minuto per la prossima pubblicità periodica sul router.)

  • Mac OS X : abilitato per impostazione predefinita da OS X 10.7 Lion:

     sysctl -w net.inet6.ip6.use_tempaddr=1
    

    Gli indirizzi temporanei, se abilitati, saranno preferiti.

  • FreeBSD :

     sysctl net.inet6.ip6.use_tempaddr=1
    
     sysctl net.inet6.ip6.prefer_tempaddr=1
    
  • NetBSD :

     sysctl -w net.inet6.ip6.use_tempaddr=1
    

    Preferenza indirizzi temporanei? Non ne ho idea. L'indirizzo autoconf sembra essere preferito. ifconfignon sembra elencare alcuna proprietà dell'indirizzo.

  • OpenBSD - supporto aggiunto in 5.2 ; abilitato e preferito di default in 5.3 .

     ifconfig em0 autoconfprivacy
    

    ifconfig mostra "autoconfprivacy" accanto agli indirizzi temporanei.

Note sulla configurazione:

  • Su Linux, OS X e tutti i BSD, modifica /etc/sysctl.confper rendere permanente l'impostazione.

  • Su Windows, le modifiche persisteranno automaticamente. (È possibile aggiungere store=activeal netshcomando se si desidera che duri solo fino al riavvio.)


Parzialmente basato sui sistemi operativi IPv6 su IPv6INT.net. Vedi anche Note generali su IPv6


Se l'indirizzo hardware viene utilizzato nell'indirizzo IPv6, di solito significa che la rete utilizza la configurazione automatica senza stato IPv6. In tal caso, puoi semplicemente selezionare il suffisso del tuo indirizzo e configurare manualmente IPv6.

Tuttavia, anche se l'indirizzo aggiunto manualmente non avrà le informazioni sull'hardware, sarà comunque statico (diversamente dall'indirizzamento sulla privacy, che cambia gli indirizzi ogni tanto). Inoltre, gli indirizzi statici possono essere una seccatura in una rete più grande di 2-3 dispositivi.


2
Bello effetto collaterale sul mio Mac e su un router FRITZ! Box 7340: ottengo due indirizzi ifconfig. Le connessioni in uscita utilizzano l' autoconf temporaryindirizzo casuale , che cambia di tanto in tanto. Buono! Ma per le connessioni in entrata (quando aperto nel mio router), posso ancora usare l' autoconfindirizzo. Non mi dispiace esporlo nei record DNS (anche se forse potrei in qualche modo scegliere un altro indirizzo anche per quello).
Arjan,

Ahh, dopo whois-spamming ora riceviamo spamming IPv6: dig -t AAAA www.v6.facebook.com ;-)
Arjan

6
@Arjan: gli indirizzi IPv6 lungo le linee di de4d:b33fnon sono poi così male per la memorizzazione; inoltre, sono messi in atto dal loro proprietario, mentre lo whoisspam è a) fastidioso eb) causato da estranei che non hanno il controllo del tuo dominio.
gravità

1
A parte questo: sembra (alcuni) quanto sopra potrebbe dire al sistema operativo di preferire l'indirizzo temporaneo, ma le applicazioni potrebbero comunque ignorare questa preferenza .
Arjan,

AFAICS che utilizza indirizzi temporanei (privacy IPv6) è effettivamente inutilizzabile con alcuni ISP a causa della pubblicità del router con una durata assurda breve e massima di 40 secondi, che sostituisce le impostazioni del kernel. Linux vedere ip aper preferred_lft. Quindi le sshconnessioni si interromperanno ogni 40 secondi se abiliti questa funzione. Non è nemmeno utilizzabile per i normali navigatori del web, poiché ogni download deve essere completato entro 40 anni.
Tino,

1

Cordiali saluti, questo vale solo per alcuni schemi di indirizzamento IP. Molto probabilmente tu (o il tuo ISP) state utilizzando la configurazione automatica IPv6, che per prima cosa richiede un blocco abbastanza grande di IP. La soluzione potrebbe essere quella di disattivare questa funzione. L'ISP potrebbe utilizzare anche DHCP per assegnare gli indirizzi, il che è ancora possibile con IPv6.


3
Per quanto riguarda i blocchi di grandi dimensioni: secondo Wikipedia in "Allocazione generale": i RIR assegnano blocchi più piccoli agli ISP, che poi distribuiscono queste parti in / 48 ai loro clienti. In effetti, il mio ISP assegna / 48 prefissi anche agli abbonati di livello consumer. Non troppo strano allora?
Arjan,

3
Quindi incolpare Wikipedia e la bozza dei piani di indirizzamento IPv6 di Arin : tutti i clienti ottengono uno / 48 a meno che non possano dimostrare di aver bisogno di più di 65.000 sottoreti. Ma anche: se hai molti clienti consumatori potresti voler assegnare / 56s a siti di residenza privata - che è ancora più di quanto io abbia mai bisogno. ;-) Ma le cose potrebbero cambiare: il mio ISP non l'ha mai promesso , anche se ovviamente i loro clienti hanno configurato modem / router basati su questo.
Arjan,

3
Penso che quando Arin dice "cliente" intendono "ISP". Qualsiasi ISP (inclusi quelli molto, molto grandi) può allocare un singolo / 64 per l'intera rete e farcela. Nessun ulteriore instradamento richiesto. Ma allocare blocchi di numerazione degli indirizzi IP in migliaia di miliardi a clienti residenziali nella media joe è assolutamente insensato.
Ernie Dunbar,

3
Apparentemente, un motivo per assegnare almeno un/56 : "Gli ISP che distribuiscono solo uno /64ti impediscono affatto di subnet. Se questo /64è sull'interfaccia WAN, non otterrai mai un IPv6 decente sulle tue LAN. Questo è colpa dell'ISP e dovrebbero risolverlo dando una discreta quantità ( /48o /56) di indirizzi ".
Arjan,

7
A / 64 non è "un blocco abbastanza grande"; è il più piccolo blocco di allocazione ragionevole per una sottorete. Diverse funzioni di IPv6 richiedono che una sottorete sia / 64 e si è dimenticato (o non realizzato) che IPv6 è stato progettato in gran parte per impedire a nessuno di rimanere mai più a corto di indirizzi. Devi liberare la tua mente dal vecchio pensiero di dover conservare indirizzi preziosi; non ha posto in IPv6.
Michael Hampton,
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.