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 ...
随机推荐
- Jmeter插件图表分析
1.jp@gc - Actiive Threads Over Time:不同时间的活动用户数量展示(图表) 当前的时间间隔是1毫秒,在setting中可以设置时间间隔以及其他的参数,右击可以导出exc ...
- Oracle联合注入总结
Oracle常规联合注入 Oracle Database,又名Oracle RDBMS,或简称Oracle.是甲骨文公司的一款关系数据库管理系统. Oracle对于MYSQL.MSSQL来说意味着更大 ...
- MySQL时间盲注五种延时方法 (PWNHUB 非预期解)
转自cdxy师傅:https://www.cdxy.me/?p=789 PWNHUB 一道盲注题过滤了常规的sleep和benchmark函数,引发对时间盲注中延时方法的思考. 延时函数 SLEEP ...
- [Noip2007] 字符串的展开
题目描述 在初赛普及组的“阅读程序写结果”的问题中,我们曾给出一个字符串展开的例子:如果在输入的字符串中,含有类似于“d-h”或者“4-8”的字串,我们就把它当作一种简写,输出时,用连续递增的字母或数 ...
- POJ2828 Buy Tickets 树状数组
Description Railway tickets were difficult to buy around the Lunar New Year in China, so we must get ...
- [BZOJ3813] 奇数国 - 线段树
3813: 奇数国 Time Limit: 10 Sec Memory Limit: 256 MBSubmit: 912 Solved: 508[Submit][Status][Discuss] ...
- Android WebSocket实现即时通讯功能
最近做这个功能,分享一下.即时通讯(Instant Messaging)最重要的毫无疑问就是即时,不能有明显的延迟,要实现IM的功能其实并不难,目前有很多第三方,比如极光的JMessage,都比较容易 ...
- 你不知道的Canvas(一)
Canvas基础 一.Canvas是什么 Canvas是一个可以使用脚本(通常为JavaScript来绘制图形的HTML) 元素.例如,它可以用于绘制图表.制作图片构图或者制作简单的动画,主要用来绘制 ...
- django报错问题解决
注意以下修改文件均是修改虚拟python环境中的文件 1.执行(venv) E:\myproj\autotest>python manage.py makemigrations报错: 解决办法: ...
- 4. NFS存储服务器搭建
1.什么是NFS? Network file system 网络文件系统 nfs共享存储 2.nfs能干什么? nfs 能为 不同主机系统之间 实现 文件的共享 3.为什么要使用nfs? 在集群架构中 ...