保留IP地址/特殊IP地址
IPv4
IP 地址的全球性管理机构为互联网号码分配局(IANA),其下有五个局域网际网络注册管理机构(RIR)。截至2019年11月25日,IANA一级和5个RIR二级IPv4地址分配管理机构IP地址均已经分配完结;全球 IPv4 地址正式耗尽。
IPv4保留地址
IPv4保留地址中最有名的就是RFC1918,保留了三段IPv4地址共专用网络使用,就是现在最常见的常见的“内网地址”。
172.16.0.0 ~ 172.31.255.255
192.168.0.0 ~ 192.168.255.255
10.0.0.0 ~ 10.255.255.255
除这几个之外还有一些用于特殊目的的地址,下面列出,由于可供分配的IPv4已经正式耗尽,下表中IPv4部分除192.0.0.0/24特殊目的保留段继续二次分配(这个段是IANA用于特殊目的保留,比如192.0.0.0/29分给DS-Lite,192.0.0.8分给了4rd协议,等等),估计在很长时间内不会有变动了;IPv6地址数量庞大,目前还在持续分配,也就是说IPv6部分很有可能会有较大变动。下面两个表主要参考IANA的记录,具体参见最下面的参考链接。组播中协议保留地址较多(比如OSPF中的224.0.0.5-6)本文没有整理。
地址块 (CIDR) | 范围 | 地址数 | 作用域 | 用途 |
---|---|---|---|---|
0.0.0.0/8 | 0.0.0.0 – 0.255.255.255 | 224 / 16,777,216 |
软件 | 用于广播信当前主机。 RFC791 |
0.0.0.0/32 | 0.0.0.0 | 1 | 软件 | 此网络此主机。 RFC1122 |
10.0.0.0/8 | 10.0.0.0 – 10.255.255.255 | 224 / 16,777,216 |
专用网络 | 用于专用网络中的本地通信。 RFC1918 |
100.64.0.0/10 | 100.64.0.0 – 100.127.255.255 | 222 / 4,194,304 |
专用网络 | 用于在电信级NAT环境中服务提供商与其用户通信。 RFC6598 |
127.0.0.0/8 | 127.0.0.0 – 127.255.255.255 | 224 / 16,777,216 |
主机 | 用于到本地主机的环回地址。RFC1122 |
169.254.0.0/16 | 169.254.0.0 – 169.254.255.255 | 216 / 65,536 |
链路 | 用于单链路的两个主机之间的链路本地地址,而没有另外指定IP地址,例如通常从DHCP(动态主机设置协议)服务器所检索到的IP地址 RFC3927 |
172.16.0.0/12 | 172.16.0.0 – 172.31.255.255 | 220 / 1,048,576 |
专用网络 | 用于专用网络 RFC1918 |
192.0.0.0/24 | 192.0.0.0 – 192.0.0.255 | 28 / 256 |
N/A | 为IETF预留的IPv4地址,用于二次分配,(下面几项均在此表中分配);这些地址一般称为Well-Known IPv4 Address (WKA)。 RFC6890 |
192.0.0.0/29 | 192.168.0.0- 192.168.0.7 |
8 | 专用网络 | DS-Lite 环境下专用于B4和AFTR设备的IPv4地址。 RFC6333 RFC7335 |
192.0.0.8/32 | 192.0.0.8 | 1 | 专用网络 | IPv4 dummy address 用于4rd环境下icmp差错控制报文的源地址。 RFC7600 |
192.0.0.9/32 | 192.0.0.9 | 1 | 专用网络 | 用于Port Control Protocol 任意播地址。 RFC7723 |
192.0.0.10/32 | 192.0.0.10 | 1 | 专用网络 | 用TURN协议(任意播),功能和STUN协议类似用于NAT穿越。 RFC8155 |
192.0.0.171/32, 192.0.0.172/32 |
NAT64/DNS64 发现 | 2 | 专用网络 | ipv4only.arpa. A记录,RFC8880 RFC7050 |
192.0.2.0/24 | 192.0.2.0 – 192.0.2.255 | 28 / 256 |
文档 | 分配为用于文档和示例中的“TEST-NET”(测试网),它不应该被公开使用。 RFC5737 |
192.31.196.0/24 | 192.31.96.0- 192.31.196.255 |
28/ 256 |
专用网络 | AS112项目专用地址,RFC7535 |
192.52.193.0/24 | 192.52.93.0- 192.52.193.255 |
28/ 256 |
专用网络 | Automatic Multicast Tunneling (AMT)协议专用。 RFC7450 |
192.168.0.0/16 | 192.168.0.0 – 192.168.255.255 | 216 / 65,536 |
专用网络 | 用于专用网络 RFC1918 |
192.88.99.0/24 | 192.88.99.0 – 192.88.99.255 | 28 / 256 |
互联网络 | 用于6to4 任意播中继。RFC3068(已废弃) |
192.175.48.0/24 | 192.175.48.0- 192.175.48.255 |
28 / 256 |
专用网络 | Direct Delegation AS112 Service 专用地址。 |
198.18.0.0/15 | 198.18.0.0 – 198.19.255.255 | 217 / 131,072 |
专用网络 | 用于测试两个不同的子网的网间通信,benchmark。RFC1544 |
198.51.100.0/24 | 198.51.100.0 – 198.51.100.255 | 28 / 256 |
文档 | 分配为用于文档和示例中的“TEST-NET-2”(测试-网-2),它不应该被公开使用。 RFC5737 |
203.0.113.0/24 | 203.0.113.0 – 203.0.113.255 | 28 / 256 |
文档 | 分配为用于文档和示例中的“TEST-NET-3”(测试-网-3),它不应该被公开使用。 RFC5737 |
224.0.0.0/4 | 224.0.0.0 – 239.255.255.255 | 228 / 268,435,456 |
互联网 | 用于组播。 RFC1112 |
233.252.0.0/24 | 233.252.0.0 – 233.252.0.255 | 28 / 256 |
文档 | 分配为用于文档和示例中的“MCAST-TEST-NET”,它不应该被公开使用 RFC5771 |
240.0.0.0/4 | 240.0.0.0 – 255.255.255.254 | 228 / 268,435,455 |
互联网 | 用于将来使用。 RFC1112 |
255.255.255.255/32 | 255.255.255.255 | 1 | 子网 | 用于受限广播地址。RFC6890 |
IPv6
地址块(CIDR) | 范围 | 地址数 | 作用域 | 用途 |
---|---|---|---|---|
::/128 | :: | 1 | 软件 | 未指定地址。RFC4291 |
::1/128 | ::1 | 1 | 主机 | 用于到本地主机的环回地址。RFC4291 |
::ffff:0:0/96 | ::ffff:0:0 – ::ffff:ffff:ffff (::ffff:0.0.0.0 – ::ffff:255.255.255.255) |
232 | 软件 | IPv4映射地址。RFC4291 |
64:ff9b::/96 | 64:ff9b:: – 64:ff9b::ffff:ffff (64:ff9b::0.0.0.0 – 64:ff9b::255.255.255.255) |
232 | 全球互联网 | 用于IPv4/IPv6转换。(RFC 6052) |
64:ff9b:1::/48 | 280 | 用于IPv4/IPv6转换。(RFC 6052) | ||
100::/64 | 100:: – 100::ffff:ffff:ffff:ffff | 264 | N/A | 废除的IPv6地址前缀,Discard-Only Address Block,用于黑洞路由。RFC6666 |
2001::/23 | 2001:: – 2001:01ff:ffff:ffff:ffff:ffff:ffff:ffff |
2105 | N/A | 为IETF预留的IPv6特殊用途地址表,用于二次分配,(下面几项均在此表中分配); |
2001::/32 | 2001:: – 2001::ffff:ffff:ffff:ffff:ffff:ffff | 296 | 全局 | 用于Teredo通道。 |
2001:1::1/128 | 2001:1::1/128 | 1 | 专用 | 用于Port Control Protocol 任意播地址。 RFC7723 |
2001:1::2/128 | 2001:1::2/128 | 1 | 专用 | 用TURN协议(任意播),功能和STUN协议类似用于NAT穿越。 RFC8155 |
2001:2::/48 | 2001:2:: 2001:2::ffff:ffff:ffff:ffff:ffff |
280 | 专用 | 用于测试,benchmark。RFC5180 RFC Errata 1752 |
2001:3::/32 | 2001:3::/32 2001:3:: |
296 | 专用 | Automatic Multicast Tunneling (AMT)协议专用。 RFC7450 |
2001:4:112::/48 | 2001:4:112:: – 2001:4:112::ffff:ffff:ffff:ffff:ffff |
280 | 专用 | AS112项目专用地址,RFC7535 |
2001:10::/28 | 2001:10:: – 2001:1f:ffff:ffff:ffff:ffff:ffff:ffff | 2100 | 软件 | 已弃用(先前为ORCHID)。 |
2001:20::/28 | 2001:20:: – 2001:2f:ffff:ffff:ffff:ffff:ffff:ffff | 2100 | 软件 | ORCHIDv2。 |
2001:30::/28 | 2001:30:: – 2001:3f:ffff:ffff:ffff:ffff:ffff:ffff | 2100 | 专用网络 | Drone Remote ID Protocol Entity Tags (DETs) RFC9374 |
2001:db8::/32 | 2001:db8:: – 2001:db8:ffff:ffff:ffff:ffff:ffff:ffff | 296 | 文档 | 用于文档和示例源代码中的地址。 |
2002::/16 | 2002:: – 2002:ffff:ffff:ffff:ffff:ffff:ffff:ffff | 2112 | 全球互联网 | 用于6to4 |
2620:4f:8000::/48 | 2620:4f:8000:: 2620:4f:8000::ffff:ffff:ffff:ffff:ffff |
280 | 专用网络 | Direct Delegation AS112 Service 专用地址。 |
fc00::/7 | fc00:: – fdff:ffff:ffff:ffff:ffff:ffff:ffff:ffff | 2121 | 专用网络 | 用于专用网络中的本地通信。 RFC4193 |
fe80::/10 | fe80:: – febf:ffff:ffff:ffff:ffff:ffff:ffff:ffff | 2118 | 链路 | 用于主机之间的链路本地地址(link local) |
ff00::/8 | ff00:: – ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff | 2120 | 全球互联网 | 组播地址。 |
下面是一些关于地址段的疑问,主要来自ChatGPT的回答,准确度不保证:
=======
问:
IPv4用于文档和示例的三段地址,有什么区别吗?为什么会有这三段地址?
ChatGPT:
用于文档和示例的三个IPv4地址段——192.0.2.0/24、198.51.100.0/24、和203.0.113.0/24——被设计用来在文档、书籍、教程、和网络示例中提供标准化的、不会引起冲突的IP地址。这些地址段被互联网工程任务组(IETF)在RFC 5737中特别指定,旨在避免在教育材料和技术文档中使用实际的IP地址,因为实际地址的使用可能会导致意外的网络问题或安全风险。
这三个地址段的区别主要是数量和分配上的,没有技术上的差异。它们都被指定相同的用途,即用于示例和文档。选择有三个不同的段是为了提供足够的范例地址,以避免在复杂的文档或示例中出现重复,特别是在需要展示多个网络或广泛的网络交互时。在过去,技术文档和教程中常常随意使用IP地址进行示例,这导致了一些问题:
冲突与误导:如果示例使用的是可在互联网上实际路由的地址,那么按照这些指南操作的用户可能会无意中配置出与真实世界地址冲突的网络,引起数据泄露或其他网络问题。
安全:使用真实的IP地址可能会无意中暴露敏感的网络结构或安全漏洞,特别是当这些地址指向实际的设备或服务时。
清晰度:为文档和示例提供专门的地址段有助于明确指出,所讨论的配置或例子是理论上的或仅用于教学目的,而不是实际的操作指南。
因此,RFC 5737的发布旨在解决这些问题,通过提供一组明确的、安全的、不会引起冲突的IP地址范围,用于所有形式的技术文档和网络示例。这样做既促进了网络的安全性,也提高了教育材料的质量和准确性。
=======
问:
介绍一下AS112项目
ChatGPT:
AS112项目是一个专门为了处理和减轻DNS根服务器上因逆向解析私有和保留IP地址(如192.168.x.x, 10.x.x.x等)而产生的不必要流量的分布式系统。这个项目的名字来源于它使用的自治系统号(AS号),即AS112。私有地址范围和某些特殊的地址块在互联网上是不应该路由的,但是,由于错误配置的DNS服务器或者误导的DNS查询,这些地址有时会被请求解析,从而生成向根DNS服务器的查询。
背景
在IPv4地址空间中,有几个地址块是保留用于私有网络的,根据RFC 1918,这包括了10.0.0.0/8、172.16.0.0/12、和192.168.0.0/16。这些地址在互联网上是不可路由的,仅用于组织内部网络中。然而,由于误配置,这些私有地址有时会被错误地包括在对外的DNS查询中,这些查询最终会到达根DNS服务器,造成不必要的负担。AS112项目的作用
AS112项目旨在减轻这种不必要的负担。它通过部署一系列的DNS服务器,这些服务器专门响应针对保留地址和特定非公共地址的逆向DNS查询。这些AS112节点会拦截这些本应在本地处理的查询,从而减少对根DNS服务器的影响。如何工作
AS112项目的服务器部署在全球多个地点,这些服务器配置为权威应答特定保留IP地址范围内的逆向DNS查询。当一个错误配置的设备或系统试图解析这样一个私有地址时,这些查询会被路由到最近的AS112节点而不是传统的根服务器。AS112节点会返回一个“无记录”响应,从而减少了根服务器的查询负担并提高了整体的DNS系统效率。项目的影响
通过处理大量的无效查询,AS112项目显著减少了对根DNS服务器的不必要流量,帮助维持了互联网基础设施的稳定性和效率。尽管这个项目直接对终端用户的影响很小,但它对保持整个互联网的健康运行起着重要的作用。结论
AS112项目是互联网技术社区自发组织的一个典型例子,它展示了如何通过合作和技术创新来解决共同面临的问题。通过为错误配置或误导的DNS查询提供一个集中处理点,AS112有效地减轻了根DNS服务器的压力,从而提高了互联网的稳定性和性能。
=========
问:
介绍一下Automatic Multicast Tunneling (AMT)
ChatGPT:
Automatic Multicast Tunneling (AMT) 是一种设计用来促进多播内容跨越不支持多播的网络传输的技术。它允许位于多播无法直接到达的网络中的接收者,如通过单播连接的用户,能够接收到多播流。AMT 通过在多播支持的网络边界和接收者之间建立一个隧道来实现这一点,使得多播数据可以被封装并通过单播网络传输给最终用户。这样,即便是在不具备多播支持的网络环境下,用户也能够接收到多播内容。
AMT 的工作原理
发现阶段:AMT 客户端(通常位于希望接收多播流的接收者设备上)首先与一个 AMT 中继(一种位于互联网上,能够访问多播内容的服务器)进行通信,以建立连接。这通常通过发送一个 AMT 发现消息到一个已知的 AMT 中继任播地址来实现。
请求阶段:一旦 AMT 中继响应,AMT 客户端便知道了一个可用的中继服务器地址。随后,客户端向该中继服务器发送一个 AMT 请求消息,请求建立一个到特定多播组的隧道。
数据传输阶段:AMT 中继接受请求后,开始将多播数据封装在单播包中,通过互联网传输给 AMT 客户端。客户端收到数据后,解封装并恢复成原始的多播数据包,然后可能会在本地网络上进行多播或直接处理。
AMT 的应用
AMT 最常见的应用场景包括跨越单播网络传输多播视频流(例如,电视直播或实时事件直播),以及在企业网络中实现跨地域的内部多播应用(如,视频会议和实时数据分发)。AMT 的优点
扩展性:AMT 允许多播内容提供者覆盖那些原本由于网络限制无法达到的用户。
效率:通过利用网络中已有的多播能力,AMT 可以减少在网络上的冗余数据传输,提高了数据分发的效率。
灵活性:AMT 为多播内容的分发提供了一种即使在单播环境下也能工作的解决方案,增强了网络内容分发的灵活性。总结
AMT 通过为多播和单播网络之间建立一个简单的隧道,有效地桥接了这两种网络技术的差距。这不仅使得多播应用能够扩展到更广泛的网络环境,也为用户带来了更丰富的内容接入方式,无论他们所在的网络环境是否原生支持多播。
https://zh.wikipedia.org/wiki/保留IP地址
https://www.as112.net/
https://www.infoq.cn/article/vpDCmupCW3MEv3L2kx41
https://www.iana.org/assignments/iana-ipv4-special-registry/iana-ipv4-special-registry.xhtml
https://www.iana.org/assignments/iana-ipv6-special-registry/iana-ipv6-special-registry.xhtml