Làm cách nào để tránh lộ địa chỉ MAC của tôi khi sử dụng IPv6?


140

Trên máy Mac của tôi, mỗi địa chỉ IPv6 bao gồm địa chỉ MAC của một máy tính cụ thể ( không phải của bộ định tuyến của tôi). Các trang web như ipv6-test.com không chỉ hiển thị mà còn cho tôi biết nó thuộc về máy tính Apple.

Cảm giác này giống như một siêu cookie và cũng có thể áp dụng cho các hệ điều hành khác. Làm cách nào để tránh các địa chỉ MAC của tôi bị lộ?

Bối cảnh: địa chỉ MAC không nằm trong tầm nhìn rõ ràng . Thích cho 2001:0db8:1:2:60:8ff:fe52:f9d8:

  • Lấy 64 bit cuối cùng (mã định danh máy chủ) và thêm các số 0 đứng đầu : 0060:08ff:fe52:f9d8.
  • Dải ff:fephần từ giữa. Nếu các byte này không có ở đó, thì không có địa chỉ MAC.
  • Đối với byte đầu tiên: bổ sung cho bit thứ tự thấp thứ hai (bit phổ quát / cục bộ; nếu bit là 1, hãy tạo 0 và nếu là 0, hãy tạo 1). Vì vậy: 0x00(00000000) trở thành 0x02(00000010).
  • Presto: 60:8ff:fe52:f9d8dịch lại địa chỉ MAC 02:60:08:52:f9:d8.

Lưu ý: kể từ macOS 10.12 Sierra, theo Ars Technica, Apple đã áp dụng một cách mới để tạo địa chỉ ổn định không dựa trên địa chỉ MAC , điều mà Windows rõ ràng đã làm trong nhiều năm.


Câu hỏi này là một câu hỏi siêu người dùng trong tuần .
Đọc blog entry để biết thêm chi tiết hoặc đóng góp cho blog mình


14
Wow tôi không biết rằng về IPV6, tìm thấy tốt đẹp.
Supercereal

18
Vâng, tất nhiên nó cho thấy một máy tính Apple. Đó là một địa chỉ MAC, sau tất cả.
Graeme Perrow

@Kronos, một hình ảnh đã bị mất trên mục blog; blog.superuser.com/2011/02/11/ Thêm Thêm ".stack" vào URL giúp: i.stack.imgur.com/RNXoA.png
Arjan

... nhưng, @KronoS, thêm ".stack" thực sự làm cho một hình ảnh khác mà cùng một bài đăng trên blog biến mất, như i.imgur.com/vjK73.png (okay) vs i.stack.imgur.com/vjK73.png ( không ổn). Nói cách khác: có lẽ tất cả hình ảnh trên blog hiện không sử dụng .stacknên được tải lên lại ...?
Arjan

@Arjan Tôi không chắc. Tôi sẽ phải kiểm tra cái này Tôi muốn một tính năng là tất cả các hình ảnh được tải lên blog sẽ được tự động tải lên tài khoản imgur của stack. Tương tự như những gì các trang web thông thường hiện đang làm
James Mertz

Câu trả lời:


134

Điều này được giải quyết bằng hai phần mở rộng cho IPv6:

  • RFC 4941 hay còn gọi là "Địa chỉ bảo mật" cho phép các kết nối bên ngoài sử dụng các địa chỉ tạm thời, được tạo ngẫu nhiên (được xoay mỗi vài giờ).
  • RFC 7217 cho phép địa chỉ chính, tĩnh được tạo từ hàm băm mờ không tiết lộ bất kỳ thông tin nào.

Ít nhất một nhưng ngày càng cả hai phương pháp được hỗ trợ bởi các hệ điều hành phổ biến.

Lưu ý rằng các tính năng này là trực giao. Bạn có thể sử dụng cả hai cùng một lúc, nếu bạn muốn.

Địa chỉ riêng ổn định

