Як уникнути викриття моєї MAC-адреси під час використання IPv6?


140

У моїх Macs кожна IPv6-адреса включає MAC-адресу певного комп'ютера ( не мого маршрутизатора). Такі сайти, як ipv6-test.com, не лише показують це, але навіть кажуть, що він належить до комп'ютера Apple.

Це відчувається як супер cookie, і може застосовуватися і до інших операційних систем. Як я можу уникнути впливу моїх MAC-адрес?

Передумови: MAC-адреса не видно . Як за 2001:0db8:1:2:60:8ff:fe52:f9d8:

  • Візьміть останні 64 біта (ідентифікатор хоста) і додати провідні нулі: 0060:08ff:fe52:f9d8.
  • Складіть ff:feдеталь з середини. Якщо ці байти не існує, то немає MAC - адреса.
  • Перший байт: доповніть другий біт низького порядку (універсальний / локальний біт; якщо біт 1, зробіть його 0, а якщо це 0, зробіть його 1). Отже: 0x00(00000000) стає 0x02(00000010).
  • Presto: 60:8ff:fe52:f9d8перекладається назад на MAC-адресу 02:60:08:52:f9:d8.

Примітка: з моменту MacOS 10.12 Sierra, за словами Ars Technica, Apple прийняла новий спосіб генерування стабільних адрес, що не базуються на MAC-адресі , чим Windows, очевидно, вже роками.


Це запитання було питанням суперкористувача тижня .
Прочитайте запис у блозі для отримання більш детальної інформації або допишіть до себе


14
Нічого собі, я не знав про IPV6, приємна знахідка.
Суперсереальний

18
Ну, звичайно, це показує комп'ютер Apple. Зрештою, це MAC-адреса.
Graeme Perrow

@Kronos, у записі блогу зображення зникло; blog.superuser.com/2011/02/11/… Додавання ".stack" до URL допомагає: i.stack.imgur.com/RNXoA.png
Arjan

... але, @KronoS, додавання ".stack" насправді змушує іншу форму зображення цього ж блогу зникнути, як i.imgur.com/vjK73.png (добре) проти i.stack.imgur.com/vjK73.png ( не гаразд). Іншими словами: можливо, всі зображення в блозі, які зараз не використовуються, .stackповинні бути повторно завантажені ...?
Ар'ян

@Arjan Я не впевнений. Мені доведеться перевірити це. Мені б хотілося, щоб усі зображення, завантажені в блог, автоматично завантажувалися в обліковий запис малюнка стека. Аналогічно тому, що роблять звичайні сайти в даний час
Джеймс Мерц

Відповіді:


134

Це вирішується двома розширеннями до IPv6:

  • RFC 4941 aka "Адресація конфіденційності" дозволяє вихідним з'єднанням використовувати тимчасові, випадково генеровані адреси (які обертаються кожні кілька годин).
  • RFC 7217 дозволяє генерувати первинну статичну адресу з непрозорого хешу, який не розкриває ніякої інформації.

Принаймні один, але все частіше обидва способи підтримуються популярними операційними системами.

Зауважте, що ці риси є ортогональними. Ви можете використовувати обидва одночасно, якщо хочете.

Стабільні приватні адреси

У деяких операційних системах адреса MAC (EUI-48) просто більше не використовується для ідентифікаторів інтерфейсу. Замість цього використовується випадковий або хеш-ідентифікатор, як правило, відповідно до RFC 7217.

  • Windows використовує власну схему за замовчуванням, починаючи з Windows Vista.

    Щоб перевірити, чи функція активна, запустіть команду PowerShell:

    Get-NetIPv6Protocol | fl RandomizeIdentifiers
    

    Щоб увімкнути / вимкнути функцію:

    Set-NetIPv6Protocol -RandomizeIdentifiers Enabled
    Set-NetIPv6Protocol -RandomizeIdentifiers Disabled
    
  • Linux (NetworkManager) підтримує RFC 7217 як NetworkManager v1.2.0, використовуючи UUID профілю з'єднання як частину насіння. Ця функція за замовчуванням активна в останніх версіях NM.

    Щоб увімкнути або вимкнути цю функцію:

    nmcli con modify "<profilename>" ipv6.addr-gen-mode stable-privacy
    nmcli con modify "<profilename>" ipv6.addr-gen-mode eui64
    
  • Linux (ядро SLAAC) підтримує RFC 7217 станом на ядро ​​v4.1.0; однак його потрібно активувати вручну, зберігаючи таємне насіння через sysctl.

    Секретний ключ - це 128-розрядна шістнадцятковий рядок (має форму IPv6-адреси), яка повинна зберігатися в net.ipv6.conf.default.stable_secretsysctl. Щоб зробити його стійким, його можна поставити /etc/sysctl.d/50-rfc7217.confабо подібне:

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

    Встановлення секрету автоматично активує цей режим для всіх мережевих інтерфейсів. Щоб перевірити, чи функція активна, знайдіть "addrgenmode stable_secret" в ip -d linkабо значення "2" в sysctl net.ipv6.conf.<ifname>.addr_gen_mode.

