我们有,
Class Range NetMask Bits Bits hosts#
----------------------------------------------------------
A 0-127 255.0.0.0 8 24 16777216 (i.e. 114.0.0.0)
B 128-191 255.255.0.0 16 16 65536 (i.e. 150.0.0.0)
C 192-254 255.255.255.0 24 8 256 (i.e. 199.0.0.0)
还,
$cat /proc/version
Linux 版本 2.6.32-amd64 (gcc 版本 4.3.2 (Debian 4.3.2-1.1) ) #1 SMP 2011 年 7 月 1 日星期二 18:36:07 UTC
$ip route show
114.0.0.0/24 dev eth1 范围链接
114.0.0.0/16 dev eth1 范围链接
114.0.0.0/8 dev eth1 范围链接
199.0.0.0/8 dev eth1 范围链接
122.0.0.0/8 dev eth1 范围链接
默认通过 16.107.200.1 dev eth0
默认通过 16.107.200.1 dev eth1
默认通过 16.107.200.20 dev eth1
默认通过 16.107.200.21 dev eth1
默认通过 16.107.200.22 dev eth1
默认通过 16.107.200.23 dev eth1
问题1.按照上述显示,使用 iproute 2009 版本我获得了持有 C 类或 B 类网络地址的 IPv4 A 类地址,反之亦然。这是一个有效的配置吗?
问题2。根据上面的显示,如果 iproute 允许添加多个默认路由,那么当数据包只需要使用一个默认路由(存在多个默认路由)进行路由时,数据包流的行为会是什么?iproute 如何过滤多个默认路由?此外,iproute 在服务器设置中允许多个默认路由是否是一个有效功能?
答案1
类别、网络掩码和 /## 都是将地址分组为块。我不喜欢使用类别,因为这个概念已经过时了——它们坚持将边界(地址的哪一部分可以更改但仍然在块中)放在一个点的位置,当 CIDR 不再存在这种限制时(类别较少的我更喜欢使用 /## 格式(即域间路由)。尽管它们规定了相同的事情,但我更喜欢使用 /## 格式而不是网络掩码,因为当边界不在边界上时,使用 /## 格式更容易。
在上面的列表中,您有三个块。 (您称它们为 A、B 和 C 类)。您可以像这样用斜线表示法表示它们:127.0.0.1/1
,,128.0.0.1/2
和192.0.0.1/2
。斜线后的数字仅指定地址开头的多少位必须相同才能使地址位于指定的块中。点之间的每个数字块值 8 位。如果您想将可以更改的边界放在点之间,您必须先将点之间的数字转换为二进制。附带说明一下,这些地址中的大多数已经分配给某人,在 NAT 后面的专用网络上使用它们可能会导致问题。如果您正在运行某些主干路由器,则只需要处理这些地址的路由。此外,某些地址(如 127.0.0.1/8)是为特殊用途保留的,使用它们也会导致问题。
路由会根据目的地告诉您的计算机如何处理流量。例如,一条路由表示198.168.0.1/16 dev eth0
将所有目标地址以 192.168 开头的流量从接口 eth0 发送出去。如果路由表示198.168.0.1/16 dev eth0 via 10.2.3.45
将所有目标地址以 192.168 开头的流量发送到 10.2.3.45(希望 10.2.3.45 知道如何处理它。默认路由是计算机在没有特定流量规则时使用的路由。默认路由会告诉您将其发送到哪台计算机。您的计算机会将所有没有路由规则的流量发送到指定的地址,希望计算机知道如何处理它。
我觉得你的问题没有多大意义,但如果你理解了,希望你能弄明白。我会尽力回答这些问题,但有些问题有点令人困惑。
我认为问题 1 的答案是,由于 CIDR,它是有效的。CIDR 基本上消除了类。
至于问题 2 和默认路由,我的计算机只会选择其中一个来使用。如果不正确(规则没有指向有效的路由器),流量就会丢失。如果您想平衡连接,那么您需要使用绑定。