IPTV op een Mikrotik

Hi All!

Heeft iemand misschien voor mij een uitdraai voor hoe ik IPTV op mijn RB5009UG+S+ voor elkaar kan krijgen?

Gewoon de vlan4 “untagged” doorzetten naar de ethernet poort waar de “amino” op aangesloten is lijkt niet genoeg te zijn :wink:

Many thanks!

/interface vlan
add comment=“Freedom-IPTV vlan” interface=sfp-sfpplus1 name=vlan4 vlan-id=4
add comment=“Freedom-Internet vlan” interface=sfp-sfpplus1 mtu=1508 name=vlan6 vlan-id=6

/interface bridge
add name=iptv vlan-filtering=yes

/interface bridge port
add bridge=iptv interface=vlan4
add bridge=iptv interface=ether6

/interface bridge vlan
add bridge=iptv untagged=ether6 vlan-ids=4

/routing igmp-proxy interface
add alternative-subnets=0.0.0.0/0 interface=vlan4 threshold=0 upstream=yes
add interface=iptv threshold=0

/ip firewall nat
add action=masquerade chain=srcnat comment="Masquerade for IPTV (no static IP)" out-interface=iptv

/ip dhcp-client
add add-default-route=no interface=iptv name=IPTV

/ip/dhcp-client> print
Columns: NAME, INTERFACE, USE-PEER-DNS, ADD-DEFAULT-ROUTE, STATUS, ADDRESS
# NAME   INTERFACE  USE-PEER-DNS  ADD-DEFAULT-ROUTE  STATUS  ADDRESS         
0 isp    ether8     no            no                 bound   77.xxxxxx/24
1 IPTV   iptv       yes           no                 bound   100.xxxxx/17 

* Uit deze post kwam ik niet helemaal uit, plus, er is veel behandeld en dingen lopen door elkaar. (Niet alleen IPTV)

Hmpf… dat is zelfs volstrekt niet de bedoeling! Dat geeft weer een hoop netwerkvervuiling en werkt niet.

Je dient de Amino gewoon aan te sluiten zoals je al je andere apparatuur aansluit. Het heeft namelijk ook internet nodig. En daarnaast dien je een IGMP-proxy te hebben die tussen VLAN 4 en je internet netwerk draait.

Mikrotik is daar zo te zien vrij duidelijk in:

Merk op dat je quick-leave op no moet laten. Bij één apparaat zou je het op yes kunnen zetten maar dat levert je vrijwel niets extras, terwijl de ellende groot is als je meer multicast listeners hebt.

En omdat de IGMP proxy op jouw Routerboard draait, moet je er gaten voor in jouw firewall prikken:

/ip firewall filter add action=accept      chain=input comment="IGMP from IPTV-WAN"                              protocol=igmp                     in-interface-list="WAN (IPTV)"
/ip firewall filter add action=accept      chain=input comment="IGMP from IPTV-LAN"                              protocol=igmp                     in-interface-list="LAN (IPTV)"


/ip firewall filter add action=accept      chain=output comment="IGMP to IPTV-WAN"                                 protocol=igmp                    out-interface-list="WAN (IPTV)"
/ip firewall filter add action=accept      chain=output comment="IGMP to IPTV-LAN"                                 protocol=igmp                    out-interface-list="LAN (IPTV)"

in de input en output chains, niet in de forward

Mogelijk moet dat dan ook voor het RTP verkeer?

Ja, dat moet ook open staan.

Dit zijn alle relevante regels (onder voorbehoud):

/ip firewall filter
add action=accept chain=input  comment="IGMP from IPTV-WAN"                                                          in-interface-list="WAN (IPTV)" protocol=igmp
add action=accept chain=input  comment="UDP multicast from IPTV-WAN"    dst-address=224.0.0.0/4 dst-port=1024-65535  in-interface-list="WAN (IPTV)" protocol=udp

add action=accept chain=input  comment="IGMP from IPTV-LAN"                                                          in-interface-list="LAN (IPTV)" protocol=igmp
add action=accept chain=input  comment="Remaining from IPTV-LAN"                                                     in-interface-list="LAN (IPTV)"

add action=accept chain=output comment="IGMP to IPTV-WAN"                                                           out-interface-list="WAN (IPTV)"  protocol=igmp
add action=accept chain=output comment="IGMP to IPTV-LAN"                                                           out-interface-list="LAN (IPTV)"  protocol=igmp
add action=accept chain=output comment="IGMP to multicast address"      dst-address=224.0.0.22                                                       protocol=igmp

add action=accept chain=forward comment="UDP from IPTV-WAN to IPTV-LAN" dst-address=224.0.0.0/4 dst-port=1024-65535  in-interface-list="WAN (IPTV)" out-interface-list="LAN (IPTV)" protocol=udp
add action=accept chain=forward comment="IPTV: to public internet"                                                   in-interface-list="LAN (IPTV)" out-interface-list=WAN          protocol=!igmp
add action=accept chain=forward comment="IPTV: to LAN"                                                               in-interface-list="LAN (IPTV)" out-interface-list=LAN          protocol=!igmp


