不同网段设备相互访问

现在有一个需求,A子网和B子网处于不同网段,当网络中存在多个路由器时,要求不同路由器下属的子网可以互相通讯,同时又可以通过宽带路由器上网,这如何实现?在查阅了大量资料和参考了网上现有的解决方案下,得出如下解决方法,更加详细的说明,请设置静态路由不同网段互相访问参考。

先介绍几个基本知识。

1. 网关,简单来说就是网络中数据的关口,网关的IP地址就是具有路由功能设备的IP地址,而此类设备可以是路由器、启动路由协议的服务器或者代理服务器等。

2. 路由就是把信息从源传输到目的地的行为,在大多数宽带路由器中,未配置静态路由的情况下,内部就存在一条默认路由,这条路由将LAN口下所有目的地不在自己局域网之内的信息包转发到WAN口指定的网关去。每个信息包在经过路由器时,路由器会检查目的IP,将它和路由表中的子网掩码做与计算,并与路由条目中的IP进行对比,相同,就按照这条路由规则转发,不相同就在检查对比下一条,如果所有的都不相同,则转发到默认路由去。

3. 默认路由,路由器在转发时,它将所有非本网段的目的IP包都发到WAN口的网关去,由WAN口网关所指定的设备决定信息包是发到它自己连的内网还是发到外网去。

4. 路由器隔绝广播,划分了广播域,也就是说,路由器不会转发广播数据,不同路由器之间通讯,是通过ARP协议来获得下一跳路由器的MAC地址,ARP是基于广播的,路由器只能发现一跳范围内的其他路由器设备。

5. IPv4地址是有4段8位二进制数组成,一部分是网络位,一部分是主机位,网络位对于的子网掩码部分全为1,而主机位全为0.

情景一:

企业通过一台路由器R1上网,局域网LAN1,。因为业务需要,扩充了一台路由器R2,加入一个新的局域网段LAN2。

要使能PC1和PC2相互通讯,需要做如下图中所说的设置。

一条静态路由一般由三部分组成,目的IP地址、子网掩码和下一跳地址,按照上图的分析,新建一条静态路由所包含的信息,应该有如下内容,发往目的地址192.168.1.0网段的IP包(子网掩码为255.255.255.0)的下一跳地址为192.168.0.100.具体配置位置,如果是在路由器中,以TP-Link的为例子,在路由器配置界面,有静态路由表配置:

在设置静态路由时,网关IP必须是与本路由器LAN口IP属于同一个网段。

如果目的IP地址是一台主机的IP地址,则子网掩码必须为255.255.255.255

如果是在服务器上,可以通过命令行来配置静态路由,包括添加、删除和修改。

情景二:

小区共享性宽带接入,A用户用一台宽带路由器构建了一个局域网,B用户也用一台宽带路由器构建局域网,A、B用户各自局域网之间的主机不能相互通讯。网络拓扑如下:

要想实现PC2和PC1之间的互相访问,和情景一类似,需要在内网网关中添加两条静态路由。一般的小区网关肯定是不会随便让用户配置路由的,而且这样配置后,其他网段的电脑也可以访问PC1和PC2,这样带来了安全隐患。我们可以这样设置,不在内网网关上面添加静态路由,在R1和R2上各添加一条路由,指向对象来实现R1和R3下主机的相互访问。

情景三:

既有串联也有并联,网络中有多级路由设备的环境,这种情况可以说是情景一和情景二的整合。

类似的网络拓扑如下:

要实现PC1、PC2和PC3之间的互访,需要配置如下的静态路由:

R1:目的地址为192.168.1.0,掩码255.255.255.0,下一跳为192.168.0.100

目的地址为172.16.0.0,掩码255.255.0.0,下一跳为10.1.1.3

R3:目的地址为192.168.0.0,掩码255.255.255.0,下一跳为10.1.1.2

目的地址为192.168.1.0,掩码255.255.255.0,下一跳为10.1.1.2.

对于路由器R3来看,它只能看到R1,而看不到R2.对于R3来说,上面两条路由,可以汇总会一条,就是

目的地址为192.168.0.0,掩码为255.255.0.0,下一跳为10.1.1.2.这个网段包含了192.168.0.0~192.168.255.0所有的子网,这条静态路由会使所有目的IP在这个范围内的信息包,都转发给10.1.1.2路由器R1,这种,将多条子路由条目汇总成一条都包含在内的总路由条目,叫做路由汇总。

在大型路由器上,路由表往往很长很大,采用路由汇总可以减少路由表的长度,提高路由器效率。

路由汇总也不总是有效的,因为子网的划分是人为的,路由汇总中的其他网段可能存在其他局域网下。

上述例子中的路由汇总,不那么精确,对于192.168.0.0和192.168.1.0,网络位相同的位数有前23位,要可以通过掩码来区分这两个网段的话,需要将掩码设置为255.255.254.0,这条改进的汇总路由表应该写成这样:

