局域网两个不同网段互相访问 - 转载
局域网两个不同网段互相访问 - 转载
局域网内为便于管理和接入,经常划分为不同的网段,不同网段的 PC 通过一个路由器与上层网段连接,可访问外网或上层网络;但上层或同层网络不同网段 PC 不能访问其他网段 PC。
PC 通过一个路由器与主网或上层网络连接时,也出现上述现象:自己的路由器连接到主网上,PC 和嵌入式设备连接到路由器,PC 和嵌入式设备可访问上层网络或外网,但上层网络或其他网段 PC 不能访问自己 PC 或嵌入式设备。
可通过设置上层网络的网关的静态路由实现互相访问;若是同级,可互相指定路由。
基础知识
-
网关,简单来说就是网络中数据的关口,网关的 IP 地址就是具有路由功能设备的 IP 地址,而此类设备可以是路由器、启动路由协议的服务器或者代理服务器等。
-
路由就是把信息从源传输到目的地的行为,在大多数宽带路由器中,未配置静态路由的情况下,内部就存在一条默认路由,这条路由将 LAN 口下所有目的地不在自己局域网之内的信息包转发到 WAN 口指定的网关去。每个信息包在经过路由器时,路由器会检查目的 IP,将它和路由表中的子网掩码做与计算,并与路由条目中的 IP 进行对比,相同,就按照这条路由规则转发,不相同就在检查对比下一条,如果所有的都不相同,则转发到默认路由去。
-
默认路由,路由器在转发时,它将所有非本网段的目的 IP 包都发到 WAN 口的网关去,由 WAN 口网关所指定的设备决定信息包是发到它自己连的内网还是发到外网去。
4. 路由器隔绝广播,划分了广播域,也就是说,路由器不会转发广播数据,不同路由器之间通讯,是通过 ARP 协议来获得下一跳路由器的 MAC 地址,ARP 是基于广播的,路由器只能发现一跳范围内的其他路由器设备。
- IPv4 地址是有 4 段 8 位二进制数组成,一部分是网络位,一部分是主机位,网络位对于的子网掩码部分全为 1,而主机位全为 0.
随着宽带接入的普及,很多家庭和小企业都组建了局域网来共享宽带接入。而且随着局域网规模的扩大,很多地方都涉及到 2 台或以上路由器的应用。当一个局域网内存在 2 台以上的路由器时,由于其下主机互访的需求,往往需要设置路由。由于网络规模较小且不经常变动,所以静态路由是最合适的选择。可是如果是多网段,又想实现不同网段电脑互访,设置静态路由就要掌握方法了。
本文作为一篇初级入门类文章,会以几个简单实例讲解静态路由,并在最后讲解一点关于路由汇总(归纳)的知识。由于这类家庭和小型办公局域网所采用的一般都是中低档宽带路由器,所以这篇文章就以最简单的宽带路由器为例。(其实无论在什么档次的路由器上,除了配置方式和命令不同,其配置静态路由的原理是不会有差别的。)常见的 1WAN 口、4LAN 口宽带路由器可以看作是一个最简单的双以太口路由器+一个 4 口小交换机,其 WAN 口接外网,LAN 口接内网以做区分。
路由就是把信息从源传输到目的地的行为。形象一点来说,信息包好比是一个要去某地点的人,路由就是这个人选择路径的过程。而路由表就像一张地图,标记着各种路线,信息包就依靠路由表中的路线指引来到达目的地,路由条目就好像是路标。在大多数宽带路由器中,未配置静态路由的情况下,内部就存在一条默认路由,这条路由将 LAN 口下所有目的地不在自己局域网之内的信息包转发到 WAN 口的网关去。宽带路由器只需要进行简单的 WAN 口参数的配置,内网的主机就能访问外网,就是这条路由在起作用。本文将分两个部分,第一部分讲解静态路由的设置应用,第二部分讲解关于路由归纳的方法和作用。
静态路由设置
下面就以网络初学者遇到的几个典型应用为例,说明一下什么情况需要设置静态路由,静态路由条目的组成,以及静态路由的具体作用。
例一:最简单的串连式双路由器型环境
这种情况多出现于中小企业在原有的路由器共享 Internet 的网络中,由于扩展的需要,再接入一台路由器以连接另一个新加入的网段。而家庭中也很可能出现这种情况,如用一台宽带路由器共享宽带后,又加入了一台无线路由器满足无线客户端的接入。
公司里原有一个局域网 LAN 1,靠一台路由器共享 Internet,现在又在其中添加了一台路由器,下挂另一个网段 LAN 2 的主机。经过简单设置后,发现所有主机共享 Internet 没有问题,但是 LAN 1 的主机无法与 LAN 2 的主机通信,而 LAN 2 的主机却能 Ping 通 LAN 1 下的主机。这是怎么回事?
这是因为路由器隔绝广播,划分了广播域,此时 LAN 1 和 LAN 2 的主机位于两个不同的网段中,中间被新加入的路由器隔离了。所以此时 LAN 1 下的主机不能“看”到 LAN 1 里的主机,只能将信息包先发送到默认网关,而此时的网关没有设置到 LAN 2 的路由,无法做有效的转发。这种情况下,必须要设置静态路由条目。此种网络环境的拓扑示意如下:
图 1(注:图中省略了可能存在的交换层设备)
如图一所示,LAN 1 为 192.168.0.0 这个标准 C 类网段,路由器 R1 为原有路由器,它的 WAN 口接入宽带,LAN 口(IP 为 192.168.0.1)挂着 192.168.0.0 网段(子网掩码 255.255.255.0 的 C 类网)主机和路由器 R2(新添加)的 WAN 口(IP 为 192.168.0.100)。R2 的 LAN 口(IP 为 192.168.1.1)下挂着新加入的 LAN 2 这个 192.168.1.0 的 C 类不同网段的主机。
如果按照共享 Internet 的方式简单设置,此时应将 192.168.0.0 的主机网关都指向 R1 的 LAN 口(192.168.0.1),192.168.1.0 网段的主机网关指向 R2 的 LAN 口(192.168.1.1),那么只要 R2 的 WAN 口网关指向 192.168.0.1,192.168.1.0 的主机就都能访问 192.168.0.0 网段的主机并能通过宽带连接上网。这是因为前面所说的宽带路由器中一条默认路由在起作用,它将所有非本网段的目的 IP 包都发到 WAN 口的网关(即路由器 R1),再由 R1 来决定信息包应该转发到它自己连的内网还是发到外网去。但是 192.168.0.0 网段的主机网关肯定要指向 192.168.0.1,而 R1 这时并不知道 192.168.1.0 这个 LAN 2 的正确位置,那么此时只能上网以及本网段内的互访,不能访问到 192.168.1.0 网段的主机。这时就需要在 R1 上指定一条静态路由,使目的 IP 为 192.168.1.0 网段的信息包能转发到路由器 R2 去。
一条静态路由条目一般由 3 部分组成:1)目的 IP 地址或者叫信宿网络、子网;2)子网掩码;3)网关或叫下一跳。
例一中 R1 上设定的静态路由条目就应该为:目的 IP 地址 192.168.1.0(代表 1.x 这个网段),子网掩码 255.255.255.0(因为是 C 类网段),下一跳 192.168.0.100。如图 2,此图为 TP-LINK R410 中的静态路由表配置项,保存后即可生效。如果是 Cisco 的路由器,则在全局配置模式下键入命令:Router(config)# ip route 192.168.1.0 255.255.255.0 192.168.0.100。
注意:其中的网关 IP 必须是与 WAN 或 LAN 口属于同一个网段。**那条默认路由写出来就是:目的 IP 为 0.0.0.0,子网掩码 0.0.0.0,下一跳为 WAN 口上的默认网关,有时我们也称它为“8 个 0 的默认路由”。**另外,如果目的 IP 是一个具体的主机 IP(如 192.168.1.2),那么路由条目应为:目的 IP 192.168.1.2,子网掩码 255.255.255.255,下一跳或网关 192.168.0.100。
使用此种连接方式,还可以方便的使用路由器内置的访问控制列表来设置 LAN 2 下主机的访问权限,这对企业用户而言还是很方便的。宽带路由器中的“防火墙设置”其实就是一个简化的访问控制列表,即 ACL- Access Control Lists。如:希望局域网 LAN 2 中 IP 地址为 192.168.1.7 的计算机不能收发邮件,IP 地址为 192.168.1.8 的计算机不能访问企业内部位于 LAN 1 的 ERP 服务器(假设其 IP 为 192.168.0.10),对局域网中的其它计算机则不做任何限制,这时您需要指定如下的数据包过滤表,如图:
例二:两台平级并连的路由器,下挂子网中主机需要互相通信的环境这种情况
两台平行并连的路由器上层应该还有一个总的出口网关,而这个网关有可能因某种原因不便设置路由,而此时网络中存在 3 个不同的网段。
我家是小区共享型的宽带接入,我自己用一台宽带路由器构建了一个家庭局域网以共享 Internet,正好邻居也跟我一样用宽带路由器构建了另一个家庭局域网。而我们各自局域网内的主机之间却不能互相通信,根本 ping 不通,这是怎么回事?
这种情况下整个小区其实就是一个大的局域网,主机不能互通的原因,其实跟例一中 LAN 1 不能 ping 通 LAN 2 的原因一样,都是因为上层的默认网关不知道目的 IP 所属网段的正确位置,无法做有效转发所致。这种环境的典型示意图如下:
图中内网网关就是小区的网关,R1 和 R3 分别为两户的宽带路由器,它们之间一般通过楼层的接入交换机和小区的骨干交换机连接在一起,此图省略了这一部分。图 4 的这种情况,只要在网关设备上按例一的方式添加两条路由就能实现两个子网中主机的互访,而且其 10.0.0.0 这个 A 类网段中存在的主机也都能通过这两条路由访问到 R1 和 R3 下的内网机。但是如果是小区的网关设备,那肯定是不会让用户随便配置路由条目的,而且你应该也不想小区内的所有用户都能直接访问到你的内网主机。这时,我们可以在 R1 和 R3 上各添加一条路由指向对方来实现 R1 和 R3 下主机直接互访的效果。
在 R1 上:目的 IP 地址 172.16.0.0,子网掩码 255.255.0.0(B 类网段),下一跳 10.1.1.3。
在 R3 上:目的 IP 地址 192.168.0.0,子网掩码 255.255.255.0(C 类网段),下一跳 10.1.1.2。
注:有些新型小区中使用了 P-VLAN 技术,这种网络的情况比较复杂,这样上面简单的静态路由设置有可能无法达到目的。
例三:既串且并,网络中有多级路由设备的环境
这种情况可以说是例一和例二两种应用的整合和延伸,看似复杂其实简单。如果像例二中那样的环境中,我家里的局域网再添置一个路由器,下挂另一个网段以做扩展,那要怎么设置呢?
这种网络结构,确实就是将例一和例二合在一起了。这时一共有 4 个网段并存,我们的设置是要让两户家庭局域网下的 3 个子网内主机能够互通,而此时小区的网关当然还是不能去设置的。其拓扑示意图如下:
可以看到图 5 就是将图 1 和图 4 整合在一起了。既然拓扑图是例一、例二的结合,那将例一、例二中的路由条目加在一起是不是就可以了呢?当然也不是这么简单,如果只是配置了前两例的路由条目,R3 下的主机是无法直接访问到 R2 下的 192.168.1.0 这个子网的。所以在 R3 上还要加一条到 192.168.1.0 这个子网的路由。静态路由条目配置如下:
R1:目的 IP 地址 192.168.1.0,子网掩码 255.255.255.0,下一跳 192.168.0.100。
目的 IP 地址 172.16.0.0,子网掩码 255.255.0.0,下一跳 10.1.1.3。
R3:目的 IP 地址 192.168.0.0,子网掩码 255.255.255.0,下一跳 10.1.1.2。
目的 IP 地址 192.168.1.0,子网掩码 255.255.255.0,下一跳 10.1.1.2。
为何 R3 中第二条路由的下一跳不是直接指向 R2,而是也指向 R1 呢?
这个问题要从路由器间通信的原理来讲解。路由器是通过 ARP 解析协议来获得下一跳路由器的 MAC 地址,而 ARP 基于广播,在一般情况下路由器是不会转发广播,也就是广播包无法过路由。所以对于路由器 R3 来讲,R1 和 R3 才是同等级的,它只能看到 R1,不能看到 R2,这就是为何在例一的注意中提到:“其中的网关 IP 必须是与 WAN 或 LAN 口属于同一个网段”的原因。而文中所说的静态路由条目组成的第 3 部分:网关又叫下一跳,而不叫下两跳、下三跳也是这个意思。总之,在一般情况下,下一跳路由的 IP 地址肯定要跟这个路由器的某个接口是在同一个网段的。
路由汇总(或叫路由归纳)
上面例三中 R3 上的静态路由条目,其实可以写成一条:目的 IP 地址 192.168.0.0,子网掩码 255.255.0.0(不再是 C 类子网的掩码),下一跳 10.1.1.2。这时 192.168.0.0,掩码 255.255.0.0 这个网段不能称为 C 类或 B 类的子网了,由于它超过了本身 C 类网段的范围,所以可以称它是一个超网。这个网段包含了 192.168.0.0~192.168.255.0 所有的子网。也就是说,这条静态路由会使所有目的 IP 在这个范围内的信息包,都发给 10.1.1.2 的路由器 R1。将多条子路由条目汇总成一条都包含其内的总路由条目,这就是路由汇总或叫路由归纳。路由器在检查计算路由时是比较消耗资源的,路由条目越多,路由表越长,则这个过程耗时越多,所以通过路由汇总减少路由表的长度,对提高路由器工作效率是很有帮助的。虽然在举例中的这种只有几个路由器的小网络中起到的作用有限,但是如果是几十、几百甚至上千、上万个路由器的大型网络中,路由归纳起到的作用就非常明显了,可以说不使用路由归纳是不可想象的。
例四:多层次多主机网络
可能细心的读者已经发现,例三最后的那条归纳路由虽然包含了 R1 下所有的两个子网(192.168.0.0 和 192.168.1.0),但是也包含了 R1 下实际上并不存在的一些子网(192.168.2.0~192.168.255.0)。如果在整个局域网中别的路由器下还存在这些子网(如图 6,R4 下存在 192.168.2.0 子网),那么路由就会出错了,所以这条汇总路由是一条不精确的汇总。
我们都知道 IPv4 的地址是由 4 段 8 位的二进制数组成,一部分是网络位,一部分是主机位。其对应的子网掩码网络位部分就是全 1 的二进制数,而主机位就是全 0 的二进制数。每个信息包在过路由器时会检查其目的 IP,和路由表中路由条目的子网掩码做“与”运算,并与路由条目中目的 IP 进行比对,相同的就按照这条路由规则转发,不相同的就再检查比对下一条。可以看出我们做的汇总路由的操作,就是将多条路由条目中目的 IP 相同的网络位提取出来写成一条。而例三中的汇总路由之所以不精确就是因为相同部分未能全部提出来。
如例三中,R3 上的第一条:目的 IP 为 192.168.0.0;第二条:目的 IP 为 192.168.1.0。我们只提取了前面的两段 192.168,而后面的第三段网络位中还是有相同的部分的。192.168.0.0 中第三段写成二进制数为 00000000(8 位 0),182.168.1.0 中第三段写成二进制数为 00000001(7 位 0,1 位 1),那么它们的前 7 位是相同的,在对应的子网掩码位置上就应该是 11111110(7 位 1,1 位 0),合成十进制为 254。所以这条汇总路由应该写成:目的 IP 为 192.168.0.0,子网掩码 255.255.254.0,下一跳 10.1.1.2。这样,这条汇总路由只包含 192.168.0.0 和 192.168.1.0 两个子网,是一条精确的汇总路由。如图 6 中,R3 下 172.16.0.0 的主机发送到 192.168.2.0 网段的信息包,其第三段网络位写成二进制为 00000010(前 6 位 0),就不包含在这条精确的汇总路由内了。
这时我们在 R3 上静态路由条目应该为:
1.目的 IP 地址 192.168.0.0,子网掩码 255.255.254.0,下一跳 10.1.1.2。
2.目的 IP 地址 192.168.2.0,子网掩码 255.255.255.0,下一跳 10.1.1.4。
我们在进行路由汇总时应该尽量使用精确的汇总条目,本着能汇总的条目就汇总,不能精确汇总的条目就不汇总的原则。这样在网络以后的扩展和变动时能更有条理的增改路由表,减少出错的几率。
总结
静态路由因为其设置简单明了,在不常变动的网络中稳定性好,排错也相对容易,所以在中小企业甚至一些大型的园区网中也都使用静态路由,它在实际应用中是很常见的,属于网络工作人员必会的基础知识。如文中所述,静态路由的设置原理是比较简单的,但可以说它是学习各种路由协议的基础,属于学习路由知识时必学的部分。另外,在越复杂越大的网络中,汇总路由的效果就越显著,而能不能进行有效的路由汇总、汇总的效率如何,都跟网络结构中 IP 地址网段的分布有密切关系。IP 地址的部署越连续而有条理,则路由汇总越容易也越有效,所以我们在部署网络时应该重视体系化编址。(注:在子网环境中,当网络地址是以 2 的指数形式的连续区块时,路由归纳是最有效的。)
可参考文档
2. 不同网段设备相互访问