Mac-Address
基於全域 MAC 地址的 UUID
我使用包中的
uuid
命令uuid-1.6.2-8.fc17.x86_64
生成版本 1 UUID。手冊頁說預設是使用主機的真實MAC地址,但是當我解碼生成的UUID時,它使用的是本地多播地址。uuid v 1
顯示:5fc2d464-e1f8-11e1-9c3d-ff8beec65651
解碼
uuid -d 5fc2d464-e1f8-11e1-9c3d-ff8beec65651
顯示:encode: STR: c7ee12de-e1f7-11e1-99f1-53d638ec6296 SIV: 265752520555487307909286258714002350742 decode: variant: DCE 1.1, ISO/IEC 11578:1996 version: 1 (time and node based) content: time: 2012-08-09 07:56:52.526563.0 UTC clock: 6641 (usually random) node: 53:d6:38:ec:62:96 (local multicast)
如何讓它使用我的實際 MAC 地址和我的時區(
Asia/Tehran
不是 UTC)?
它沒有使用您的實際 MAC 地址的原因是程式碼寫得不好。中的
mac_address
函式uuid_mac.c
具有以下程式碼塊:if ((s = socket(PF_INET, SOCK_DGRAM, 0)) < 0) return FALSE; sprintf(ifr.ifr_name, "eth0"); if (ioctl(s, SIOCGIFHWADDR, &ifr) < 0) { close(s); return FALSE; }
它正在尋找
eth0
介面的 MAC 地址,如果找不到,它會默默地退回到隨機生成的本地多播地址。如果您的網路介面被呼叫eth1
或wlan0
其他任何東西,它無法找到它。我認為這是軟體中的錯誤。它應該使用與目前預設路由對應的硬體介面的 MAC 地址,並讓使用者在需要時指定備用介面。我建議向上游報告。
關於時區:UUID 不儲存時區。UUID 中的時間資訊儲存為 UTC 時間,因此它是這樣
uuid -d
顯示的。該程序的增強功能uuid
可能是提供一個選項,以在解碼時根據本地時區顯示時間——但無論哪種方式,該資訊都不會儲存在 UUID 本身內。