Skip to content

About

koolcenter 软件中心 IGMP Proxy 插件 —— 接管固件自带的 igmpproxy,把运营商 IPTV 组播转发进内网(防火墙放行 + perp 进程守护 + 网页配置)

Topics

Resources

Stars

2 stars

Watchers

0 watching

Forks

Latest commit

 

History

9 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

IPTV Proxy —— koolcenter 软件中心插件

统一管理路由器固件自带的 /usr/sbin/igmpproxy 与 /usr/sbin/udpxy,在两种模式中二选一:

  • IGMP Proxy:把运营商 IPTV 组播转发到内网,电视盒子等设备直接播放组播源。
  • UDP Proxy:用固件自带的 udpxy 把组播转成 HTTP 单播,手机 / 电脑 / 播放器可直接播放。

两种模式不会同时启动。插件不内置任何二进制,只负责配置、启停、防火墙放行、rp_filter、 进程守护和网页界面。

目录结构

.
├── config.json.js              # 软件中心插件描述(module = iptvproxy)
├── build.py                    # 打包脚本
├── Changelog.txt
├── LICENSE
├── README.md
└── iptvproxy/                  # 插件本体,打包 / 安装时整体拷贝到 /koolshare
    ├── install.sh              # 安装脚本,含旧版 igmpproxy 插件迁移
    ├── uninstall.sh
    ├── version                 # 插件版本号
    ├── .valid                  # 平台校验标记
    ├── init.d/                 # S99 / N99 开机、拨号、nat-start 钩子
    ├── scripts/
    │   ├── iptvproxy_config.sh # 网页后端 / 启停 / 模式选择 / 诊断
    │   └── iptvproxy-base.sh   # IGMP 配置生成、防火墙、rp_filter
    ├── webs/Module_iptvproxy.asp
    └── res/icon-iptvproxy.png

一、安装与从旧版迁移

网页离线安装:软件中心 → 离线安装 → 选择 iptvproxy.tar.gz。

安装脚本会自动处理旧版 igmpproxy 插件:

  1. 停止旧版 IGMP/UDP 服务,移除旧 init.d、perp、网页、脚本和旧防火墙规则;
  2. 把旧 dbus 设置迁移到新的 iptvproxy_* 键;
  3. 旧版开启过 UDP 代理 → 新模式设为 udp,否则设为 igmp;
  4. 如果插件原来处于开启状态,安装完成后立即按迁移后的模式拉起服务。

旧插件名是 igmpproxy,新插件名是 iptvproxy;旧插件会从软件中心列表中移除。

二、模式选择

设置页第一项是「代理模式」下拉框:

模式 使用二进制 说明
IGMP Proxy /usr/sbin/igmpproxy 组播转发到内网;需要关闭固件自身的「启动组播路由」
UDP Proxy /usr/sbin/udpxy 组播转 HTTP 单播;需要关闭固件自带的 UDP 代理端口

模式切换后点「重启」即可;后端会先清理另一种模式的进程,保证同一时间只运行一个代理。

UDP 播放地址

http://路由器IP:端口/udp/组播地址:端口/

例如:

http://192.168.50.1:4022/udp/239.1.1.1:1234/

端口和最大客户端数在 UDP 模式下可配置,默认 4022 / 10。

三、设置项

设置项 默认 说明
代理模式 IGMP IGMP Proxy / UDP Proxy 二选一
上游接口 自动探测 IPTV/WAN 侧接口;留空时优先可用 PPPoE 口
下游接口 自动探测 面向内网的接口,一般是 br0
组播源网段 0.0.0.0/0 仅 IGMP 模式显示
快速换台 开 仅 IGMP 模式显示
添加防火墙组播规则 开 两种模式共用
关闭反向路径过滤 开 仅对上游接口处理,停止时恢复
实时进程守护 开 同一个 perp 服务按模式守护 igmpproxy 或 udpxy
强制接管 关 仅 IGMP 模式显示;处理已有 igmpproxy 占用
UDP Proxy 端口 4022 仅 UDP 模式显示
UDP Proxy 最大客户端数 10 仅 UDP 模式显示

四、守护进程

/koolshare/perp/iptvproxy/rc.main 在 start 时先补防火墙/rp_filter,然后:

  • IGMP 模式:exec sh iptvproxy-base.sh run ...,perp 守护 igmpproxy 进程;
  • UDP 模式:exec /usr/sbin/udpxy -T -m <上游> -p <端口> -B 65536 -c <客户端数> -a <下游> -l <日志>,perp 守护 udpxy 进程。

udpxy 使用 -T 前台运行以兼容 perp;同时用插件专属日志路径 /tmp/iptvproxy-run/udpxy.log 识别本插件拉起的实例,不会误杀固件或其他插件的 udpxy。

固件源码里的原始调用方式位于 release/src/router/rc/wan.c: start_igmpproxy():

eval("/usr/sbin/udpxy",
    "-m", nvram_get_int("udpxy_if_alt") ? (char*) get_wanface() : wan_ifname,
    "-p", nvram_safe_get("udpxy_enable_x"),
    "-B", "65536",
    "-c", nvram_safe_get("udpxy_clients"),
    "-a", nvram_get("lan_ifname") ? : "br0");

本插件沿用 -m / -p / -B / -c / -a,额外加 -T 和 -l 只是为了接入统一进程守护与日志。

五、防火墙与 rp_filter

插件会添加三条带 iptvproxy 注释的 iptables 规则,关闭时逐条删除:

-A INPUT   -p 2   -d 224.0.0.0/4                          -j ACCEPT
-A INPUT   -p udp -d 224.0.0.0/4 ! --dport 1900           -j ACCEPT
-A FORWARD -p udp -d 224.0.0.0/4                          -j ACCEPT

查看:

iptables -S | grep iptvproxy
iptables -L INPUT -v -n | grep iptvproxy

rp_filter 只临时调整上游接口,原值保存在 /tmp/iptvproxy-run/rp_filter.saved,停止时恢复。

六、文件与排错

路径 说明
/koolshare/scripts/iptvproxy_config.sh 插件主控 / 网页后端
/koolshare/scripts/iptvproxy-base.sh IGMP 配置、防火墙、rp_filter 引擎
/koolshare/webs/Module_iptvproxy.asp 网页界面
/koolshare/init.d/{S99,N99}iptvproxy.sh 开机、拨号、nat-start 钩子
/koolshare/perp/iptvproxy/rc.main IGMP/UDP 共用的 perp 守护入口
/koolshare/configs/iptvproxy/iptvproxy.conf 接口解析生成的 IGMP 配置
/tmp/iptvproxy-run/ 运行态:日志、ifaces、udpxy.log、rp_filter 备份
/tmp/upload/iptvproxy_log.txt 网页「诊断日志」内容

常见检查:

# 当前模式和守护服务
perpls | grep iptvproxy
ps | grep -E 'igmpproxy|udpxy' | grep -v grep

# UDP 模式监听与状态页
netstat -ltnp | grep 4022
wget -qO- http://127.0.0.1:4022/status | head

七、卸载

/koolshare/scripts/uninstall_iptvproxy.sh

卸载会停止当前模式进程、撤销防火墙/rp_filter、删除插件文件和 dbus 记录。

About

koolcenter 软件中心 IGMP Proxy 插件 —— 接管固件自带的 igmpproxy,把运营商 IPTV 组播转发进内网(防火墙放行 + perp 进程守护 + 网页配置)

Topics

Resources

Stars

2 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages