当我为 IP 地址设置静态路由时,为什么这些命令有效:
route -p ADD 65.182.174.0 MASK 255.255.255.0 192.168.1.1
route -p ADD 65.182.174.11 MASK 255.255.255.255 192.168.1.1
此命令不起作用
route -p ADD 65.182.174.11 MASK 255.255.255.0 192.168.1.1
我不太理解子网掩码。但我理解的是“子网掩码用于将 IP 地址分为两部分。一部分标识主机(计算机),另一部分标识其所属的网络。”
那么我在这里遗漏了什么?
答案1
配置路由时,掩码用于确定要比较哪个地址位当系统检查哪些路由与给定地址匹配时。(请注意,路由网络掩码并不总是与目标的子网掩码相同 - 它与哪些地址你想要包含在路由中,因此它可以一次指定单个主机、半个子网、16 个子网等)
例如,当您使用时65.182.174.0 mask 255.255.255.0
,实际上意味着您希望路由匹配65.182.174.<any>
- 因为网络掩码只有前 24 位设置为“1”,所以这意味着只比较前 24 个地址位,其余部分将被忽略。
因此从理论上来说,系统可以接受65.182.174.11 mask 255.255.255.0
,它仍然意味着完全相同的事情:.11
将被忽略并且仅65.182.174.
用于路线匹配。
拒绝此类条目通常是故意的,因为它可以发现某些错误 - 例如,在此示例中,操作员可能输入了错误的网络掩码(.0
他们想输入的是.255
),并且当他们只想路由单个主机时意外路由了整个子网。因此,许多系统坚持要求网络地址的所有“主机”位必须设置为 0,因为它可以更准确地指定您想要路由的内容。