在客户仓库中,我正在安装 Pick to Light 系统,但服务器和 P2L 控制器之间存在连接问题。有时它们可以通信,有时则不能。
他们的 IT 使用 192.168.1.x 和 192.168.2.x 的 IP,子网掩码为 /20。我注意到,在 1.x 和 2.x IP 池中,他们使用相同的网关,实际上是 192.168.1.1。他们的服务器有 ip 192.168.1.50,他们为我的 P2L 控制器提供了 192.168.2.200。
我的问题是:
192.168.2.x 和 192.168.1.x 是否可以因为掩码为 20 而不需要使用网关直接通信?
192.168.2.x 网络是否可以由于掩码为 20 而使用 192.168.1.1 网关?
这种做法是否可靠,或者无论子网掩码如何,每个“子网”都必须拥有自己的网关?
谢谢
答案1
- 是的。如果子网掩码小于 255.255.252.0 (CIDR /22),则所有 IP 地址为 192.168.1.x 和 192.168.2.x 的设备都属于同一子网,不需要路由器即可相互通信。
- 是的。192.168.0.1 - 192.168.15.254 范围内的地址使用 /20 掩码 (255.255.240.0) 形成一个子网,并且可以使用相同的默认网关,其 IP 必须在同一范围内;在本例中为 192.168.1.1。
- 是的。网关路由器的工作是转发进出子网的流量。如果没有网关路由器,流量只能在子网内流动。因此,网关必须具有同一范围内的 IP 接口和不同子网上的另一个 IP 接口。您基本上可以将子网视为一所房子,将网关视为前门 - 人们几乎不可能通过邻居的前门离开自己的家 :-)
这里有龙 - 子网掩码、网络前缀和二进制文件
自古以来,子网都是用子网掩码来定义的。最常见的是 255.255.255.0。跨域路由表示法是分配 IP 地址的另一种方法。对于 CIDR,我们不讨论子网掩码,而是网络前缀。
IPv4 地址格式为 XXXX,每个 X 都是一个二进制8 位数字,即一个八位字节,点(.)
是字段之间的分隔符。8 位可以表示的最大值为 255,因此最小值的字符串为 0.0.0.0,最大值的字符串为 255.255.255.255。每个 IPv4 地址都位于此范围内的某个位置。
以二进制表示为:
00000000 . 00000000 . 00000000 . 00000000 = 0.0.0.0
11111111 . 11111111 . 11111111 . 11111111 = 255.255.255.255
世界上最常见的网络是 192.168.1.0,前缀为 /24。每个家用路由器默认使用此范围。可用的主机 IP 地址范围是
11000000 . 10101000 . 00000001 . 00000001 = 192.168.1.1
11000000 . 10101000 . 00000001 . 11111110 = 192.168.1.254
/24 前缀的子网掩码是
11111111 . 11111111 . 11111111 . 00000000 = 255.255.255.0
请注意,范围中的第一个和最后一个地址不能分配给主机,因为第一个是网络地址(在本例中为 192.168.0.0/24),最后一个是广播地址(在本例中为 192.168.1.255/24)。
在 CIDR 表示法中,最高有效数字是网络前缀,最低有效数字构成主机标识符。网络标识符中的位数是网络前缀。IP192.168.1.100/24因此(粗体= 网络前缀,斜体= 主机 ID):
11000000。10101000。00000001。01100100
网络前缀包含 24 位,因此表示为 /24。最多有 254 个可用的主办方,它们之间都可以直接进行通信。
如果我们需要更大的网络来容纳更多主办方,我们选择一个较小的前缀;即使用更少的数字来表示网络:
11000000。10101000。0000000 1。01100100=192.168.1.100/23
该主机可以直接与主机通信192.168.0.100/23:
11000000。10101000。0000000 0。01100100
可用的主持人整个子网中的 IP 为
从:11000000。10101000。0000000 0。00000001=192.168.0.1/23
到:11000000。10101000。0000000 1。11111110=192.168.1.254/23
子网掩码是
11111111 . 11111111 . 11111110 . 00000000 = 255.255.254.0
只要网络前缀不会改变,主办方属于同一子网,不需要通过路由器就可以直接通信。
如果我们仍然需要更大的网络,我们再次选择一个较小的网络前缀:
11000000。10101000。000000 01。01100100=192.168.1.100/22
...这给了我们子网掩码
11111111 . 11111111 . 11111100 . 00000000 = 255.255.252.0
当网络前缀为/20时,20个最高有效位用于网络前缀. 12 个最低有效位是主机标识符。因此,同一子网内可用主机的全部范围是:
从:11000000。10101000。0000 0000。00000001=192.168.0.1/20
到:11000000。10101000。0000 1111。11111110=192.168.15.254/20
...这给了我们子网掩码
11111111 . 11111111 . 11110000 . 00000000 = 255.255.240.0
网络地址为192.168.1.0/20,广播地址为192.168.15.255/20。
翻译问题中的 IP 地址:
11000000。10101000。0000 0001。00000001=192.168.1.1/20
11000000。10101000。0000 0001。00110010=192.168.1.50/20
11000000。10101000。0000 0010。11001000=192.168.2.200/20
再次,由于这些主办方分享相同的网络前缀,它们在同一个子网中,可以直接相互通信。
答案2
192.168.2.x 网络是否可以由于掩码为 20 而使用 192.168.1.1 网关?
是的,因为它们是不是独立的网络 – 两个地址都在同一个 192.168.0.0/20 网络内。
你太习惯于认为 192.168.Yx“总是”是独立的网络,但这是仅有的对于典型的 /24 前缀长度(255.255.255.0 子网掩码)来说是正确的,但您的网络并非如此;您的子网掩码涵盖 1.x 和 2.x(以及从 0.x 到 15.x 的所有路径),因此它们位于同一个网络中。
1(许多操作系统也会接受子网外的网关地址——真正重要的是网关必须“物理上”位于同一广播域中。因此,例如,如果您有两个 /24 共享同一个以太网,则一个 /24 中的设备可以使用另一个 /24 的网关地址,尽管这并不推荐并且取决于操作系统。)
这种做法可靠吗
它非常可靠,而且正是子网划分的最初方式。(即,您只是使用与通常为您提供原始 192.168.0.0/16 范围之外的 /24 的机制完全相同的机制。)
唯一的要求是子网中的所有设备都需要同意在子网掩码上。如果子网为 /20,但有人出于习惯意外将设备配置为 /24,则不匹配将导致该设备出现问题(尽管大多数情况下它仍能正常工作)。如果可能,最好通过 DHCP 自动配置。
或者每个“子网”都必须有自己的网关,而不管子网掩码是什么?
在您的网络中,192.168.1.x 和 192.168.2.x 是不是子网不再可用;整个 /20 是一大型子网。这就是子网掩码所定义的。
所以,从技术上讲,每个子网应该1有自己的网关,但这与此无关,因为无论如何您只有一个子网。
但是这里我们想直接与 192.168.2.x 通信,但它不在同一子网中,因为子网终止于 192.168.15.254。对吗?
这非常是在同一子网中。这些是十进制数,0 < 2 < 15。因此,如果子网从 0.0 开始,到 15.25 结束5(不是 254!),那么所有 2.x 地址都在范围内 - 所有 7.x 地址、所有 10.x 地址等等。
答案3
我赞扬@Perigrino69的回答。以下两点可能与您的问题有关:
- /20 是一个较大的掩码。通常使用较小的掩码来减少广播流量,这可能会导致性能问题。使用第 3 层交换机执行路由,分成多个子网和 VLAN 不会对性能造成明显影响。
- 有一个功能叫做代理地址解析协议某些路由器和接入点默认启用此功能。如果在您的场景中,运行代理 ARP 的设备地址为 192.168.1.x/24,它将使用自己的 MAC 地址响应任何 192.168.1.x 地址的 ARP 请求。如果它的响应速度比地址的实际所有者更快,则实际所有者将无法联系。我在远程站点的 /20 子网上遇到了这个问题,来自未知设备,它关闭了所有 PC,但没有关闭服务器(它们在不同的 /24 范围内)。