Тимчасові приватні адреси

Як визначено в RFC 4941, тимчасові адреси конфіденційності генеруються випадковим чином і обертаються кожні кілька годин.

  • Windows підтримує тимчасові адреси як для Windows XP SP2.

    Щоб увімкнути / вимкнути цю функцію:

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

    Зауважте, що Windows більше не використовує основні адреси на основі MAC-адреси, починаючи з Windows Vista.

  • Linux (NetworkManager) : останні версії NetworkManager самостійно обробляють RA, хоча два значення нижче мають однакове значення, ніж sysctl (2 = віддають перевагу адресу конфіденційності, 1 = віддають перевагу головній адресі):

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

    Також з 1.2.0 став доступний кращий режим, який змінює основну адресу більше не на базі MAC, а на унікальну для кожної мережі (RFC 7217):

    (Зверніть увагу, що адреса конфіденційності є ортогональною для режиму addr-gen; можливо використовувати обоє.)

    Бічна примітка: Станом на 1.4.0, NM дозволяє також рандомізувати саму MAC-адресу. Установіть, wifi.cloned-mac-addressщоб stableмати різний MAC для кожної мережі (рекомендується) або randomрандомізувати його для кожного з'єднання (це може спричинити проблеми).

    У всіх випадках <name>повинно бути ім'я з'єднання, наприклад, WiFi SSID або "Wired Connection 1". Використовуйте nmcli conдля переліку всіх.

    Щоб зробити це за замовчуванням для нових з'єднань, з 1.2.0 ви можете змінити /etc/NetworkManager/NetworkManager.conf:

     [connection]
     ipv6.addr-gen-mode=stable-privacy
     wifi.cloned-mac-address=stable
    
  • Linux (ядро SLAAC) підтримує тимчасові адреси, але не використовує їх за замовчуванням. Їх можна активувати за допомогою sysctls.

    Щоб увімкнути тимчасові адреси та зробити їх кращими для вихідних з'єднань:

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

    Щоб увімкнути генерування тимчасової адреси, але збережіть статичну адресу SLAAC, як бажано:

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

    Частина allабо defaultчастина може бути замінена на конкретну назву інтерфейсу; напр net.ipv6.conf.eth0.use_tempaddr.

    (Раніше я ip link set eth0 down && ip link set eth0 upпримушував призначити адресу, але ви також можете запустити rdisc6 eth0або просто почекати кілька хвилин на наступну періодичну рекламу маршрутизатора.)

  • Mac OS X - увімкнено за замовчуванням з OS X 10.7 Lion:

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

    Тимчасові адреси, якщо вони включені, будуть надані перевагу.

  • FreeBSD :

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

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

    Налаштування тимчасових адрес? Я поняття не маю. Здається, адреса autoconf видається кращою. ifconfigне відображається в списку жодних властивостей адреси.

  • OpenBSD - підтримка додана в 5.2 ; увімкнено та бажано за замовчуванням у 5.3 .

     ifconfig em0 autoconfprivacy
    

    ifconfig поруч із тимчасовими адресами відображається "автоконфіденційність".

Примітки щодо конфігурації:

  • У Linux, OS X та всіх BSD редагуйте, /etc/sysctl.confщоб налаштування стало постійним.

  • У Windows зміни зберігаються автоматично. (Ви можете додати store=activeдо netshкоманди, якщо ви хочете, щоб вона тривала лише до перезавантаження.)


Частково базується на операційних системах IPv6 на IPv6INT.net. Див. Також Загальні примітки IPv6


Якщо апаратна адреса використовується в IPv6-адресі, це зазвичай означає, що ваша мережа використовує автоматичну конфігурацію без стану IPv6. У такому випадку ви можете просто вибрати власний суфікс адреси та налаштувати IPv6 вручну.

