利用原始套接字解决mac地址错误问题【南瑞SysKeeper-2000】

一:案例描述

一键可视顺控图像智能项目在网络部署过程中,对网络限制隔离安全性要求很高,用到正向隔离装置(南瑞SysKeeper-2000型号)。

      

图一 正向装置示意图

现场发现问题:直连网线情况下,我方系统A抓包到有数据报文,但是不进行业务处理。

二:案例分析和解决
2.1 抓包分析问题

       1.防火墙

考虑到抓包只是到了网卡,可能被防火墙拦截了

       确认已经是关闭状态的。

       2.对比测试

       利用不过正向隔离装置进行测试(直接其他电脑发送数据),抓包发现系统A收到数据了数据,并进行了业务处理。

       通过对比抓包,发现两个差别点时候链路层的目的MAC地址不一样:目的mac如果非本机,则本机的应用程序无法收到此数据。

       图2 三个窗口(左窗口为mac值;而中窗口因为目的mac错误导致应用程序无法接收到数据;右窗口目的mac正确,应用程序能够接收到数据)

     由此,推断是这正向隔离装置的目的mac地址配置错误,导致无法被应用程序接收。

       3.配置确认

百度排查此正向隔离装置---南瑞SysKeeper-2000,确实需要配置此mac地址,进一步证

了此猜测。

     项目实施过程中,南瑞厂家技术已经离开,为保证演示,需要其他方式进行规避解决处理。

2.2 解决方案----原始套接字

2.2.1 理论

       考虑到数据已经到了网卡,理论上我们可以从网卡得到数据。而我们应用程序无法得到数据是因为使用了UDP/TCP套接字,UDP/TCP套接字编程得到的只是负载数据(没有ip,mac等信息),且对方的网络报文有误(目的mac有误),导致操作系统内核过滤丢弃此数据,不转发给应用层。

       而原始套接字可以直接从链路层得到更多的数据,包括ip,mac等信息,对于的七层模型中的数据链路层+网络层+传输层。

       对于七层模型:

      

对应于模型来看:

             

       从抓包看也能对应上:

      

正常的UDP报文截图

原始套接字编程

Tcp/udp编程

读写数据内容

eth+ip+udp/tcp+data

data(本例中的220字节)

         

2.2.2 实现

伪代码实现:

  1. 开启混杂模式
    ifconfig eth0 promisc  设置混杂模式
    ifconfig eth0 -promisc 取消混杂模式

2)创建原始套接字:

//ETH_P_ALL 接收发往本机mac的所有类型ip arp rarp的数据帧, 接收从本机发出的所有类型的数据帧.

       //(混杂模式打开的情况下,会接收到非发往本地mac的数据帧 ),

int sock_raw_fd = socket(PF_PACKET, SOCK_RAW, htons(ETH_P_ALL));

3)接受数据

//获取链路层的数据帧---null 所有网卡

 int iRevNum = recvfrom(sock_raw_fd, buf, sizeof(buf),0,NULL,NULL);

4)处理数据

       eth+ip+udp/tcp+data对于的

if( 0x0800 == ntohs(ethdr->ether_type) ) 判断为IP数据包,占用14字节

       ip+udp/tcp 占用了56字节,

       剩下的就是data负载数据了。

      

从图上,可以看到从IP数据包中得到了mac信息,且data收到了8个负载数据字节。

由此,来解决现场的错误目的mac的问题。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
NARI SysKeeper-2000是一种系统管理和维护工具。它是由中国电力担保的国内领先科技企业南瑞集团研发的。该软件拥有先进的技术和功能,可以帮助用户有效地管理和维护计算机系统。 首先,NARI SysKeeper-2000提供了一系列的系统管理工具,包括系统清理、注册表清理、磁盘清理等。使用这些工具,用户可以定期对系统进行清理,清除无用的文件和数据,从而提高系统性能和稳定性。 其次,该软件还具备强大的安全管理功能。它可以帮助用户监控系统的安全状态,发现潜在的安全威胁,并提供相应的解决方案。此外,NARI SysKeeper-2000还能够对系统进行病毒和木马的扫描,并及时清理恶意软件,保护计算机系统免受病毒和网络攻击的侵害。 除此之外,NARI SysKeeper-2000还具备性能优化功能。它可以分析系统的性能瓶颈,帮助用户找到系统优化的方法和策略,提高计算机的运行速度和效率。另外,该软件还提供了硬件信息和驱动程序的管理功能,方便用户了解系统硬件的状态和驱动程序的更新情况。 总的来说,NARI SysKeeper-2000是一款强大而实用的系统管理和维护工具。它能够帮助用户保持计算机系统的良好运行状态,提高系统性能和安全性。无论是个人用户还是企业用户,都可以通过使用NARI SysKeeper-2000来提升计算机系统的管理和维护效率。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值