目的地址为192.168.0.0,子网掩码为255.255.254.0,下一跳为10.1.1.2.这条汇总路由,只会包含192.168.0.0和192.168.0.1两个子网,这是一条精确路由。

总结:在进行路由汇总时,应该经历使用精确的汇总条目,本能汇总的条目就汇总,不能精确汇总的条目就不汇总的原则,这样有助于网络以后的扩展和维护。

时间: 2024-08-10 15:12:02

不同网段设备相互访问的相关文章

利用IPSec VPN 实现总分公司跨Internet相互访问!

1.要求 某公司为了降低人员成本,在中小城市建立了分公司,但是为了保证数据,业务和总公司同步,必须保证数据业务的安全性. 2,提出利用IPsec VPN 技术分别在分,总公司的网关路由器上搭建.                                                         实施原理  1对等体IPSec 连接需要三个步骤. (1)流量触发       IPSec 建立过程是由对等体之间发送的流量触发的,需要明确哪些流量需要被保护. (2)建立管理连接     

如何让不同主机中docker容器可以相互访问

我们都知道同一台主机中的docker容器可以相互访问,那么不同主机中的docker容器间是否可以相互访问呢?答案是可以的,解决思路是在主机中把另外主机上docker容器的网段加入到路由表中. 现有主机A 192.168.124.51,主机B 192.168.124.55,具体步骤如下: 修改一台主机docker容器使用的网段(默认是172.17.x.x),如何修改请看上一篇. 假设已经修改好docker网段,例如主机A中docker容器使用10.1.x.x网段,主机B中docker使用172.1

js对象字面量属性间相互访问的问题 和 这个问题与执行环境的关系

对象字面量属性间无法相互访问的问题: 我曾经在定义一个对象时, 并出于复用性的考虑试图复用某些属性: // test 1 var person = { firstName : "Bill", lastName : "Gates", fullName : firstName + " " + lastName // 这里报错 } alert(person.firstName); alert(person.lastName); alert(person

MFC框架类、文档类、视图类相互访问的方法

1.获取应用程序指针 CMyApp* pApp=(CMyApp*)AfxGetApp(); 2.获取主框架指针 CWinApp 中的公有成员变量 m_pMainWnd 就是主框架的指针 CMainFrame* pMainFrame = (CMainFrame*)(AfxGetApp()->m_pMainWnd); 或者 CMainFrame* pMainFrame = (CMainFrame*)AfxGetMainWnd(); 3.获取菜单指针 CMenu* pMenu = AfxGetMain

vitualbox 主机与虚拟机能相互访问的设置

1. 桥接网卡 2. 界面名称:802.11n USB Wireless Lan Card 3. 混杂模式:全部允许 4. 接入网线打勾 5. 确定 vitualbox 主机与虚拟机能相互访问的设置,布布扣,bubuko.com

多台Linux服务器SSH相互访问无需密码

摘录:http://www.linuxidc.com/Linux/2013-02/79156p2.htm 一.环境配置 1.系统:CentOS release 5.6  IP:192.168.4.200  主机名:JW01 2.系统:CentOS release 5.9  IP:192.168.4.244  主机名:JW02 3.系统:CentOS release 5.3  IP:192.168.4.232  主机名:KT01 4.系统:Red Hat  release 4  IP:192.16

iframe与主框架跨域相互访问方法

iframe 与主框架相互访问方法  http://blog.csdn.net/fdipzone/article/details/17619673/ 1.同域相互访问 假设A.html 与 b.html domain都是localhost (同域) A.html中iframe 嵌入 B.html,name=myframe A.html有js function fMain() B.html有js function fIframe() 需要实现 A.html 调用 B.html 的 fIframe(

iframe与主框架跨域相互访问方法【转】

转自:http://blog.csdn.net/fdipzone/article/details/17619673 1.同域相互访问 假设A.html 与 b.html domain都是localhost (同域) A.html中iframe 嵌入 B.html,name=myframe A.html有js function fMain() B.html有js function fIframe() 需要实现 A.html 调用 B.html 的 fIframe(),B.html 调用 A.htm

MVC项目中如何判断用户是在用什么设备进行访问

使用UAParser在C#MVC项目中如何判断用户是在用什么设备进行访问(手机,平板还是普通的电脑) 现在我们开发的很多web应用都要支持手机等移动设备.为了让手机用户能有更加好的用户体验,我们经常为手机设备专门准备一套前端的页面.这样当用户使用普通电脑来访问的时候,我们的应用就向用户展示普通电脑的页面.当用户使用手机等移动设备来访问我们的系统的时候,我们就向用户展示手机设备的页面.但是这时候另一个问题出现了.如何判断用户在使用什么设备访问我们的应用?是使用手机还是普通电脑? 网上能查到的不同的