Как избежать раскрытия моего MAC-адреса при использовании IPv6?


140

На моих Mac каждый 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, приятно найти.
Supercereal

18
Ну, конечно, это показывает компьютер Apple. В конце концов, это MAC-адрес.
Грэм Перроу

@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 Я не уверен. Я собираюсь проверить это. Мне бы хотелось, чтобы все изображения, загруженные в блог, автоматически загружались в imgur аккаунт стека. Подобно тому, что в настоящее время делают обычные сайты
Джеймс Мерц

Ответы:


134

Это решается двумя расширениями IPv6:

  • RFC 4941, также известный как «Адресация конфиденциальности», позволяет исходящим соединениям использовать временные, случайно сгенерированные адреса (которые чередуются каждые несколько часов).
  • 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-mode; возможно использовать оба варианта.)

    Примечание: Начиная с версии 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) поддерживает временные адреса, но не использует их по умолчанию. Их можно активировать через sysctl.

    Чтобы включить временные адреса и сделать их предпочтительными для исходящих соединений:

     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 показывает "autoconfprivacy" рядом с временными адресами.

Примечания по конфигурации:

  • В 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-записях (хотя, возможно, я мог бы даже каким-то образом выбрать другой адрес для этого тоже).
Арджан

Ааа, после спам-рассылки мы теперь получаем спам по IPv6: dig -t AAAA www.v6.facebook.com ;-)
Arjan

6
@Arjan: Адреса IPv6 de4d:b33fне так уж плохи для запоминания; Кроме того, они созданы их владельцем, в то время как whoisспам а) раздражает и б) вызван посторонними, которые не контролируют ваш домен.
Гравитация

1
В качестве отступления: кажется (некоторые из вышеперечисленных) могут указывать ОС предпочитать временный адрес, но приложения все равно могут переопределить это предпочтение .
Арджан

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

1

К вашему сведению, это относится только к определенным схемам IP-адресации. Скорее всего, вы (или ваш интернет-провайдер) используете автоконфигурацию IPv6, для чего требуется достаточно большой блок IP-адресов. Решением может быть отключение этой функции. Ваш Интернет-провайдер может также использовать DHCP для назначения адресов, что все еще возможно с IPv6.


3
Что касается больших блоков: согласно Википедии в разделе «Общее распределение»: RIR назначают меньшие блоки интернет-провайдерам, которые затем распределяют их в размерах / 48 своим клиентам. Действительно, мой провайдер также назначает / 48 префиксов подписчикам потребительского уровня. Не слишком странно тогда?
Арджан

3
Затем возложите вину на Википедию и черновые планы адресации IPv6 от Arin : все клиенты получают один / 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.