/ip firewall nat
add action=masquerade chain=srcnat comment="Masquerade for IPTV" out-interface-list="WAN (IPTV)" src-address=192.168.10.0/24
set rtsp disabled=no

/routing igmp-proxy interface
add alternative-subnets=0.0.0.0/0 comment="IPTV upstream interface" interface=vlan1.4 upstream=yes
add comment="local IPTV clients" interface=bridge-IPTV

Ik heb geprobeerd het met knip- en plakwerk wat leesbaarder te maken; ik hoop dat dat gelukt is…

Check die had ik gelezen, en houd ik in de gaten :wink:

aaaaah, alles blijft (qua afhandeling) gewoon op de routerboard… Check

Na een paar dagen rotzooien, AI, en gewoon de manuals kom ik nu op deze setup:

Ik heb voor de zekerheid wat meer meegenomen voor “context” :wink:

# 2026-06-21 17:12:29 by RouterOS 7.23.1
# software id = G3C2-U7TW
#
# model = RB5009UG+S+
# serial number = HDK08KHMJNP


/interface ethernet
set [ find default-name=sfp-sfpplus1 ] comment=SFP l2mtu=1514 mtu=1508

/interface vlan
add comment="Freedom-IPTV vlan" interface=sfp-sfpplus1 mtu=1508 name=vlan4 vlan-id=4
add comment="Freedom-Internet vlan" interface=sfp-sfpplus1 mtu=1508 name=vlan6 vlan-id=6

/ppp profile
add change-tcp-mss=no name=freedom-pppoe only-one=yes use-compression=yes use-upnp=no

/interface pppoe-client
add allow=pap comment="Fiberoptic Freedom" disabled=no interface=vlan6 name=sfp-freedom profile=freedom-pppoe user=fake@freedom.nl

/queue type
add kind=fq-codel name=fqcodel

/queue simple
add max-limit=1G/1G name=QOS queue=fqcodel/fqcodel target=sfp-freedom total-queue=fqcodel

/ip firewall connection tracking
set udp-timeout=10s

/ip dhcp-client
add add-default-route=no interface=vlan4 name=IPTV

/ip firewall filter
<snipped, de volgende regels staan allemaal onderaan>
add action=accept chain=input comment="IGMP from IPTV-WAN" in-interface=vlan4 protocol=igmp
add action=accept chain=input comment="UDP multicast from IPTV-WAN" dst-address=224.0.0.0/4 dst-port=1024-65535 in-interface=vlan4 protocol=udp
add action=accept chain=input comment="IGMP from IPTV-LAN" in-interface-list=LAN protocol=igmp
add action=accept chain=input comment="Remaining from IPTV-LAN" disabled=yes in-interface-list=LAN
add action=accept chain=output comment="IGMP to IPTV-WAN" out-interface=vlan4 protocol=igmp
add action=accept chain=output comment="IGMP to IPTV-LAN" out-interface-list=LAN protocol=igmp
add action=accept chain=output comment="IGMP to multicast address" dst-address=224.0.0.22 protocol=igmp
add action=accept chain=forward comment="UDP from IPTV-WAN to IPTV-LAN" dst-address=224.0.0.0/4 dst-port=1024-65535 in-interface=vlan4 out-interface-list=LAN protocol=udp
add action=accept chain=forward comment="IPTV: to public internet" in-interface-list=LAN out-interface-list=WAN protocol=!igmp

En belangrijk dat deze regels onderaan staan:
add action=drop chain=forward comment="defconf: drop all from WAN not DSTNATed" connection-nat-state=!dstnat connection-state=new in-interface-list=WAN
add action=drop chain=forward comment="defconf: drop invalid" connection-state=invalid

Anders wordt data voor IPTV geblocked ;-)

/ip firewall nat
add action=masquerade chain=srcnat comment="Masquerade for IPTV (no static IP)" out-interface=vlan4

/routing igmp-proxy interface
add alternative-subnets=0.0.0.0/0 comment="IPTV upstream interface" interface=vlan4 upstream=yes
add comment="local IPTV clients" interface=bridge

En dat was het!!

Deze wil je juist zo ver mogelijk bovenaan hebben; alleen moet je er wel voor zorgen dat gewenste packets eerst worden doorgelaten, bijvoorbeeld door een regel als deze er kort vóór te zetten:

add action=accept chain=forward comment="defconf: accept established,related, untracked" connection-state=established,related

of, als je “fast track” gebruikt, deze twee:

add action=fasttrack-connection chain=forward comment="defconf: fasttrack" connection-state=established,related
add action=accept chain=forward comment="defconf: accept established,related, untracked" connection-state=established,related,untracked

Als je ze onderaan zet dan kun je ze net zo goed weg laten of vervangen dor een “drop all” (als je de default “drop all” niet vertrouwt).