Linux跨网段通信小实验
一、实验场景。
实验准备,Linux主机4台。分别是主机A,路由主机R1,路由主机R2,主机 C,主机A的ip是192.168.56.66/24,且只有一块网卡eth0;路由主机R1有两块网卡eth0和主机A在同一网段其ip地址是192.168.56.100/24,eth1的ip地址是172.16.56.223/16;主机R2有两块网卡eth0和主机C在同一网段其地址为10.0.0.25/8,eth1同R1在同一网段其地址为,172.16.56.200/16,主机C只有一块网卡eth0其地址为10.0.0.18/8
实验目的,实现主机A和主机C互相通信。模拟Linux主机通信原理,深入了解通信过程。
以上就是本次实验的拓扑图(图画的有点丑,看得懂就行,哈哈哈)
接下来开始试验。
1,从上面的拓扑图我们可以看出有3个网络,为了不让其他网络影响本次实验,我们在vmware里面增加3条虚拟网络
添加好虚拟网络后,现在准备4台主机,并配置好其相应的ip
说明:配置ip这里都是centos的系统,编辑其相应的文件/etc/sysconfig/network-scripts/ifcfg-eth0 或者eth1 ,然后重启网络服务就可以了。
2.开启r1,r2的转发,以及配置器路由
说明:因为A主机和R1在同一个网段,我们这里就不需要再配置到A主机的路由,只需要配置主机R1到C的路由,并指向R2为网关,也就是说要访问主机C 就必须通过R1的路由告诉报文要去找R2。开启R1的转发是因为,当报文到达R1的时候,它会检查数据报文是否是自己的,如果不是它默认会丢弃的,开启转发就表示不是本机的数据报文,它将转发到其他主机。这样配置后从A的报文理论上可以到达R2,如果打开R2的转发,报文将会到达C,但是从C回来的报文走到R2的时候,因为R2里面没有配置到A的路由,所以回来的报文还不能够到达A,接下来配置R2的路由。
说明:配置R2的路由的作用是当访问C主机的时候,C主机回应回来的报文,在经过R2是会查看R2的路由,这样从C回来的报文才能够顺利到达A
3,验证从ApingC
从CpingA
4,扩展
1.查看到达目标网络所经过的路由
说明:可以得之到达10.0.0.18 从本机经过了2个路由才到达。
2,删除同网段的路由是否能够通讯?
说明:这里要把默认路由也要删除,因为删除同网段的路由后,它默认会走默认路由,这样就可以看出删除了同网段的路由后,本机上不能和本网段的其他主机通信。
3,在r1上配置一个不是同网段的地址,主机A是否能够与之通讯?
说明:是可以通讯的,因为在Linux里ip是属于主机,不是属于某块网卡,只要主机A有到达主机R1的路由,就可以和R1上的所有ip通讯。这里主机A是走的默认路由
4,将R1的转发关了,数据报文还能到达C吗?
说明:是不可以的,因为当主机R1收到来自A主机的报文时,它会检查是不是它的,如果不是,它将会丢弃,不予回应,这里我们可以在R1上抓包就明白了
说明:可以看出在R1上是收到了A主机的发往C的报文,但是R1并没有给出回应。
说明:当我们打开R1的转发时,就可以看到从C回应A的数据报文,当然A主机上也会收到相应的回应报文。
5,在C上抓包看源ip和目标ip,源MAC和目标MAC的变化
说明:源ip是主机A的地址,目标ip是主机C的地址
主机A的MAC
主机C的MAC
主机R2的MAC
说明:通过上面的抓包,我们可以知道源ip和目标ip在以太网帧结构中是不会变化的,因为ip是在以太网上层internel协议的内容,但是源mac会变的。这是因为mac地址是Ethernet协议的内容,也可以得出在数据链路层通讯以太网协议是通过ARP mac地址通信的,在到达C主机的报文源MAC都是R2的MAC地址,也就是说在通讯的时候,以太网帧的结构中,源ip和目标ip是不会变化的,源mac会记录上一个发送数据报文的设备的MAC。
从上面的实验我们可以看出从A到C我们经过了两个路由;一个主机想要和另一个主机通讯,在通讯前主机会先查看自己的路由表,如果本机没有到达目标主机的路由时,本机的数据报文是不能发送到目标主机的;要让一个主机转发另一个主机的报文时,我们必须开启转发才行,否则不予转发;路由配置所指定的网关必须是本机能够到达的地址(也就是本机路由表有到达网关的路由),否则配置的路由无意义。同一网段的主机通讯,也必须配置路由,当然这个路由一般我们不用管,因为配置了其ip后,路由表就会默认生成相应的路由信息。如果没有路由,同一网段的主机也是无法通信的;在Linux里ip地址是属于主机不属于某一个网卡,所以只要有能够到达主机的地址,我们也可以将报文送到主机的另外一个地址。
Linux跨网段通信小实验的更多相关文章
- linux模拟实现主机跨路由通信
p.MsoNormal,li.MsoNormal,div.MsoNormal { margin: 0cm; margin-bottom: .0001pt; text-align: justify; f ...
- 【朝花夕拾】Android性能篇之(七)Android跨进程通信篇
前言 只要是面试高级工程师岗位,Android跨进程通信就是最受面试官青睐的知识点之一.Android系统的运行由大量相互独立的进程相互协助来完成的,所以Android进程间通信问题,是做好Andro ...
- ARP跨网段广播
如果源主机和目的主机不在同一网段,ARP请求的广播帧无法穿过路由器,源主机如何与目标主机实现通信? 补充一下问题,避免因问题不完整而出现误解. ---------------------------- ...
- Linux 双网卡双网段通信
/********************************************************************************* * Linux 双网卡双网段通信 ...
- kafka集群跨双网段及多网段通信问题解决
一.问题场景: 实际生产环境总存在很多kafka集群跨网段的问题.kafka集群可能存在多个网卡,对应多个网段.不同网段之间需要同时与集群通信,即跨网段生产消费问题. 二.解决方法:自定义listen ...
- Linux学习-LVS跨网段DR模型和FWM多服务绑定
一.实验环境 系统:CentOS7.6 主机:5台 (虚拟机) 客户端1台:172.16.236.134/24 (NAT网卡),网关指向 172.16.236.185/24(路由服务器) 路由服务器1 ...
- linux 单机跨进程通信
一般来说通过网络通信(比如tcp,udp)或者共享内存的方式肯定可以实现跨进程通信,但现在这里要说的是比较偏但实用的几个方法:利用unix域通信(普通网络连接),利用unix域通信(socketpai ...
- elasticsearch 跨网段组集群
elasticsearch 是非常流行的全文搜索引擎,但网上的教程多是初次使用,并没有一些高级用法demo.这次遇到需要跨网段组网问题,自己摸索了文档很久,发现确实可行,于是着手做了个实验,最终实验成 ...
- linux同步与通信
这几天读完了UNP v2,对进程间通信与同步的方式有所了解,现对主要的知识点总结如下: 根据出现的历史,先有的管道,FIFO,信号,然后是systemV IPC,再是后来的Poxis IPC,syst ...
随机推荐
- 一篇干货满满的 NFS 文章
目录 NFS 1. 安装 2. 配置 3. 启动并添加到开机自启 4. NFS 客户端挂载 5 报错与解决办法 6. Win 系统安装 NFS client NFS 1. 安装 yum install ...
- Vue-CLI 项目中相关操作
0830总结 Vue-CLI 项目中相关操作 一.前台路由的基本工作流程 目录结构 |vue-proj | |src | | |components | | | |Nav.vue | | |views ...
- HDU 6045 Is Derek lying?
题目网址:http://acm.hdu.edu.cn/showproblem.php?pid=6045 题目: Is Derek lying? Time Limit: 3000/1000 MS (Ja ...
- c#菜单动态合并
说明 在程序中经常使用弹出菜单,并且一个窗体中可以存在多个弹出菜单.开发过MDI窗体的读者可能都知道,当MDI子窗体最大化时,子窗体和主窗体的菜单能够自动的合并.这是如何实现的呢?本例实现了将两个弹出 ...
- Redis 集群搭建(基于Linux)
一.基础环境 1.虚拟机 VMware 15.x 2.Linux系统,用的是Centos7的Linux系统 3.Redis数据库版本 5.0.3 二.Redis集群简介 1.背景 Redis在3.0版 ...
- ElasticSearch业务逻辑案例
ElasticSearch业务逻辑案例 一.业务难题 我们有一个索引: myindex/mytype(为了方便,我们下文以a/b表示) 索引类型中的一个字段group之前是a.b.c(历史遗留问题), ...
- Mongoose-modified-at 时间自动记录插件介绍
Mongoose-modified-at 是一款自动更新字段变化时间并记录到数据库中的 Mongoose 插件,类似 Mongoose 自带的 timestamps 功能. 使用场景 让我们考虑一个场 ...
- Yii2.0教程应用结构篇 —— 入口脚本
入口脚本是应用启动流程中的第一环,一个应用(不管是网页应用还是控制台应用)只有一个入口脚本.终端用户的请求通过入口脚本实例化应用并将将请求转发到应用. Web 应用的入口脚本必须放在终端用户能够访问的 ...
- Qt乱码的问题
1.在启动应用程序前加入以下代码: //配置字符编码环境,让应用程序支持中文. QTextCodec *codec = QTextCodec::codecForName("System&qu ...
- web常用知识
Html 1.打电话,发短信和发邮件 <a href="tel:0755-10086">打电话给:0755-10086</a> <a href=&qu ...