IPv4管理员的IPv6简介


26

我非常了解IPv4,但是我从来没有使用过IPv6,也从来没有真正使用过类或阅读过有意义的文档。

谁能为我提供一份针对IPv4管理员的关于IPv6的不错的介绍(在线或书中)。我主要使用Windows,而不是UNIX,但是我可以遵循大多数UNIXy的说明。


根据修订后的常见问题解答,与专业教育有关的问题不在讨论之列。
sysadmin1138

Answers:



39

去年,当我的一些工程师被要求将IPv6地址放入DNS时感到困惑时,我将其写成内部参考文件。我没有专门针对DNS,但是大多数问题似乎都围绕着地址的格式,而不是“了解”它们的工作方式。也许对其他人也有用:


因此,首先要确认的是IPv6地址看起来很难看。他们是这样。

但是我认为这仅仅是因为我们不习惯与它们打交道,我们也无法像使用IPv4地址那样在很低的层次上理解它们的含义。我认为需要一段时间才能适应它们,但我们必须从某个地方开始。

要记住的另一重要事项是IPv4地址是32位数字,而IPv6地址是128位数字。当路由器进行路由或防火墙过滤时,它们将根据该数字进行过滤。人类如何选择显示该数字完全是任意的,并且大多只是传统。因此,整封电子邮件都说明了人们如何选择代表这些数字-机器不在乎,这一切对他们来说都是零碎的。

IPv4地址是32位或4个字节。我们认为的“真实” ip地址只是已成为表示该位字符串,将这些位分成4个8位组,将每个8位表示为一个十进制数并将这些十进制数分开的标准方法。一段时间。因此,采用随机IP地址172.30.154.249。当路由器“思考”该IP地址时,它实际上是这样认为的:

10101100000111101001101011111001

我们可以将其转换为我们自己的形式:

10101100 = 172

00011110 = 30

10011010 = 154

11111001 = 249

有时您可能还会看到这些写成纯十进制数字:

10101100000111101001101011111001 = 2,887,686,905

几乎没有人故意使用此格式(*),但这是写入IPv4地址的一种历史有效方法。实际上,这种形式在1982年定义SMTP的RFC821中使用。如果要手动将邮件路由到特定计算机而不使用DNS,则可以使用两种不同类型的文字。第一个是方括号中常见的“点缀四边形”形式(“ user @ [172.30.154.249]”)。第二种是使用IP的十进制形式,并带有井号(“ user @#2887686905”)。

以上所有这些只是为了提供一个框架,用于将您对IPv4地址如何工作的了解转化为IPv6地址。就像IPv4是32位数字一样,IPv6地址也是128位数字。ARIN为MY AWESOME COMPANY(**)分配了IP范围2311:FD67 / 32。为了使示例工作,我将使用IP 2311:FD67 :: AC1E:9AF9。

因此,这是代表ip6的位字符串:

00100011000100011111110101100111000000000000000000000000000000000000000000000000000000000000000010101100000111101001101011111001

如果我们以处理IPv4位字符串的方式表示这些位字符串(将每个1字节块转换为十进制,并用句点分隔每个字符),我们将得到以下结果:

35.17.253.103.0.0.0.0.0.0.0.0.172.30.154.249

那有两个问题。首先是它看起来像一个时髦的IPv4号码,这不好,您需要一种可靠的方式来区分它们。另一个是它包含大量信息,大量数字和大量空白。因此,通过使用不同的分隔符(用冒号(:)代替period(。))并用十六进制而不是十进制表示字节来解决这两个问题。IPv4用句点分隔以十进制表示的8位块,用句点表示,IPv6用冒号分隔16位块。因此,这是我们的IPv6示例IP的细分:

0010001100010001 = 2311

1111110101100111 = FD67

0000000000000000 = 0

0000000000000000 = 0

0000000000000000 = 0

0000000000000000 = 0

1010110000011110 = AC1E

1001101011111001 = 9AF9



2311:FD67:0:0:0:0:AC1E:9AF9

它仍然有很多空白,因此可以忽略最大的零字符串,并用双冒号表示。因此,可以将上述IP编写为:

2311:FD67::AC1E:9AF9

我还没看到太多,但是据我了解,还有一个简洁的约定,允许将最后的32位写为带前缀的点分四进制,以便在从IPv4迁移到IPv6时轻松识别旧地址。 。因此,您可能已经注意到,我的IPv6示例地址以相同的32位结尾,完全构成了我的IPv4示例。当您以这种风格编写时,这尤其有用。在这种情况下,我的IPv6地址将如下所示:

2311:FD67::172.30.145.249

为了回过头来介绍IPv6,我提到我们被分配了2311:FD67 / 32。/ 32是位掩码,就像在IPv4地址中一样。从本质上讲,这意味着我们已经静态分配了我们可以创建的IPv4地址中128位的前32位。由于2311:FD67是32位,这意味着我们从该范围创建的每个IP地址都将以此开头。

换句话说,就像172.17 / 16可以被认为是“ 172.17.0.0和172.17.255.255之间的每个IP”一样,2311:FD67 / 32可以被认为是“ 2311:FD67:0:0之间的每个IP: 0:0:0:0和2311:FD67:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF”。

我认为距离开始迁移到IPv6尚需很长时间,但我希望这种解释可以帮助您更轻松地使用和引用它们。

同样,了解我在这里谈论的唯一一件事实际上是如何记下IPv6地址,这一点非常重要。路由等编号方案中似乎内置了很多智能,我实际上还没有掌握,所以我现在只能解决的是=)。

(*)我之前在一些软件调试中已经看到过十进制的IPv4表示形式,但是我几乎肯定这是一个错误或懒惰,我认为在C代码中快速打印32位整数要比打印更快。格式化一个虚线四边形以进行打印。

(**)我的公司名称和前缀都已删除


2
我见过SPAM链接使用2887686905 / some / link形式的IP地址,因此您无法确定链接的位置。
艾迪

1
我认为IPv6思维的重大转变之一将是动态命名和服务发现。很多笨拙的DNS管理员不喜欢动态更改,也不了解服务发现。
duffbeer703

“ 172.17 / 16”表示“ 172.0.0.17/16”。您必须输入“ 172.17.0.0/16”。
泰迪

3
我一直想问你:您如何在公共IPv6空间上获得32位子网掩码?太可笑了!如果我们要以发出IPv4的速度将其分发出去,那么IPv6地址空间的意义何在?
路加没有名字,2010年

我没有参与请求范围,所以我不知道详细信息。
jj33 2010年



By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.