天津联通家庭宽带,光猫配置如下:
协议 | 模式 | 光猫接口 | 路由器接口 |
---|---|---|---|
INTERNET | 桥接 WAN | eth1 | eth1 |
IPTV | 路由 WAN | eth4 | eth2 |
路由器配置:
bridge
设置为eth3, eth4, eth5
,去掉了eth1, eth2
eth1
设置 PPPoE ,此时路由器下接设备可以访问互联网eth2
上添加 1 个 Client 。此时 IP/Addresses 出现一个动态地址interface
0 U ;;; iptv_upstream
interface=ether2 threshold=1 alternative-subnets=0.0.0.0/0 upstream=yes
1 ;;; iptv_downstream
interface=bridge threshold=1 alternative-subnets="" upstream=no
此时路由器下接设备可以收看组播 IPTV 。但是约 4 分钟后中断,切换频道后正常,4 分钟后再中断。
在 IP/Firewall 观察到这一项拦截了很多流量。禁用这一项之后,观看 4 分钟不再中断。
5 ;;; defconf: drop all not coming from LAN
chain=input action=drop in-interface-list=!LAN log=no log-prefix=""
在这项上面添加一条规则如下,观看 IPTV 不再中断。drop all not coming from LAN 一项也不再出现大流量。流量都出现在了 accept IPTV 。
4 ;;; accept IPTV
chain=input action=accept dst-address=224.0.0.0/4 log=no log-prefix=""
全部防火墙规则如下:
Flags: X - disabled, I - invalid; D - dynamic
0 D ;;; special dummy rule to show fasttrack counters
chain=forward action=passthrough
1 ;;; defconf: accept established,related,untracked
chain=input action=accept connection-state=established,related,untracked
2 ;;; defconf: drop invalid
chain=input action=drop connection-state=invalid
3 ;;; defconf: accept ICMP
chain=input action=accept protocol=icmp
4 ;;; accept IPTV
chain=input action=accept dst-address=224.0.0.0/4 log=no log-prefix=""
5 ;;; defconf: drop all not coming from LAN
chain=input action=drop in-interface-list=!LAN log=no log-prefix=""
6 ;;; defconf: accept in ipsec policy
chain=forward action=accept ipsec-policy=in,ipsec
7 ;;; defconf: accept out ipsec policy
chain=forward action=accept ipsec-policy=out,ipsec
8 ;;; defconf: fasttrack
chain=forward action=fasttrack-connection hw-offload=yes connection-state=established,related
9 ;;; defconf: accept established,related, untracked
chain=forward action=accept connection-state=established,related,untracked
10 ;;; defconf: drop invalid
chain=forward action=drop connection-state=invalid
11 ;;; defconf: drop all from WAN not DSTNATed
chain=forward action=drop connection-state=new connection-nat-state=!dstnat in-interface-list=WAN
请教几个问题:
upstream
要设置alternative-subnets=0.0.0.0/0
?没有这个属性可以吗?drop all not coming from LAN
规则拦截了大量数据,但是 IPTV 仍能正常播放? 1
badgv 14 小时 4 分钟前
alternative-subnets 搜了下貌似是控制组播跨网发送的,直接全部允许就好了吧
igmp proxy 是把组播跨网段转发用的,在你 ROS 和运营商之间组播数据传输应该是走的二层数据,这里和防火墙没关系,ROS 和内网设备间复制的组播,应该也是二层数据包,和防火墙也没关系,所以你防火墙 drop all not coming from LAN 应该是不影响组播播放的,播放一段时间停了,大概率是因为组播续期失败导致的,如果使用用 udpxy 组播转单拨,有个参数就是设置组播续期间隔。 盲猜组播续期是三层数据包且不是 icmp ,所以受你防火墙的影响,ROS 收到你内网续期请求,转发组运营商这边的时候,drop all not coming from LAN 模式下,在你 ros 的 eth2 ( ITV 口),光猫发过来的三层数据包(包含组播续订交互数据包)被全 drop 了,所以续期失败,导致播放不了。 你可以试试禁用你添加的那个 IPTV 规则,然后修改 drop all not coming from LAN 这条规则,勾一个 connection state=new 试试,如果不中断了,那说明我可能大概猜对了 |
2
HelveticaNeue OP @badgv 感谢解答
我试了下提到的操作,还是会中断。我猜也是续期的问题,所以放行了组播地址的 input 。如果想确认的话,只能抓包看? 另外请问,我 accept 组播地址的话,家庭用有安全风险吗? |
3
badgv 13 小时 45 分钟前
@HelveticaNeue 你可以对 in-interface=eth2 开 accept ,ITV 网口没得任何风险
|
4
HelveticaNeue OP @badgv 谢谢!这样确实更合理
|
5
guiys 13 小时 25 分钟前 via Android
你试试电脑直插光猫 eth4 ,看组播 iptv 会不会 4 分钟断,排除法一下。
我之前用虚拟机 chr 的 IGMP Proxy 总会有奇奇怪怪的问题,后来索性就 openwrt 直接组播转单播了。 |
6
HelveticaNeue OP @guiys 试过直连光猫不会中断。按楼上说的 accept eth2 就可以了,具体原因估计要抓包,能用就不管了
|
7
badgv 13 小时 14 分钟前
@HelveticaNeue igmp proxy 模式下,建议要把 br 里面手 igmp snooping 打开,不然你在看组播的时候,你 ros 的 br ,会向 eth3 4 5 个口同时复制组播数据,口多了交换机多了就有组播风暴啥的。如果是硬路由,igmp snooping 可能会丢失某些 switch 的硬件加速功能,不带 switch 的就无所谓,直接开就行了。
|
![]() |
8
shuxiao9058 12 小时 56 分钟前
我是 iptv 下游服务单独搞了个 vlan ,避免影响 wifi 及上网内网的流量消耗,虽然也不会有啥影响的。
alternative-subnets 是需要的。 |
9
HelveticaNeue OP @badgv 我之前问过 ChatGPT ,说是不需要 IGMP Snooping ,因为 IGMP Proxy 只会把数据发给指定设备。
刚才打开 snooping 看了下,CPU 负载从 1%-2%下降到了 0%,说明还是有用? 怎么确定有没有用呢,在 br-eth3 上接一个 Wireshark 看看? |