双网卡 分别支持 ipv4 和 ipv6

想在宿舍里一边用着ipv6 一边用着 ipv4

由于宿舍里的那个tenda路由并不支持 ipv6  所以自己只能接一根网线上ipv6  同时 又要连接tenda的无线网上ipv4(这个是90元包月 无限流量)

问题就出现了:当用网线连上ipv6后,同时ipv4也走网线去了 并没有走无线。那么如何实现有线上ipv6 无线上ipv4呢?

 

一则方法是:

打开网络和共享中心 --〉  进入更改适配器设置  --〉 按alt键  点击高级 --〉   点击高级设置  --〉     在适配器与绑定选项卡   调整 无线网卡和有线网卡的优先顺序  

通过将无线网卡的优先级调整到高于有线网卡的优先级  来实现问题情境的解决方案。

 

二则方法是:

实际上问题的解决不要光依靠无脑地去网上寻找,多思考思考,解决问题的方案有好多好多种,即使问题初看起来无从解决。

打开网络和共享中心 --〉  进入更改适配器设置  --〉点开有线网卡适配器 --〉将TCP/IPv4 的选项 勾选掉   直接禁用掉有线网卡的ipv4通道。

 

 

 

 

 

 

 

 

 

### 基于 libpcap 的 IPv4/IPv6 双协议栈混杂模式抓包功能解析 #### 1. 混杂模式简介 在网络编程中,混杂模式是一种允许网卡接收所有通过它的数据帧的工作状态。通常情况下,网卡只会接受发送给自己的数据帧或者广播帧。当设置为混杂模式时,它可以接收到同一局域网上其他设备之间的通信流量[^2]。 #### 2. 使用 libpcap 设置混杂模式 `libpcap` 是一个跨平台的网络数据包捕获库,在 Linux 类 Unix 系统上广泛使用。要启用混杂模式并进行数据包捕获,可以通过 `pcap_open_live()` 函数来打开指定的网络接口,并将其置于混杂模式下: ```c #include <pcap.h> #include <stdio.h> int main() { char errbuf[PCAP_ERRBUF_SIZE]; pcap_t *handle; // 打开名为 eth0 的网络接口,并进入混杂模式 handle = pcap_open_live("eth0", BUFSIZ, 1, 1000, errbuf); if (handle == NULL) { fprintf(stderr, "Couldn't open device eth0: %s\n", errbuf); return(2); } printf("Device opened successfully.\n"); // 关闭句柄 pcap_close(handle); return(0); } ``` 上述代码中的第三个参数设为 `1` 表示开启混杂模式。 #### 3. 支持 IPv4 IPv6 协议栈 为了支持双协议栈(即同时处理 IPv4 IPv6 数据包),需要确保所使用的网络接口能够识别这两种类型的流量。现代操作系统一般默认支持双协议栈配置,因此无需额外调整即可捕获到两种协议的数据包。 在实际应用中,可以编写过滤器表达式以区分不同类型的 IP 流量。例如,对于仅限 IPv4IPv6 的情况,分别使用如下 BPF 过滤器字符串: - **IPv4**: `"ip"` - **IPv6**: `"ip6"` 如果希望同时捕获两者,则不需要任何特定条件,默认会获取全部符合条件的数据流[^3]。 #### 4. 编写完整的程序逻辑 下面展示了一个简单的例子,演示如何利用 libpcap 来监听本地网络上的所有 TCP 链接请求(无论是来自 IPv4 还是 IPv6 地址): ```c #include <pcap.h> #include <stdio.h> #include <stdlib.h> #include <string.h> void packet_handler(u_char *param, const struct pcap_pkthdr *header, const u_char *pkt_data); int main(int argc, char **argv){ char errbuf[PCAP_ERRBUF_SIZE]; pcap_t* descr; struct bpf_program fp; char filter_exp[] = "tcp"; /* Capture all TCP packets */ descr = pcap_open_live("enp0s3", BUFSIZ, 1, 1000, errbuf); if(descr == NULL){ fprintf(stderr,"Error opening adapter (%s)\n",errbuf); exit(-1); } if(pcap_compile(descr,&fp,filter_exp,0,PCAP_NETMASK_UNKNOWN)<0){ fprintf(stderr,"Error compiling filter expression [%s]\n",pcap_geterr(descr)); exit(-1); } if(pcap_setfilter(descr,&fp)<0){ fprintf(stderr,"Error setting filter [%s]\n",pcap_geterr(descr)); exit(-1); } pcap_loop(descr,-1,packet_handler,NULL); } /* Packet handler function definition omitted here for brevity */ ``` 此脚本设置了基本的回调机制用于分析每一个被捕获的数据包;然而具体的解析过程需依据需求进一步开发完成。 --- ####
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值