从MAC转换为IPv6

Ark*_*kon 4 ipv6

我想了解如何将MAC地址转换为IPv6.例如:00:01:04:76:2A:5C应该变为FE80 :: 0201:04FF:FE76:2A5C

有人可以详细说明转换吗?我们假设一个没有随机参数的自动配置用于本地机器.

hel*_*ash 16

从MAC地址(48位)到IPv6地址(128位)逐步转换:

  1. 取mac地址:52:74:f2:b1:a8:7f
  2. 在中间抛出ff:fe:52:74:f2:ff:fe:b1:a8:7f
  3. 重新格式化为IPv6表示法5274:f2ff:feb1:a87f
  4. 将第一个八位字节从十六进制转换为二进制:52 - > 01010010
  5. 反转索引6处的位(从0开始计数):01010010 - > 01010000
  6. 将八位字节转换回十六进制:01010000 - > 50
  7. 用新计算的一个替换第一个八位字节:5074:f2ff:feb1:a87f
  8. pre-link-local prefix:fe80 :: 5074:f2ff:feb1:a87f


cor*_*tex 5

Bash/zsh 函数(现在无需 bc 即可工作):

format_eui_64() {
    local macaddr="$1"
    printf "%02x%s" $(( 16#${macaddr:0:2} ^ 2#00000010 )) "${macaddr:2}" \
        | sed -E -e 's/([0-9a-zA-Z]{2})*/0x\0|/g' \
        | tr -d ':\n' \
        | xargs -d '|' \
        printf "%02x%02x:%02xff:fe%02x:%02x%02x"
}
Run Code Online (Sandbox Code Playgroud)