如何在 Linux 上使用 ipcalc 计算子网掩码

已发表: 2022-08-28
蓝色背景上的笔记本电脑,显示 Linux 命令提示符。
fatmawati achmad zaenuri/Shutterstock.com

对大型网络进行子网划分可提高安全性、提高性能并以合乎逻辑的方式组织您的网络。 但有些计算很困难。 Linux ipcalc命令使计划阶段变得容易。

什么是子网?

子网划分是一种将大型网络分解为较小的连接部分的方法。 每个部分称为一个子网。 您可以选择组织您的网络,以便您的销售团队使用一个子网,HR 使用另一个子网,客户支持使用另一个子网,等等。

什么是子网,它们如何影响我的网络?
相关什么是子网,它们如何影响我的网络?

这有很大的好处。 第一个与安全和控制有关。 没有子网,一切都是一个大的“平面”网络。 通过子网划分,您可以决定哪些子网可以与其他子网通信。 不同的子网有不同的 IP 地址范围并使用不同的子网掩码,我们稍后会谈到。

您的路由器必须配置为允许来自一个子网的流量到达另一个子网。 而且,由于路由器是受管设备,因此您可以控制不同子网之间允许的流量类型和交互。

子网划分还可以防止未经授权的用户和恶意软件未经检查地在您的网络中漫游。 或者至少,它会减慢他们的速度。 把它想象成一艘潜艇。 如果您在某个部分出现船体破裂,您可以关闭舱壁门,这样船的其余部分就不会被淹。 子网就像那些隔板门。

通常,纯粹从对大型网络进行子网划分的行为会带来性能优势。 如果您的网络足够大且足够繁忙,那么性能提升将来自每个子网内网络流量的减少。 仅 ARP 流量的下降可能会使事情看起来更具响应性。

当然,一旦您的网络被划分,您的 IT 人员就更容易理解、维护和支持您的基础架构。

IP 地址和子网掩码

这一切听起来都很棒,而且确实如此。 但这意味着我们在 IP 寻址方面需要非常特别。 我们需要使用部分 IP 地址作为网络 ID,部分 IP 地址作为设备寻址。 对于子网,我们还需要为子网使用部分 IP 地址。

如何在 Linux 上使用 ip 命令
相关如何在 Linux 上使用 ip 命令

IPv4 IP 地址使用四个由句点分隔的三位数字。 它被称为点十进制表示法。 这些数字的范围是 0 到 255。前两个数字是网络 ID。 第三个用于保存子网 ID,第四个数字用于保存设备地址。 这是在简单的情况下。

数字在计算机内部表示为二进制值序列。 如果子网中的设备太少以至于设备地址编号范围内有未使用的高位,则这些“备用”二进制位可以由子网 ID 使用。

路由器或任何其他网络设备如何知道 IP 地址的组成? 什么表明子网 ID 是否完全包含在第三个数字中,或者它是否偷走了第四个数字的一​​些高位? 答案是子网掩码。

子网掩码看起来像一个 IP 地址。 它是四个三位数字,数字的范围是从 0 到 255。但它们确实需要以二进制形式考虑。

子网掩码中的每个二进制位为 1 表示 IP 地址中的相应位指的是网络 ID 或子网 ID。 子网掩码中的所有内容均为零表示 IP 地址中的相应位指的是设备地址。

让我们取一个典型的 IP 地址并为其应用子网掩码。 子网掩码的前三个数字分别为 255,第四个数字为 0。

  • IP地址:192.168.1.0
  • 子网掩码:255.255.255.0 = 11111111.11111111.11111111.00000000

二进制 255 为 11111111。如果子网掩码位设置为 1,则 IP 地址中对应的位指的是网络 ID 和子网 ID。 子网掩码中的255表示IP地址中对应数字中的所有位都是指网络ID或子网ID。

第四个数字为零,这意味着没有位被设置为 1。 所以这个数字是指网络设备地址。 所以我们的子网掩码 255.255.255.0 表示 IP 地址的前三个数字是网络 ID 和子网 ID,最后一个数字是为网络设备地址保留的。

这意味着所有这些的副作用是子网掩码还决定了 IP 地址中有多少位可用于识别单个设备。 换句话说,子网掩码确定 IP 地址中的哪些位标识子网以及该子网可以包含多少设备。

更改子网掩码会对网络产生巨大影响。 这就是为什么我们需要把它做好。

ipcalc 命令

ipcalc可以轻松计算出正确子网划分网络所需的子网掩码和 IP 地址。 ipcalc已经安装在 Fedora 36 上。我们必须在 Ubuntu 22.04 和 Manjaro 21 上安装它。

Ubuntu的命令是:

 sudo apt install ipcalc 

在 Ubuntu 上安装 ipcalc

要在 Manjaro 上安装ipcalc ,请使用:

 sudo pacman -Sy ipcalc 

在 Manjaro 上安装 ipcalc

至少,我们需要将 IP 地址传递给ipcalc 。 如果这就是我们通过的所有内容, ipcalc假定子网掩码为 255.255.255.0。 它提供有关网络和 IP 地址的信息的读数。

 ipcalc 192.168.1.0 

ipcalc 检查 IP 地址的输出

