首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将IPV6转换为nibble格式的PTR记录

将IPV6转换为nibble格式的PTR记录
EN

Stack Overflow用户
提问于 2011-07-08 03:27:11
回答 5查看 6.2K关注 0票数 6

我需要将一个ipv6地址转换成它的nibble格式,以便动态地创建ptr记录。以下是我从维基百科获得的信息:

IPv6反向分辨率 IPv6地址的反向DNS查找使用专用域ip6.arpa。IPv6地址显示为此域中的名称,顺序相反,表示为十六进制数字作为子域。例如,对应于b.a.9.8.7.6.5.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.8.b.d.0.1.0.0.2.ip6.arpa.地址2001:db8::567:89ab的指针域名是IPv6

我唯一能找到的关于小吃的东西就是pack函数,http://www.php.net/pack。我在谷歌搜索这个问题时找不到任何解决方案。

任何帮助都是非常感谢的。

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2011-07-08 07:44:22

给定一个适合现代的PHP版本(Windows5.1.0,或>=上的5.3+ ),使用inet_pton函数将IPv6地址解析为一个16字节数组,然后使用标准的字符串操作来反转它。

代码语言:javascript
复制
$ip = '2001:db8::567:89ab';
$addr = inet_pton($ip);
$unpack = unpack('H*hex', $addr);
$hex = $unpack['hex'];
$arpa = implode('.', array_reverse(str_split($hex))) . '.ip6.arpa';
票数 12
EN

Stack Overflow用户

发布于 2012-01-10 23:09:16

您可以使用ipv6calc命令(UNIX/Linux)行工具从这里

例如:

代码语言:javascript
复制
$ ./ipv6calc --out revnibbles.arpa 2001:db8::1
No input type specified, try autodetection...found type: ipv6addr
1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.8.b.d.0.1.0.0.2.ip6.arpa.

您可以嵌入这是一个脚本来吃掉您的前向区域文件并创建PTRs

票数 4
EN

Stack Overflow用户

发布于 2011-09-16 14:44:12

这是相反的,基于Alnitak的伟大代码,以函数的形式:

代码语言:javascript
复制
function ptr_to_ipv6($arpa) {
    $mainptr = substr($arpa, 0, strlen($arpa)-9);
    $pieces = array_reverse(explode(".",$mainptr));  
    $hex = implode("",$pieces);
    $ipbin = pack('H*', $hex);
    $ipv6addr = inet_ntop($ipbin);

    return $ipv6addr;
}
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6619682

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档