Однак, хоча додана вручну адреса не матиме вашої апаратної інформації, вона все одно буде статичною (на відміну від конфіденційності, яка змінює адреси так часто). Також статичні адреси можуть бути болем у мережі, що перевищує 2-3 пристрої.


2
Хороший побічний ефект на моєму Mac та маршрутизаторі FRITZ! Box 7340: я отримую дві адреси ifconfig. Для вихідних з'єднань використовується випадкова autoconf temporaryадреса, яка змінюється раз у раз. Добре! Але для вхідних з'єднань (коли відкриваються в моєму маршрутизаторі), я все ще можу використовувати autoconfадресу. Я не проти викладати це в записах DNS (хоча, можливо, я навіть міг якось вибрати іншу адресу для цього).
Ар'ян

Ах, після Whois-спаму ми тепер отримуємо спам IPv6: dig -t AAAA www.v6.facebook.com ;-)
Arjan

6
@Arjan: адреси IPv6 по рядках de4d:b33fне так вже й погані для запам'ятовування; також їх встановлює власник, тоді як whoisспам - це а) дратівливий і б) спричинений сторонніми особами, які не контролюють ваш домен.
grawity

1
Як осторонь: мабуть, (вище) сказане може сказати ОС віддавати перевагу тимчасовій адресі, але додатки все-таки зможуть змінити цю перевагу .
Ар'ян

AFAICS з використанням тимчасових адрес (конфіденційність IPv6) ефективно непридатний для деяких провайдерів через рекламу маршрутизатора з абсурдним коротким максимальним терміном експлуатації 40-х, що перекриває налаштування ядра. Linux см ip aдля preferred_lft. Таким чином, sshз'єднання будуть розриватися кожні 40-ті, якщо ви включите цю функцію. Це навіть не можна використовувати для звичайних веб-серферів, оскільки кожне завантаження також має бути завершено протягом 40-х років.
Тіно

1

FYI, це стосується лише певних схем IP-адреси. Швидше за все, ви (або ваш Інтернет-провайдер) використовуєте автоматичну конфігурацію IPv6, для чого в першу чергу потрібен досить великий блок IP-адрес. Рішенням може бути вимкнення цієї функції. Ваш Інтернет-провайдер може використовувати DHCP також для призначення адрес, що все ще можливо з IPv6.


3
Що стосується великих блоків: згідно з Вікіпедією у розділі "Загальне розподіл": RIR присвоюють менші блоки провайдерам, які потім поширюють цю частину в / 48 розміру своїм клієнтам. Дійсно, мій Інтернет-провайдер також призначає абонентам / 48 приставки абонентам класу споживачів. Тож не дуже дивно?
Ар'ян

3
Тоді звинувачуйте Вікіпедію та проект Аріна щодо розробки планів IPv6 : Усі клієнти отримують одну / 48, якщо не зможуть показати, що їм потрібно більше 65 тис. Підмереж. Але також: Якщо у вас є багато споживачів, ви можете захотіти призначити / 56s приватним місцям проживання - що ще більше, ніж мені колись потрібно. ;-) Але все може змінитися: мій провайдер ніколи цього не обіцяв , хоча очевидно, що їхні клієнти налаштували модем / маршрутизатори на основі цього.
Ар'ян

3
Я думаю, коли Арін каже "клієнт", вони мають на увазі "провайдер". Будь-який Інтернет-провайдер (в тому числі дуже і дуже великий) може виділити єдину / 64 для всієї своєї мережі і зробити це з нею. Більше не потрібно проводити маршрутизацію. Але розподіляти блоки IP-адрес, що нумеруються в трильйонах, середнім серед жителів-клієнтів, абсолютно нерозумно.
Ерні Данбар

3
Мабуть, одна причина призначити хоча б/56 : "Інтернет-провайдери, які передають лише один, /64заважають вам взагалі будь-яку підмережу. Якщо /64це в інтерфейсі WAN, то ви ніколи не отримаєте гідних IPv6 у ваших локальних мережах. Це помилка провайдерів, і вони повинні виправити це, видавши пристойну кількість ( /48або /56) адрес. "
Ар'ян

7
A / 64 не є "досить великим блоком"; це найменший розумний блок розподілу для підмережі. Декілька функцій IPv6 вимагають, щоб підмережа була / 64, і ви забули (або не зрозуміли), що IPv6 значною мірою був розроблений, щоб не допустити, щоб хтось коли- небудь знову не виходив з адрес. Ви повинні звільнити свій розум від старої думки про необхідність збереження дорогоцінних адрес; їй немає місця в IPv6.
Майкл Хемптон
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.