当前位置: 首页 > news >正文

潍坊网站制作保定公司广西城乡和建设厅网站

潍坊网站制作保定公司,广西城乡和建设厅网站,营销策划公司,wordpress实惠主机背景 今天遇到一个诡异的现象#xff0c;当接口附加一个IP时#xff0c;主IP业务正常#xff0c;附加IP死活不行#xff0c;tcpdump抓包确可以正常抓到到业务的报文#xff0c;但是在PREROUTING raw添加规则确没有命中#xff0c;说明报文没有到netfilter框架内#xff…背景 今天遇到一个诡异的现象当接口附加一个IP时主IP业务正常附加IP死活不行tcpdump抓包确可以正常抓到到业务的报文但是在PREROUTING raw添加规则确没有命中说明报文没有到netfilter框架内Scapy打流测试通过bpftrace 跟踪kfree_skb没有捕获大量的kfree_skb 调用才引发今天的问题数据报文去哪儿了 结论 由于上层设备发送报文时将附加IP的MAC地址填错导致但是tcpdump可以明确报文已经到了主机但是为什么却没有往netfilter框架递送bpftrace 为什么没有捕获大量的kfree_skb?  简单的讲错误的MAC地址正确的IP 是否可以正常通信为什么 内核源码分析 本文使用内核版本 5.10 网卡驱动 e1000e 我们知道当网卡工作在直接模式Direct Model时网卡只接收自己MAC地址的帧此模式下通过scapy打流不匹配的目的mac地址时数据帧直接被网卡层面丢弃bpftrace 此时无法捕获kfree_skb事件。 当使用tcpdump工具时会将网卡设置为混杂模式Promiscuous Model,不匹配自己的MAC地址也会接收交给网卡驱动处理。 /*** e1000_receive_skb - helper function to handle Rx indications* adapter: board private structure* netdev: pointer to netdev struct* staterr: descriptor extended error and status field as written by hardware* vlan: descriptor vlan field as written by hardware (no le/be conversion)* skb: pointer to sk_buff to be indicated to stack**/ static void e1000_receive_skb(struct e1000_adapter *adapter,struct net_device *netdev, struct sk_buff *skb,u32 staterr, __le16 vlan) {u16 tag le16_to_cpu(vlan);e1000e_rx_hwtstamp(adapter, staterr, skb);skb-protocol eth_type_trans(skb, netdev);if (staterr E1000_RXD_STAT_VP)__vlan_hwaccel_put_tag(skb, htons(ETH_P_8021Q), tag);napi_gro_receive(adapter-napi, skb); } 这里e1000e网卡驱动接收报文此处注意eth_type_trans(skb, netdev)方法 /*** eth_type_trans - determine the packets protocol ID.* skb: received socket data* dev: receiving network device** The rule here is that we* assume 802.3 if the type field is short enough to be a length.* This is normal practice and works for any now in use protocol.*/ __be16 eth_type_trans(struct sk_buff *skb, struct net_device *dev) {unsigned short _service_access_point;const unsigned short *sap;const struct ethhdr *eth;skb-dev dev;skb_reset_mac_header(skb);eth (struct ethhdr *)skb-data;skb_pull_inline(skb, ETH_HLEN);/* 此处目的MAC不是设备DEV地址时命中条件 */if (unlikely(!ether_addr_equal_64bits(eth-h_dest,dev-dev_addr))) {/* 检测目的MAC是否为多播或者组播 */if (unlikely(is_multicast_ether_addr_64bits(eth-h_dest))) {if (ether_addr_equal_64bits(eth-h_dest, dev-broadcast))skb-pkt_type PACKET_BROADCAST;elseskb-pkt_type PACKET_MULTICAST;} else {skb-pkt_type PACKET_OTHERHOST;}}if (likely(eth_proto_is_802_3(eth-h_proto)))return eth-h_proto;..... } 当我们的目的MAC地址与自身dev地址不匹配时会将pkt_type  PACKET_OTHERHOST 然后返回eth-proto, 这里我们使用的IP报文也就是将来会使用ip_rcv()处理。 然后通过NAPI接口__netif_receive_skb_core等一系列调用最终调用到ip_rcv_core() /** Main IP Receive routine.*/ static struct sk_buff *ip_rcv_core(struct sk_buff *skb, struct net *net) {const struct iphdr *iph;u32 len;/* When the interface is in promisc. mode, drop all the crap* that it receives, do not try to analyse it.*/if (skb-pkt_type PACKET_OTHERHOST)goto drop;......drop:kfree_skb(skb); out:return NULL; } 这里有明确的注释说明混杂模式的报文即pkt_type为PACKET_OTHERHOST值直接丢弃并且此处的drop内核协议栈层面并没有做任何的丢包统计。 总结 经过分析我们可以总结我们遇到的问题 1通过scapy打流测试为什么bpftrace没有捕获到大量的kfree_skb事件 这是因为网卡工作在直接模式Direct Model网卡将目的MAC不是自己的直接丢弃验证这个想象可以直接使用tcpdump 工具抓包此时bpftrace 可以捕获大量的kfree_skb事件。 2tcpdump 捕获到去往自己IP的报文为什么没有到netfilter框架 这是因为tcpdump将网卡设置为混杂模式Promiscuous Model网卡驱动接收报文并将报文类型置为PACKET_OTHERHOST当ip_rcv_core()接收后直接丢弃并且没有在任何地方做丢包统计的动作。 感受 工作中遇到的每个小问题背后都蕴藏着大量知识只有平时多积累总结才能游刃有余解决所面对的问题。
http://www.dnsts.com.cn/news/184846.html

相关文章:

  • 做的很好的淘宝客网站中小企业服务中心网站建设
  • 手机营销型网站制作河北省建筑培训网
  • 东莞做商城网站建设网站服务器到期了怎么续费
  • 外贸网站制作哪家快邯郸网站seo
  • 天津网站建设诺亚文字设计
  • 网站建设学习浩森宇特贵州省建设学校官方网站
  • 网站建设荣茂南阳市网站建设
  • 如何重新做公司网站律师个人网站模板
  • 2008发布asp网站机械加工完工单
  • 红色网站主题北京建设网官网证书
  • asp购物网站客户查看购物车制作海报
  • 三明网站建设公司全网营销国际系统
  • 宝塔面板做网站不能打开PHP显示404潍坊做企业手机版网站
  • 个人网站可以做商业吗中小企业网站建设多少钱
  • 怎么建网站平台商务网站建设的流程
  • 一级a做爰片就线在看网站网络服务网站建设
  • 社团的工商年检网站在哪里做镇江大港信息港论坛
  • 北京建站公司排名首推万维科技空间安装wordpress
  • 莱芜手机网站建设电话网站建设服装市场分析报告
  • 塘下做网站潍坊尚呈网站建设公司 概况
  • wordpress网站突然打不开移动端处理器天梯图
  • 新余公司做网站公司和个人均不能备案论坛类网站
  • 上传文件到网站根目录企业网站未来发展趋势
  • 招远做网站案例中国站长之家爱站网
  • 苏州市建设局网站首页如何看到网站的制作公司
  • 历史网站怎么做国外优秀企业网站模板
  • 河源哪里做网站网站建设服务器软件
  • 湛江廉江网站建设wordpress visual composer主题
  • 好看的电商网站模板揭阳网站制作企业
  • 天津网站建设市场软件开发生命周期