Trong một số hệ điều hành, địa chỉ MAC (EUI-48) đơn giản là không còn được sử dụng cho các định danh giao diện. Thay vào đó, một định danh ngẫu nhiên hoặc dựa trên hàm băm được sử dụng, thường là theo RFC 7217.

  • Windows sử dụng một lược đồ tùy chỉnh theo mặc định bắt đầu với Windows Vista.

    Để kiểm tra xem tính năng này có hoạt động hay không, hãy chạy lệnh PowerShell:

    Get-NetIPv6Protocol | fl RandomizeIdentifiers
    

    Để bật / tắt tính năng:

    Set-NetIPv6Protocol -RandomizeIdentifiers Enabled
    Set-NetIPv6Protocol -RandomizeIdentifiers Disabled
    
  • Linux (NetworkManager) hỗ trợ RFC 7217 kể từ NetworkManager v1.2.0, sử dụng UUID của cấu hình kết nối làm một phần của hạt giống. Tính năng này được kích hoạt theo mặc định trong các phiên bản NM gần đây.

    Để bật hoặc tắt tính năng này:

    nmcli con modify "<profilename>" ipv6.addr-gen-mode stable-privacy
    nmcli con modify "<profilename>" ipv6.addr-gen-mode eui64
    
  • Linux (kernel SLAAC) hỗ trợ RFC 7217 kể từ kernel v4.1.0; tuy nhiên, nó phải được kích hoạt thủ công bằng cách lưu trữ hạt giống bí mật thông qua sysctl.

    Khóa bí mật là một chuỗi thập lục phân 128 bit (có hình dạng như một địa chỉ IPv6), phải được lưu trữ trong net.ipv6.conf.default.stable_secretsysctl. Để làm cho nó bền bỉ, nó có thể được đưa vào /etc/sysctl.d/50-rfc7217.confhoặc tương tự:

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

    Đặt bí mật sẽ tự động kích hoạt chế độ này cho tất cả các giao diện mạng. Để kiểm tra xem tính năng này có hoạt động hay không, hãy tìm "addrgenmode ổn_secret" ip -d linkhoặc giá trị "2" trong sysctl net.ipv6.conf.<ifname>.addr_gen_mode.

Địa chỉ riêng tạm thời

Như được định nghĩa trong RFC 4941, địa chỉ bảo mật tạm thời được tạo ngẫu nhiên và được luân chuyển cứ sau vài giờ.

  • Windows hỗ trợ các địa chỉ tạm thời kể từ Windows XP SP2.

    Để bật / tắt tính năng này:

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

    Lưu ý rằng Windows không còn sử dụng các địa chỉ chính dựa trên địa chỉ MAC bắt đầu bằng Windows Vista.

  • Linux (NetworkManager) : Các phiên bản gần đây của NetworkManager tự xử lý RA, mặc dù hai giá trị bên dưới có ý nghĩa giống hệt với sysctl (2 = thích địa chỉ riêng tư, 1 = thích địa chỉ chính):

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

    Ngoài ra, kể từ 1.2.0, chế độ tốt hơn đã có sẵn, thay đổi địa chỉ chính thành không còn dựa trên MAC mà thay vào đó là duy nhất cho mọi mạng (RFC 7217):

    (Lưu ý rằng địa chỉ quyền riêng tư là trực giao với chế độ addr-gen; có thể sử dụng cả hai.)

    Lưu ý bên lề: Kể từ 1.4.0, NM cũng cho phép chọn ngẫu nhiên địa chỉ MAC. Đặt wifi.cloned-mac-addressthành stableMAC khác nhau cho mỗi mạng (được khuyến nghị) hoặc randomchọn ngẫu nhiên cho mọi kết nối (có thể gây ra sự cố).

    Trong mọi trường hợp, <name>phải là tên kết nối, ví dụ WiFi SSID hoặc "Wired Connection 1". Sử dụng nmcli conđể liệt kê tất cả.

    Để đặt mặc định này cho các kết nối mới , kể từ 1.2.0, bạn có thể thay đổi /etc/NetworkManager/NetworkManager.conf:

     [connection]
     ipv6.addr-gen-mode=stable-privacy
     wifi.cloned-mac-address=stable
    
  • Linux (kernel SLAAC) hỗ trợ các địa chỉ tạm thời, nhưng không sử dụng chúng theo mặc định. Chúng có thể được kích hoạt thông qua sysctls.

    Để bật địa chỉ tạm thời và làm cho chúng được ưu tiên cho các kết nối đi:

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

    Để cho phép tạo địa chỉ tạm thời, nhưng giữ địa chỉ SLAAC tĩnh như ưu tiên:

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

    Phần allhoặc defaultphần có thể được thay thế bằng một tên giao diện cụ thể; ví dụ net.ipv6.conf.eth0.use_tempaddr.

    (Tôi đã từng ip link set eth0 down && ip link set eth0 upbuộc gán địa chỉ, nhưng bạn cũng có thể chạy rdisc6 eth0hoặc chỉ chờ vài phút cho Quảng cáo Bộ định tuyến định kỳ tiếp theo.)

  • Mac OS X - được bật theo mặc định kể từ OS X 10.7 Lion:

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

    Địa chỉ tạm thời, nếu được bật, sẽ được ưu tiên.

  • FreeBSD :

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

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

    Địa chỉ tạm thời ưu tiên? Tôi không có ý kiến. Địa chỉ autoconf dường như được ưa thích. ifconfigkhông xuất hiện để liệt kê bất kỳ thuộc tính địa chỉ.

  • OpenBSD - hỗ trợ được thêm vào 5.2 ; được bật và ưa thích theo mặc định trong 5.3 .

     ifconfig em0 autoconfprivacy
    

    ifconfig hiển thị "autoconfprivacy" bên cạnh các địa chỉ tạm thời.