输出包含点十进制值及其等效的二进制值。 这就是每一位信息的含义。

  • 地址:192.168.1.0。 我们提供的 IP 地址。
  • 网络掩码:255.255.255.0 = 24。子网掩码。 如果命令行上没有提供子网掩码,则使用 255.255.255.0。 24 表示子网掩码中有 24 位设置为 1。 这些用于网络 ID 和子网 ID。 这些是从左边开始计算的。 设置为 1 的位将是一个完整的 1 序列。 其中不能有任何 0 位。 我们知道在二进制中设置为 1 的 8 位给我们十进制中的 255。 所以 24 意味着三组 8 位都设置为 1。在点十进制中,这给了我们 255.255.255。 其余的位将为 0,给我们 255.255.255.0。 因此,通过计算设置为 1 的位并将其表示为像 24 这样的十进制数,我们可以传达整个子网掩码。 这称为无类域间路由表示法。
  • 通配符:0.0.0.255。 这在 Cisco 网络设备中用作允许列表/阻止列表设置的一部分。
  • 网络:192.168.1.0/24。 这是以 CIDR 表示法描述的网络 IP 地址和子网。 如果有一个路由器连接到这个子网,它通常会被分配到允许范围内的最低 IP 地址。
  • 主机最小值:192.168.1.1。 连接到此子网的设备可以拥有的最低 IP 地址。
  • 主机最大值:192.168.1.254。 连接到此子网的设备可以拥有的最高 IP 地址。
  • 广播:192.168.1.255。 这是广播地址。 发送到此 IP 地址的网络数据包会回显到子网中的所有设备。
  • 主机/网络:254。您可以连接到此子网的最大设备数。 在这个例子中,我们的设备 IP 地址范围是 0 到 255,这意味着我们可以识别 256 个不同的 IP 地址(0 到 255)。 但是我们丢失了一个用于网络 IP 地址(“.0”地址)的 IP 地址,并且我们丢失了一个用于广播 IP 地址(“.255”地址)的 IP 地址。
  • C 类,专用互联网:网络的类别

网络的类别由用于网络 ID 和子网 ID 的位数以及一些用于包含网络类别的位(称为前导位)表示。

  • A 类:前导位 0。IP 地址以 0 开头。默认子网:255.0.0.0。 CIDR 表示法是 /8。
  • B 类:前导位 10。IP 地址以 128 开头。默认子网:255.255.0.0。 CIDR 表示法是 /16。
  • C 类:前导位 110。IP 地址以 192 开头。默认子网:255.255.255.0。 CIDR 表示法是 /24。
  • D 类:前导位 1110。IP 地址以 224 开头。默认子网:未定义。 CIDR 表示法是 /4。

更改子网掩码

ipcalc命令不能更改任何设置,因此我们可以尝试任何我们想要的东西,而不必担心影响任何东西。 让我们看看更改子网掩码对我们的网络有什么影响。

您可以使用 CIDR 或点十进制表示法。 对于 CIDR,空格是可选的。 这些命令都是等效的。

 ipcalc 192.168.1.0/16
 ipcalc 192.168.1.0 /16
 ipcalc 192.168.1.0 255.255.0.0 

要求 ipcalc 将新的子网掩码应用于 IP 地址的输出

这大大增加了您可以连接到该网络的设备数量。 此网络的网络设备寻址从 192.168.0.0 开始,到 192.168.255.254 结束。

和以前一样,我们丢失了一个网络地址和一个广播地址。 但这仍然为我们提供了 65,534 种可能的设备。

但它们仍然在一个子网中。

将 ipcalc 与子网一起使用

假设我们要向我们的网络添加三个子网,容量分别为 20、15 和 80 台主机。 我们可以使用-s (split) 选项,并在其后面加上我们想要的子网大小。

 ipcalc 192.168.1.0 -s 20 15 80 

使 ipcalc 将网络分成三个子网的命令

第一部分与我们之前看到的相同,其中ipcalc对包含我们在命令行中提供的 IP 地址的网络进行了分析。 我们的子网将在以下三个部分中进行描述。

ipcalc 关于将网络分成三个子网的建议

总之,我们得到的信息是:

第一个子网:

  • 子网掩码:255.255.255.224
  • 第一个设备地址:192.168.0.129
  • 最后设备地址:192.168.0.158
  • 子网容量:30台设备

第二个子网:

  • 子网掩码:255.255.255.224
  • 第一个设备地址:192.168.0.161
  • 最后设备地址:192.168.0.190
  • 子网容量:30台设备

第三个子网:

  • 子网掩码:255.255.255.128
  • 第一个设备地址:192.168.0.1
  • 最后设备地址:192.168.0.126
  • 子网容量:126台设备

注意二进制值中的绿色条目。 这些是为子网保留的位。

另外请注意,由于第一个和第二个子网具有相同的子网掩码 27,因此硬件字段中的三个位已用于子网指示符。 在第一个子网中,位为 100,在第二个子网中为 101。这种差异允许路由器正确引导网络流量。

它可以迅速升级

很明显,在更大或更复杂的网络中,很容易出现错误。使用ipcalc ,您可以确定您的值是正确的。 您仍然需要配置您的网络,但至少您知道您使用的值是正确的。