在IPV6中,如果最后2个框只有3个字符怎么办?

在IPV6中,如果最后2个框只有3个字符怎么办?

我正在设置一个新路由器,它实际上允许我更改 IPV4 和 IPV6 DNS 服务器。我正在添加广告卫士 DNS对于两者来说,设置 IPV4 完全没有问题,因为我过去在需要时已经做过几次了。然而,当我开始为 IPV6 添加 in 时,我发现最后两个框仅包含 3 个字符,而不是像其他所有字符一样包含 4 个字符。换句话说,AdGuard 的 IPV6 DNS 服务器如下所示:

2a00:5a60::ad1:0ff
2a00:5a60::ad2:0ff

现在,我知道“::”对于尽可能多的框来说与“0000”相同,直到添加新的地址号。因此,有 2 个带有数字的框2a005a60分别用于主服务器和辅助服务器。接下来是 4 盒0000。但接下来的部分我不确定我是否理解,最后两个框包含ad1:0ffad2/0ff

输入这些 IPV6 号码时,是否应该在只有 3 位数字的方框前面添加一个额外的“0”?我应该让它们保持原样,只保留 3 位数字而不是 4 位吗?目前我只是告诉我的路由器使用 ISP 的 IPV6,但我肯定想切换到 AdGuard,因为它可以阻止许多不同的烦恼。

您能提供的任何帮助都会很棒!多谢!

答案1

根据RFC 4291 第 2.2 节您可以通过以下方式缩短任何包含零的地址:

  • 可以删除整个零字符串,您只能执行一次。

      1234:5678:0000:0000:0000:0000:0000:abcd  
      1234:5678::abcd 
    
  • 可以去掉4个零,只留下一个零。

      1234:0000:5678:0000:abcd:0000:ef00:0000  
      1234:0:5678:0:abcd:0:ef00:0  
    
  • 可以删除前导零

      1234:000a:000b:000c:000d:000e:000f:0000  
      1234:a:b:c:d:e:f:0  
    

RFC 的关键引用:

请注意,不必在各个字段中写入前导零,但每个字段中必须至少有一个数字。

因此从技术上讲,只要每个字段中至少有 1 个十六进制数字,您就可以省略最多任何前导零,但整个字段只有零的例外情况(它们可以缩写为::)。因此 AdGuard 可以省略 1 个零或两个零。两者都是有效的缩写。正如用户 JdeBP 指出的那样,AdGuard 使用了一种域名黑客“出现‘leet’并使其 DNS 服务器 IPv6 地址在其 doco 中的最后两个词中读作‘ad off’和‘bad off’”。

因此,在您的情况下,完整地址是:

2a00:5a60:0000:0000:0000:0000:0ad1:00ff
2a00:5a60:0000:0000:0000:0000:0ad2:00ff

并且可以缩短为:

2a00:5a60::ad1:ff
2a00:5a60::ad2:ff

然而,正如前面提到的,他们希望它显示为“广告关闭”。

相关内容