Lưu ý về cấu hình:

  • Trên Linux, OS X và tất cả các BSD, hãy chỉnh sửa /etc/sysctl.confđể cài đặt vĩnh viễn.

  • Trên Windows, các thay đổi sẽ tự động tồn tại. (Bạn có thể thêm store=activevào netshlệnh nếu bạn muốn nó chỉ kéo dài đến khởi động lại.)


Một phần dựa trên Hệ điều hành IPv6 tại IPv6INT.net. Xem thêm Ghi chú IPv6 chung


Nếu địa chỉ phần cứng được sử dụng trong địa chỉ IPv6, điều đó thường có nghĩa là mạng của bạn sử dụng Tự động cấu hình không trạng thái IPv6. Trong trường hợp như vậy, bạn chỉ cần chọn hậu tố địa chỉ của riêng mình và định cấu hình IPv6 theo cách thủ công.

Tuy nhiên, mặc dù địa chỉ được thêm thủ công sẽ không có thông tin phần cứng của bạn, nó vẫn sẽ ở trạng thái tĩnh (không giống như Địa chỉ bảo mật, thường xuyên thay đổi địa chỉ). Ngoài ra, địa chỉ tĩnh có thể là một nỗi đau trong một mạng lớn hơn 2-3 thiết bị.


2
Hiệu ứng phụ tuyệt vời trên máy Mac của tôi và bộ định tuyến FRITZ! Box 7340: Tôi nhận được hai địa chỉ ifconfig. Kết nối đi sử dụng autoconf temporaryđịa chỉ ngẫu nhiên , thay đổi mọi lúc mọi nơi. Tốt Nhưng đối với các kết nối đến (khi được mở trong bộ định tuyến của tôi), tôi vẫn có thể sử dụng autoconfđịa chỉ. Tôi không ngại phơi bày điều đó trong các bản ghi DNS (mặc dù có lẽ tôi thậm chí có thể chọn một địa chỉ khác cho địa chỉ đó).
Arjan

À, sau khi spam whois, giờ chúng tôi nhận được spam IPv6: dig -t AAAA www.v6.facebook.com ;-)
Arjan

6
@Arjan: Địa chỉ IPv6 dọc theo các dòng de4d:b33fkhông tệ để ghi nhớ; Ngoài ra, chúng được đặt bởi chủ sở hữu của chúng, trong khi whoisspam là một) phiền toái và b) gây ra bởi những người bên ngoài không có quyền kiểm soát tên miền của bạn.
grawity

