Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/59.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何用php从EUI64前缀和MAC地址生成IPv6_Php_Ipv6 - Fatal编程技术网

如何用php从EUI64前缀和MAC地址生成IPv6

如何用php从EUI64前缀和MAC地址生成IPv6,php,ipv6,Php,Ipv6,我需要一个用php生成IPv6地址的脚本。我知道的给定变量是EUI64前缀和设备的MAC地址。有了这些,我需要生成一个v6地址。设备没有v4地址来生成地址。 mac和前缀通过“:“like”ba:76:1b:ba:62:cb”进行划分。详细说明了如何从mac地址构建IPv6地址 您使用地址的网络部分(前64位),并使用MAC地址创建接口ID(后64位) < P>创建接口ID,取MAC地址中的48位,将其拆分为两个24位部分,在中间插入十六进制值 FFFE/代码>,并反转通用/本地位的值。,详细介

我需要一个用php生成IPv6地址的脚本。我知道的给定变量是EUI64前缀和设备的MAC地址。有了这些,我需要生成一个v6地址。设备没有v4地址来生成地址。 mac和前缀通过“:“like”ba:76:1b:ba:62:cb”进行划分。

详细说明了如何从mac地址构建IPv6地址

您使用地址的网络部分(前64位),并使用MAC地址创建接口ID(后64位)

< P>创建接口ID,取MAC地址中的48位,将其拆分为两个24位部分,在中间插入十六进制值<代码> FFFE/代码>,并反转通用/本地位的值。

,详细介绍如何从MAC地址构建IPv6地址。 您使用地址的网络部分(前64位),并使用MAC地址创建接口ID(后64位)


< P>创建接口ID,取MAC地址中的48位,将其拆分为两个24位部件,在中间插入十六进制值<代码> FFFE/代码>,并反转通用/本地位的值。

我在PHP中的结果是:<代码> $MAC=“BA:76:1B:BA:62:CB”;prefix=“fda1:384a:74de:$mac_数组=分解(“:”,$mac)$host_id=“:”$mac_数组[0]。$mac_数组[1]。”:“$mac_数组[2]。”ff:fe.“$mac_数组[3]。”:“$mac_数组[4]。$mac_数组[5]$ipv6=$prefix.“0”。$host\u id您是否正在翻转U/L位(您的
$mac_数组[0]
的第7位)?上述操作对我来说确实有效,但我不知道我得到的mac有多“干净”,因为它是在was中预生成的,我不知道mac是NIC中的BIA。除非有人推翻这一点,否则它在每个NIC上都是干净的。如果您查看的是一个已经生成的IPv6地址,可能是Windows和某些Linux版本随机生成的地址。有一种方法可以禁用它,并使用MAC仅使用SLAAC生成的版本。我现在在php中的结果是:
$MAC=“ba:76:1b:ba:62:cb”$prefix=“fda1:384a:74de:$mac_数组=分解(“:”,$mac)$host_id=“:”$mac_数组[0]。$mac_数组[1]。”:“$mac_数组[2]。”ff:fe.“$mac_数组[3]。”:“$mac_数组[4]。$mac_数组[5]$ipv6=$prefix.“0”。$host\u id您是否正在翻转U/L位(您的
$mac_数组[0]
的第7位)?上述操作对我来说确实有效,但我不知道我得到的mac有多“干净”,因为它是在was中预生成的,我不知道mac是NIC中的BIA。除非有人推翻这一点,否则它在每个NIC上都是干净的。如果您查看的是一个已经生成的IPv6地址,可能是Windows和某些Linux版本随机生成的地址。有一种方法可以禁用该功能,并且只使用使用MAC.public静态函数MAC($prefix,$MAC){//扩展MAC地址$MAC=str_replace(['.','-',':'],'',',$MAC);$MAC=dechex(hexdec($MAC)^1公共静态函数MAC($prefix,$MAC){//扩展MAC地址$MAC=str_replace(['.',''-',',':'.],“”,$mac);$mac=dechex(hexdec($mac)^1