在 Linux 中,为什么使用掩码 255.255.255.240 划分子网后我无法访问我的网络?

在 Linux 中,为什么使用掩码 255.255.255.240 划分子网后我无法访问我的网络?

好的,首先我有一个双启动系统。Linux Mint 18 (Sarah) Cinnamon 和 Windows 7 SP1。幸好我这样做了,因为我是 Linux 新手。

我第一次安装 Windows 和 Linux 时,将 LAN1 设置为 192.168.1.1/255.255.255.0。无论使用哪种操作系统,我都可以毫无问题地访问 LAN1 或互联网。

最近我决定划分子网。我将 LAN1 更改为 192.168.64.80/255.255.255.240。这样我就有了 xxx80 作为网关、14 个可用 IP 作为 xxx81-xxx94(这已经足够了)以及 xxx95 作为广播。然后我重新启动了路由器,新的 IP 通过 DHCP 传播。Windows 网络收到了 DHCP 数据,我可以毫无问题地访问 LAN1 和互联网。在 Linux 上尝试了同样的操作,但无法访问 LAN1 或互联网上的任何内容。查看桌面上的网络小程序和通过终端的 ifconfig,很明显 Linux 知道新的 DHCP 数据。所以我很困惑为什么我无法访问任何东西!

是否有人了解 Linux 网络的特性,以便我可以修复那些显然需要修复的东西?

提前致谢。

答案1

我认为您的问题是您试图将网络地址用作网关地址,但您无法做到这一点。网关是网络上的主机,它必须具有主机地址。网关是所有其他主机向其发送发往不同网络的流量的主机,但它仍然是网络上的主机,并且必须使用主机地址。网络地址不可用,它不应作为任何 IPv4 数据包中的源地址或目标地址出现。

举个例子192.168.64.80/28

Network    = 192.168.64.80
First host = 192.168.64.81
Last host  = 192.168.64.94
Broadcast  = 192.168.64.95

您必须从主机地址之一中选择网关地址。有些人使用第一个主机地址作为网关的标准地址,有些人使用最后一个主机地址。有些人只是选择任何主机地址。这实际上并不重要,因为网关是网络上的主机。

答案2

Cisco 路由器有一个全局配置命令ip 子网零允许将网络地址用作主机。但是,并非所有 IP 实现都默认支持此功能,这里的情况就是如此。

然而,更高版本的 IOS 似乎已经启用ip 子网零默认情况下,因此,您的路由器让您这样配置它,可能并没有发疯。

但是,您的 Linux 机器可能未配置为使用子网零。可能有一个sysctl设置;可能有一些额外的ifconfigroute标志需要设置才能使用子网零。但是,我没有运行 Linux,所以我无法检查 Google 上搜索到的使用子网零的任何方法是否真的按预期工作。

来自思科网站配置子网零..

使用子网地址 0 进行子网划分是非法的,并且强烈建议不要这样做(如 RFC 791 中所述),因为具有相同地址的网络和子网之间可能会产生混淆。例如,如果网络 131.108.0.0 的子网地址为 255.255.255.0,则子网 0 将被写为 131.108.0.0,这与网络地址相同。

您可以使用全 0 和全 1 子网 (131.108.255.0),尽管我们不建议这样做。明确允许为全 1 子网配置接口。但是,如果您需要为 IP 地址分配整个子网空间...(使用上面粗斜体的命令)

答案3

Linux 对此没有问题。当我遇到此类问题时,通常是以下情况之一:

  • 操作系统上安装了默认防火墙,请检查:

    sudo iptables -nvxL
    

    (也请注意政策)

  • 客户端或服务器上的网络配置出现错误

  • 配置命令中的拼写错误,例如ifconfig- 它可以配置完全虚假的地址,并且某些实现不接受 CIDR(/28)表示法,您必须将其输入出来,或者使用关键字“netmask”。
  • 重复的 MAC 地址

    cat /proc/net/arp  
    
  • 另一个网络接口上同一范围内的 IP 地址

  • 路由器感染病毒,检查固件
  • 网络交换机端口冻结,请重新启动

相关内容