21天网站建设实录,深圳招标信息网,软件开发流程8个步骤,跨境电商全托管有哪些平台一#xff1a;案例描述
一键可视顺控图像智能项目在网络部署过程中#xff0c;对网络限制隔离安全性要求很高#xff0c;用到正向隔离装置#xff08;南瑞SysKeeper-2000型号#xff09;。 图一 正向装置示意图
现场发现问题#xff1a;直连网线情况下#xff0c;我方…
一案例描述
一键可视顺控图像智能项目在网络部署过程中对网络限制隔离安全性要求很高用到正向隔离装置南瑞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编程 读写数据内容 ethipudp/tcpdata data本例中的220字节 2.2.2 实现
伪代码实现
开启混杂模式 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处理数据 ethipudp/tcpdata对于的
if( 0x0800 ntohs(ethdr-ether_type) ) 判断为IP数据包占用14字节 ipudp/tcp 占用了56字节 剩下的就是data负载数据了。 从图上可以看到从IP数据包中得到了mac信息且data收到了8个负载数据字节。
由此来解决现场的错误目的mac的问题。