openwrt igmp 适配

每弄完一次,过不多久就忘了,这次决心记下来。

openwrt 的igmpproxy 包是干嘛的?原来,组播包并不能穿透路由,也就是我们在wan端播放的组播视频流,lan端是没法收到的,igmpproxy就是用来打通wan端到lan端的数据通道。

首先在编译配置文件开启igmpproxy: 

CONFIG_PACKAGE_igmpproxy=y

然后编译并打包,生成的镜像烧入板子,一般来说这个时候igmpproxy 已经能正常工作了

它的配置文件在/etc/config/igmpproxy文件中,我们只需要改一个地方:

config igmpproxyoption quickleave 1config phyint wanoption network wanoption direction upstreamlist altnet 192.168.1.0/24config phyint lanoption network lanoption direction downstream

把文中的 192.168.1.0/24 换成0.0.0.0/0,这样所有情况都适合。

怎么测试呢?

1. 可以手动执行:

igmpproxy -d -v /etc/config/igmpproxy

这样就进入了调试模式,它可以把所有调试信息打印出来,方便我们排查问题。

2. 可以在wan,lan口用tcpdump 抓包结合协议分析

最后补充两个python 的脚本,方便测试:

发送脚本,放在wan端:

import timeimport structfrom socket import *SENDERIP = '192.168.10.162' #这个地方是本机地址,你的机器是什么就填什么SENDERPORT = 1501 MYPORT = 1234 MYGROUP = '224.1.1.112' MYTTL = 255  def sender():s = socket(AF_INET, SOCK_DGRAM,IPPROTO_UDP)s.bind((SENDERIP,SENDERPORT))ttl_bin = struct.pack('@i', MYTTL)s.setsockopt(IPPROTO_IP, IP_MULTICAST_TTL, ttl_bin) while True:data = 'cisco's.sendto(data + '\0', (MYGROUP, MYPORT))print "send data ok !"time.sleep(10)if __name__ == "__main__":sender()

接收脚本,放在lan端:

import timeimport socketSENDERIP = '0.0.0.0'    #这里填本机地址收不到数据,故改为全地址MYPORT = 1234MYGROUP = '224.1.1.112'def receiver():#create a UDP socketsock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM, socket.IPPROTO_UDP)#allow multiple sockets to use the same PORT numbersock.setsockopt(socket.SOL_SOCKET,socket.SO_REUSEADDR,1)#Bind to the port that we know will receive multicast datasock.bind((SENDERIP,MYPORT))#tell the kernel that we are a multicast socket#sock.setsockopt(socket.IPPROTO_IP, socket.IP_MULTICAST_TTL, 255)#Tell the kernel that we want to add ourselves to a multicast group#The address for the multicast group is the third paramstatus = sock.setsockopt(socket.IPPROTO_IP,socket.IP_ADD_MEMBERSHIP,socket.inet_aton(MYGROUP) + socket.inet_aton(SENDERIP));sock.setblocking(0)#ts = time.time()while 1:try:data, addr = sock.recvfrom(1024)except socket.error, e:passelse:print "Receive data!"print "TIME:" , time.time()print "FROM: ", addrprint "DATA: ", dataif __name__ == "__main__":receiver()

有三条命令可以查看系统igmp状态:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/35580.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

2024.6.26 刷题总结

2024.6.26 **每日一题** 526.优美的排列,该题考察的是状压dp的知识,用一个n位的二进制数表示排列中的数被选取的情况,若为1,则表示该位被选取,若为0,则表示该位没有被选取,用一个数组来存储当前…

STM32F1+HAL库+FreeTOTS学习1——FreeRTOS入门

STM32F1HAL库FreeTOTS学习1——FreeRTOS入门 裸机开发与操作系统嵌入式操作系统简介FreeRTOS简介FreeRTOS的几个重要概念任务调度器任务状态状态列表 裸机开发与操作系统 在以往的嵌入式学习中,我们最常用的就是裸机开发,所谓裸机开发就是指在没有操作系…

力扣1541. 平衡括号字符串的最少插入次数

Problem: 1541. 平衡括号字符串的最少插入次数 文章目录 题目描述思路及解法复杂度Code 题目描述 思路及解法 Problem: 力扣921. 使括号有效的最少添加 类似于上述题目,不过此时一个左括号要和两个右括号配对 1.同理上述题目,遍历字符串时若遇见一个左括…

揭秘微生物社区的“社交网络”:基因组规模代谢模型(GEMs)的新前沿

当前,微生物群落的基因组组成和功能潜力通过宏基因组组装基因组(MAGs)的分析得以部分揭示,但其内在的代谢网络和相互作用机制仍充满未知。为此,科学家们开发了基因组规模的代谢模型(GEMs)&#…

一码多址与同义词解决方案

随着地址库中的数据不断的丰富,地址库中一码多址和同义词的数据也会越来越多,一码多址和同义词在统一地址管理平台中的概念并不相同。 一码多址指的是多个地址编码相同,例如通过民政地址找到编码,再通过编码找到房产地址描述。 本…

