首页 > 其他分享 >为什么你的网卡收不到不同网段的数据包?

为什么你的网卡收不到不同网段的数据包?

时间:2024-10-21 21:03:17浏览次数:1  
标签:网段 混杂 模式 ifconfig 网卡 数据包 ethreq

一、前言

最近开发过程中遇到个小问题,

板子与客户的模块通过一款交换芯片连接,客户的模块会向我的板子发送组播报文,

但是模块和我的板子并在同一个网段,

默认情况下,这些数据包会被网卡过滤掉,

那么我要如果通过套接字接收网卡上不通网段的数据包呢?

这就涉及到一个知识点,网卡的混杂模式!

二、什么是混杂模式?

混杂模式(Promiscuous mode),简称 Promisc mode,俗称监听模式。

在 IEEE 802 定的网络规范中,每个网络帧都有一个目的MAC地址。

  • 非混杂模式下
    网卡只会接收目的MAC地址是它自己的单播帧,以及多播及广播帧;

  • 混杂模式下
    网卡会接收经过它的所有帧!

混杂模式是指一台主机能够接受所有经过它的数据流,不论这个数据流的目的地址是不是它,它都会接受这个数据包。

也就是说,混杂模式下,网卡会把所有的发往它的包全部都接收。

在这种情况下,可以接收同一集线器局域网的所有数据。

三、网卡工作模式

网卡工作模式有4种,分别是:

  • 广播(Broadcast)模式
  • 多播(Multicast)模式
  • 单播模式(Unicast)
  • 混杂模式(Promiscuous)。

四、Linux下设置

1、设置混杂模式

 ifconfig eth0 promisc

2、取消混杂模式

 ifconfig etho -promisc

3、查询混杂模式

使用ifconfig或者ip命令查看一个网卡是否开启了混杂模式,当输出包含 PROMISC 时,表明该网络接口处于混杂模式。

1) ip

ip link show eth0

在输出中,查找 PROMISC 字样。如果存在,说明该网卡处于混杂模式;如果没有,说明它不在混杂模式。

2) ifconfig

ifconfig ens33

在输出中,查看是否有 PROMISC 字样。

五、Linux下C程序设置网卡混杂模式

如果想通过程序方式打开混杂模式,可以参考下面代码

struct ifreq ethreq;

strncpy(ethreq.ifr_name, "eth0", IFNAMSIZ);
if(ioctl(sock_raw_fd, SIOCGIFFLAGS, &ethreq)!= 0)		//获取eth0网络接口标志
{
	perror("ioctl");
	close(sock_raw_fd);			
	exit(-1);				
}

ethreq.ifr_flags |= IFF_PROMISC;
if(ioctl(sock_raw_fd,SIOCSIFFLAGS,&ethreq)!=0)			//设置eth0网络接口标志
{
	perror("ioctl");
	close(sock_raw_fd);			
	exit(-1);
}

获取更多linux学习资料
后台回复:1024

标签:网段,混杂,模式,ifconfig,网卡,数据包,ethreq
From: https://www.cnblogs.com/yikoulinux/p/18490375

相关文章

  • 物理理机中没有VMNet1和VMNet8虚拟网卡,网络不通
    主机ping不通虚拟机网络 控制面板——网络连接——网络适配器VMware NetworkAdapterVMnet1VMwareNetwork Adapter VMnet8如果没有这两个虚拟网卡,虚拟机的网络会出现问题 # 解决办法-恢复虚拟网卡默认设置1、下载并打开ccleaner,ccleaner官网:CCleanerMakesYourC......
  • Ubuntu20.04LTS aarch64 操作系统连接联通4G网卡
    步骤1:更新系统并安装必要的软件包sudoapt-getupdatesudoapt-getinstallusb-modeswitchmodemmanagernetwork-managerusb-modeswitch:用于将某些USB设备从存储模式切换到调制解调器模式。ModemManager:用于管理移动宽带调制解调器。NetworkManager:用于管理网络连接。......
  • [BUUCTF]数据包中的线索
    [BUUCTF]数据包中的线索解题打开pcapng,进行协议分级,发现Line-basedtextdate占比较大,将其过滤出来追踪HTTP流,发现base64编码复制解码没看到JFIF以为magic又出问题了,于是换了个网址https://the-x.cn/base64,下载JPG文件,得出flag发现电脑好像不可以识图复制flag,果断拿......
  • RockyLinux9,RHEL9修改统一的网卡名称
    使用udev规则配置用户自定义网络接口名称1、识别您要重命名的网络接口:iplinkshow1:lo:<LOOPBACK,UP,LOWER_UP>mtu65536qdiscnoqueuestateUNKNOWNmodeDEFAULTgroupdefaultqlen1000link/loopback00:00:00:00:00:00brd00:00:00:00:00:002:e......
  • ESXI6.0安装网卡驱动
    ESXI6.0安装网卡驱动打开VMware兼容性列表的官方:http://www.vmware.com/resources/compatibility/search.php 并选择IODevices首先通过WINSCP工具将下载到本地的驱动将上传到ESXI主机里面的tmp目录,本示例为将本地的i40e-1.3.45-1331820-3165430.zip上传到ESXI上的tmp目......
  • 《如果主机没有配置网关,ping不在同一网段的ip,主机会发送ARP吗?》
    一、在开始实验前,我们得先深刻剖析理解ARP协议的含义。1.1ARP1.1.1ARP的定义ARP是“AddressResolutionProtocol”(地址解析协议)的缩写。1.1.2ARP的作用及运行流程分析泛谈:在同一子网中,数据包的传输都是依据MAC地址进行的(分组交换设备仅设置交换机),在跨子网通信时,......
  • 《问题:ping自己的数据包经过了哪些网络设备?》
    问题:ping自己的数据包经过了哪些设备?在主机上ping自己,并使用wireshark抓包分析WLAN接口下抓包命令行ping结果:wireshark抓包结果:空空如也~Adapterforloopbacktrafficcapture接口下抓包回环网卡(Loopbackadaptor),是一种特殊的网络接口,不与任何实际设备连接,而是完全......
  • 【shell脚本】计算网卡速率
    #!/bin/basheth="br-lan"timer=1#SettingIFS(inputfieldseparator)valueas","IFS=''#Readingthesplitstringintoarrayread-raarr<<<"$(cat/proc/net/dev|grep$eth)"in_old=${arr[1]}......
  • keepalived跨网段主备切换
    1.主节点(192.168.1.10/24)配置,/etc/keepalived/keepalived.confvrrp_scriptchk_nginx{  script/opt/test.sh  interval2  weight-20}vrrp_instanceVI_1{stateMASTERinterfaceeth0virtual_router_id51priority100nopreempt......
  • 6-蓝牙模块与数据包解析
    蓝牙模块与数据包解析蓝牙连接中有主机和从机,在建立通信连接前,从机要向外广播自己的信息,然后主机扫描到附近正在广播的蓝牙设备(子机)后就发起连接,连接建立后,双方就可以通过约定好的协议进行通信了。蓝牙分为普通蓝牙,和低功耗蓝牙低功耗蓝牙,包括诸多协议,如GAP广播协议,GATT......