1
Bên cạnh đó: có vẻ như (một số) ở trên có thể yêu cầu HĐH thích địa chỉ tạm thời, nhưng các ứng dụng vẫn có thể ghi đè lên tùy chọn này .
Arjan

AFAICS sử dụng địa chỉ tạm thời (quyền riêng tư IPv6) thực sự không thể sử dụng được với một số ISP do quảng cáo bộ định tuyến có tuổi thọ tối đa ngắn vô lý là 40 giây, ghi đè cài đặt kernel. Linux xem ip acho preferred_lft. Vì vậy, các sshkết nối sẽ phá vỡ mỗi 40 giây nếu bạn kích hoạt tính năng này. Nó thậm chí không thể sử dụng được cho những người lướt web thông thường, vì mỗi lần tải xuống cũng phải hoàn thành trong vòng 40 giây.
Tino

1

FYI, điều này chỉ áp dụng cho các chương trình địa chỉ IP nhất định. Nhiều khả năng bạn (hoặc ISP của bạn) đang sử dụng cấu hình tự động IPv6, điều này đòi hỏi một khối IP khá lớn để thực hiện ngay từ đầu. Giải pháp có thể là tắt tính năng này. ISP của bạn cũng có thể sử dụng DHCP để gán địa chỉ, điều này vẫn có thể xảy ra với IPv6.


3
Đối với các khối lớn: theo Wikipedia trong "Phân bổ chung": RIR gán các khối nhỏ hơn cho các ISP, sau đó phân phối phần này trong / 48 phần cho khách hàng của họ. Thật vậy, ISP của tôi cũng gán / 48 tiền tố cho các thuê bao cấp tiêu dùng. Không quá kỳ quặc rồi sao?
Arjan

3
Sau đó đổ lỗi cho Wikipedia và dự thảo Kế hoạch địa chỉ IPv6 của Arin : Tất cả khách hàng nhận được một / 48 trừ khi họ có thể cho thấy rằng họ cần nhiều hơn 65 nghìn mạng con. Mà còn: Nếu bạn có rất nhiều khách hàng tiêu dùng, bạn có thể muốn gán / 56s đến các trang web nhà riêng - mà vẫn còn nhiều hơn tôi bao giờ cần. ;-) Nhưng, mọi thứ có thể thay đổi: ISP của tôi không bao giờ hứa điều này, mặc dù rõ ràng khách hàng của họ đã cấu hình modem / bộ định tuyến dựa trên điều này.
Arjan

3
Tôi nghĩ khi Arin nói "khách hàng", họ có nghĩa là "ISP". Bất kỳ ISP nào (bao gồm cả những người rất, rất lớn) đều có thể phân bổ một / 64 cho toàn bộ mạng của họ và được thực hiện với nó. Không cần định tuyến thêm. Nhưng việc phân bổ các khối địa chỉ IP được đánh số hàng nghìn tỷ cho khách hàng dân cư trung bình là hết sức ngu ngốc.
Ernie Dunbar

3
Rõ ràng, một lý do để chỉ định ít nhất một/56 : "Các ISP chỉ phát ra một thứ /64ngăn bạn không có bất kỳ mạng con nào. Nếu đó /64là trên giao diện WAN thì bạn sẽ không bao giờ nhận được IPv6 trên mạng LAN của mình. Đây là các ISP lỗi và họ nên khắc phục điều này bằng cách đưa ra một lượng ( /48hoặc /56) địa chỉ kha khá . "
Arjan

7
A / 64 không phải là "một khối khá lớn"; nó là khối phân bổ hợp lý nhỏ nhất cho mạng con. Một số tính năng IPv6 yêu cầu mạng con là / 64 và bạn đã quên (hoặc không nhận ra) rằng IPv6 được thiết kế phần lớn để ngăn chặn bất kỳ ai hết địa chỉ một lần nữa. Bạn phải giải phóng tâm trí của bạn khỏi suy nghĩ cũ về việc cần phải bảo tồn các địa chỉ quý giá; nó không có chỗ trong IPv6.
Michael Hampton
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.