IGMPproxy

来自 Alpine Linux

互联网协议电视(IPTV)是一种系统,通过该系统,互联网电视服务通过互联网协议套件的架构和网络方法,在分组交换网络基础设施(例如,互联网和宽带互联网接入网络)上传输,而不是通过传统的射频广播、卫星信号和有线电视(CATV)格式传输。

安装工具

安装 igmpproxy

apk add igmpproxy

安装 iptables (可选,请参阅故障排除)

apk add iptables

设置 igmpproxy

在您喜欢的编辑器中打开 /etc/igmpproxy.conf

nano /etc/igmpproxy.conf

将上游接口设置为您的 WAN 接口。在我的情况下是 eth0

phyint eth0 upstream  ratelimit 0  threshold 1

如果您知道您的 ISP 的组播源,您应该在此处添加它们。如果不知道,请不用担心,我们稍后会回到这里。

altnet 88.222.0.0/16
altnet 10.0.0.0/8

将下游接口设置为您的 LAN 接口。在我的情况下是 eth1

phyint eth1 downstream  ratelimit 0  threshold 1

禁用其他未使用的接口

phyint lo disabled

如果您尚未添加组播源,则您的 igmpproxy.conf 应如下所示

quickleave
phyint eth0 upstream  ratelimit 0  threshold 1
phyint eth1 downstream  ratelimit 0  threshold 1
phyint lo disabled

以调试模式启动 igmpproxy

igmpproxy -d -v /etc/igmpproxy.conf

您应该看到类似于这样的输出

RECV Membership query   from 10.253.88.1     to 224.0.0.1
RECV Membership query   from 10.254.88.1     to 224.0.0.1
RECV V2 member report   from 88.222.27.35    to 239.255.255.250

现在我们知道 ISP 的组播源是 10.x.x.x (10.0.0.0/8) 和 88.222.x.x(88.222.0.0/16)。我们需要在 /etc/igmpproxy.conf 中,紧跟上游接口声明之后指定它们,如下所示

phyint eth0 upstream  ratelimit 0  threshold 1
      altnet 88.222.0.0/16
      altnet 10.0.0.0/8

您的完整 igmpproxy.conf 应如下所示

quickleave
phyint eth0 upstream  ratelimit 0  threshold 1
        altnet 88.222.0.0/16
        altnet 10.0.0.0/8
phyint eth1 downstream  ratelimit 0  threshold 1
phyint lo disabled

启动 igmpproxy 并享受 IPTV 吧 :)

igmpproxy /etc/igmpproxy.conf

故障排除

  • 确保您的本地子网与您的 ISP 的组播源不相同。192.168.0.0/24 可能是安全的选择。
  • 您可能需要在 iptables 中添加转发规则
iptables -I FORWARD -s 88.222.0.0/16 -d 224.0.0.0/4 -j ACCEPT
iptables -I FORWARD -s 10.0.0.0/8 -d 224.0.0.0/4 -j ACCEPT
iptables -I INPUT -d 224.0.0.0/4 -j ACCEPT
  • 如果您正在使用 shorewall,请修改 /etc/shorewall/shorewall.conf
MULTICAST=Yes

将以下规则添加到 /etc/shorewall/rules

ACCEPT		all		fw:224.0.0.0/4
ACCEPT		all		net:224.0.0.0/4
ACCEPT		all		loc:224.0.0.0/4