我一直对 IP 寻址有些困惑。当一家公司从 ISP 购买互联网接入并获得用于 NAT 的内部全局 IP 地址时(假设他们只使用 PAT,并且只需要 1 个内部全局地址以简化操作),您的私有 IP 地址方案是否必须遵守您从 ISP 购买的网络类别?从 ISP 购买互联网接入时,它是否与网络类别一致?
我对这个过程本身感到困惑,例如我家里的公共 IP 是 24.xxx(传统上是 A 类网络 0-127 范围),但在家里显然我们都有 C 类网络,所以我对整个事情感到困惑。
我注意到大多数公司使用 172.16-31.0.0 私有地址方案,并从那里进一步划分子网。这是 B 类私有地址方案,但这是因为他们购买了 B 类网络吗?还是由于 CIDR,无需购买任何类别的网络,互联网接入是唯一需要购买的东西,然后您将从 ISP 获得公共 IP,而私有方案则由公司和网络工程师决定。例如,一家公司是否可以从其 ISP 购买互联网接入,然后将内部网络设为 10.0.0.0 并从那里划分子网,从而为自己提供尽可能多的子网和主机 IP?
如果您现在对我的问题感到困惑,那么总结一下,我基本上想知道当公司购买互联网接入时,其 ISP 管理的公共 IP(内部全局 IP)是否对您的私有 IP 地址方案有任何影响(例如,必须使用 172.16.0.0/16 作为起点,而不是因为您的内部全局地址而能够使用我想要的任何地址),然后从那里进行子网划分。任何对此问题的澄清都将不胜感激。我很抱歉这篇文章太长了!谢谢大家。
答案1
首先,要明白网络类别的概念在 20 世纪 90 年代中期就失去了意义。在重视类别的协议中,有些版本接受子网掩码作为附加参数,而不关心 IP 地址属于哪个类别。
有三个范围私有 IP 地址,每个类各一个,但类不再有任何意义,除非您使用的是不允许使用 IP 地址指定子网掩码的古老协议。有意义的是与每个“类”关联的子网:
RFC1918 name IP address range subnet mask
24-bit block 10.0.0.0 - 10.255.255.255 /8 or 255.0.0.0
20-bit block 172.16.0.0 - 172.31.255.255 /12 or 255.240.0.0
16-bit block 192.168.0.0 - 192.168.255.255 /16 or 255.255.0.0
如果你的公司确实向客户分发私人地址(这称为运营商级 NAT),那么就您的计算机或网络连接到 ISP 的接口而言,您只能使用 ISP 提供的服务。
其次,你的路由器有两个接口。一个面向 IP,从你的 ISP 的 DHCP 服务器接收 IP。 另一个面向你的网络,完全由你决定如何处理。现在,如果您要重用 ISP 正在使用的任何地址,那么您将不得不处理一些复杂的 NAT 规则。消费级路由器可能不支持这种复杂的 NAT 规则 - Linux PC 可以iptables
做到这一点,但设置起来很困难。
因此,这是有可能的,但通常很多更简单的方法是选择您的 ISP 未使用的范围。选择哪个范围并不重要。10.0.0.0/8 通常是企业按照惯例选择的,但这只是惯例。
现在,有了正确的 NAT 设置,您可以凭空选择任何 IP 范围并将其用于您的家庭网络。但是,如果您的配置有错误,发往您家庭网络的流量可能会转而流向外部主机。上述“私有”IP 范围被约定为“不可路由” - 如果它们恰好到达您的 ISP,您的 ISP 应该丢弃它们。当然,运营商级 NAT 是个例外。因此,如果您使用 ISP 未使用的私有 IP 范围,它可以保护您免受意外配置错误的影响。
答案2
将私有/公共 IP 想象成一组同心/嵌套的圆(一个圆内一个圆)。
为了便于类比,假设每个圆都有 365 个可能的角度,这些角度可以在穿过圆半径的直线和另一条直线之间形成。因此,这与 IP 空间类似,只是可用 IP 的数量与可用角度的数量不同。
最外层的圆圈是公共 IP 空间,这意味着任何连接到 IPv4 的人都可以访问这些 IP,并且这个 IP 是相同的到处,无论如何。当任何地方的任何计算机尝试访问公共 IP 空间上的 IP 时,它将被路由到公共互联网上的同一台物理和逻辑计算机。
然而,外圈内有几个“洞”。这些洞是 IP 地址,可能永远不会被分配到公共 IP 地址空间。这些漏洞就是所谓的私有子网。
现在,在我们的图表中,公共 IP 地址空间中有一个小洞,我们把这个小洞称为“10.0.0.0/8”空间。您在问题中提到了 CIDR,所以我假设您知道它是什么。
将每个连续的内圈视为 NAT 或私有 LAN(相同概念)。每个内圈都可以声明自己位于其想要的任何子网上,但它只能是有效的网络配置(如果位于指定私有子网,如 192.168.1.0/24 或 10.10.0.0/16 (这只是两个例子)。
关于这些嵌套级别,通常适用以下几条规则:
这是一个错误内外层子网声明其私有子网包含已声明为外层子网一部分的 IP 地址。例如,如果第一级 NAT 声明它想要 10.10.0.0/16,而第二级 NAT 试图声明 10.10.6.0/24,则会出现问题。
除了网关(既是外部 NAT 成员又是内部 NAT 成员的主机)之外,在给定子网内分配 IP 地址的主机无法访问任何内部子网内的主机,除非设置了明确的路由规则(例如,端口转发)。例如,如果第一层 NAT 位于 192.168.1.0/24 上,第一层网关为 192.168.1.1,而主机 192.168.1.2 创建私有子网 192.168.2.0/24 并将自己指定为 192.168.2.1,则 192.168.1.0/24 上的主机通常无法访问 192.168.2.0/24 内的任何内容——同样,除非明确的软件中的配置提供了何时以及如何进行路由的规则。