怎么把不同的文件做成二维码?多种文件类型在线生码的制作方法

扫码来展示文件是现在很多场景下会使用的一种内容展示方法,这种方式能够简化其他人获取文件的流程,从而提升文件传播的效率,用户可以存储二维码,随时扫码查看文件内容。文件生成二维码支持多种类型的文件使用,比如ppt、…

信号与系统实验-实验五 离散时间系统的时域分析

一、实验目的 1、理解离散信号的定义与时域特征,掌握在时域求解信号的各种变换运算; 2、掌握离散系统的单位响应及其 MATLAB 实现的方法; 3、掌握离散时间序列卷积及其 MATLAB 实现的方法; 4、掌握利用 MATLAB 求解微分方程&a…

【数据库】Oracle安装报错(win10安装oracle提示环境不满足最低要求)

目录 一、问题场景: 二、问题描述 三、原因分析: 四、解决方案: 一、问题场景: 安装Oracle数据库 二、问题描述 安装之前提示( [INS-13001]环境不满足最低要求。 是否确实要继续? ) 如图所示&…

说出这11种API接口性能优化,面试官一定会对你刮目相看

前言 接口性能优化是后端开发人员经常碰到的一道面试题,因为它是一个跟开发语言无关的公共问题。 这个问题既可以很简单,也可以相当复杂。 有时候,只需要添加一个索引就能解决。 有时候,代码需要进行重构。 有时候,必…

Vite: 集成Lint工具规范代码

概述 在前端开发中,尤其是在大型项目中,代码的规范性和一致性对于项目的可维护性、可读性以及团队协作效率至关重要。为了保障代码质量,前端社区涌现出了许多Lint工具,如ESLint、Prettier、Stylelint等,它们能帮助我们…

使用深度远程启动管理器配置BMC DHCP管理地址的方法

目录 1.请确保服务器BMC是DHCP状态,才可以使用深度工具分配地址;若BMC配置过静态地址,请使用静态地址登录; 2.配置好自己笔记本的 ip(例如:192.168.78.1),用网线与 ipmi 独立管理口…

Day46

Day46 手写Spring-MVC 解决Controller层的方案 思路:监听器在项目启动时DispatherServlet会将controller层的信息记录下来,当前端发送请求的时候DispatherServlet就会根据信息分发给controller层。 准备工作 准备工作的目的是准备好监听器,而…

AudioLM: 音频生成的革命性模型

AudioLM: 音频生成的革命性模型 AudioLM是一种革命性的音频生成模型,它结合了深度学习和自然语言处理的先进技术,能够生成高质量、逼真的音频内容。本文将探讨AudioLM的基本原理、工作机制、应用场景以及对音频生成领域的影响和未来发展方向。 一、Aud…

AI-智能体基础设施

个性化记忆需要世界模型来协助构建 业界有一个精简的Agent表达公示,即:Agent大模型(LLM)记忆(Memory)主动规划(Planning)工具使用(Tool Use)。基于该公式&am…

打破界限:Postman中CORS问题的终极解决方案

打破界限:Postman中CORS问题的终极解决方案 在当今的Web开发中,API跨域调用已成为常态。然而,浏览器的同源策略常常限制了这种跨域的自由。跨域资源共享(CORS)作为解决方案,允许不同源之间的资源访问。但如…

零信任价值获全面认可 新场景下展现无穷潜力

2023年,零信任在全球范围内持续快速发展,已经从新的安全理念发展成为云时代的主流安全架构,进入了全面普及期。 2023年,中国零信任市场同样涨势迅猛,产业生态越来越成熟,应用范围越来越广,应用…

模型微调DPO入门

一、定义 定义数据集格式llamafactory 训练案例入门文档阅读 二、实现 定义 DPO通过直接优化语言模型来实现对其行为的精确控制,而无需使用复杂的强化学习,也可以有效学习到人类偏好,DPO相较于RLHF更容易实现且易于训练,效果更好…

面试题-Redis简介

1.主流应用框架 概念: 穿透查询:数据库中的名词,与逐层查询不同,通过超链接可直接查询想要的结果,更加方便快捷 熔断机制:指软件系统中,由于某些原因使得服务出现了过载现象,为防止…

「2024中国数据要素产业图谱1.0版」重磅发布,景联文科技凭借高质量数据采集服务入选!

近日,景联文科技入选数据猿和上海大数据联盟发布的《2024中国数据要素产业图谱1.0版》数据采集服务板块。 景联文科技是专业数据服务公司,提供从数据采集、清洗、标注的全流程数据解决方案,协助人工智能企业解决整个AI链条中数据采集和数据标…

【面试题】SpringBoot面试题

目录 Spring Boot 的核心注解是哪个?它主要由哪几个注解组成的?如何理解 Spring Boot 中的 Starters?Spring Boot 的核心配置文件有哪几个?它们的区别是什么?Spring Boot、Spring MVC 和 Spring 有什么区别&#xff1f…