IPtv multicast
-
Не не проходят IGMP, по чему непонятно…
Вот правила LAN
pass in quick on re0 inet proto udp from any port = bootpc to 255.255.255.255 port = bootps keep state label "allow access to DHCP server on LAN"
pass in quick on re0 inet proto udp from any port = bootpc to 192.168.1.1 port = bootps keep state label "allow access to DHCP server on LAN"
pass out quick on re0 inet proto udp from 192.168.1.1 port = bootps to any port = bootpc keep state label "allow access to DHCP server on LAN"
block drop in on ! re0 inet from 192.168.1.0/24 to any
block drop in on re0 inet6 from fe80::2e0:42ff:fe38:1b1 to any
pass out quick on re0 proto icmp all keep state label "let out anything from firewall host itself"
pass out quick on re0 all flags S/SA keep state label "let out anything from firewall host itself"
pass in quick on re0 inet from any to 192.168.1.1 flags S/SA keep state label "anti-lockout web rule"
pass in quick on re0 proto igmp all keep state label "USER_RULE: LAN_IGMP"
pass in quick on re0 inet from 192.168.1.0/24 to any flags S/SA keep state label "USER_RULE: Default LAN -> any"
pass in quick on re0 inet proto tcp from any to 127.0.0.1 port = ftp-proxy flags S/SA keep state label "FTP PROXY: Allow traffic to localhost"
pass in quick on re0 inet proto tcp from any to 127.0.0.1 port = ftp flags S/SA keep state label "FTP PROXY: Allow traffic to localhost" -
Я не вижу loadbalancer'а в Ваших правилах.
-
Я не вижу loadbalancer'а в Ваших правилах.
Сорри, loadbalancer - создавал. И менял правило для LAN. Он создался с ip-адресом WAN интерфейса + 10 в последнем разряде, после этого я генерировал IGMP запросы? но по tcpdump -i <wan interface="" name="">-n -s0 net 224.0.0.0/4 - ни один igmp v3 report так и не прошел. Чуть позже смогу выложить правила для LAN c loadbalancer-ом.</wan>
-
Правила с включённым лоадбаленсером:
pass in quick on re0 inet proto udp from any port = bootpc to 255.255.255.255 port = bootps keep state label "allow access to DHCP server on LAN"
pass in quick on re0 inet proto udp from any port = bootpc to 192.168.1.1 port = bootps keep state label "allow access to DHCP server on LAN"
pass out quick on re0 inet proto udp from 192.168.1.1 port = bootps to any port = bootpc keep state label "allow access to DHCP server on LAN"
block drop in on ! re0 inet from 192.168.1.0/24 to any
block drop in on re0 inet6 from fe80::2e0:42ff:fe38:1b1 to any
pass out quick on re0 proto icmp all keep state label "let out anything from firewall host itself"
pass out quick on re0 all flags S/SA keep state label "let out anything from firewall host itself"
pass in quick on re0 inet from any to 192.168.1.1 flags S/SA keep state label "anti-lockout web rule"
pass in quick on re0 proto igmp from any to <vpns>keep state label "NEGATE_ROUTE: Negate policy route for local network(s)"
pass in quick on re0 route-to (fxp0 84.52.X.X) inet proto igmp all keep state label "USER_RULE: LAN_IGMP"
pass in quick on re0 inet from 192.168.1.0/24 to any flags S/SA keep state label "USER_RULE: Default LAN -> any"
pass in quick on re0 inet proto tcp from any to 127.0.0.1 port = ftp-proxy flags S/SA keep state label "FTP PROXY: Allow traffic to localhost"
pass in quick on re0 inet proto tcp from any to 127.0.0.1 port = ftp flags S/SA keep state label "FTP PROXY: Allow traffic to localhost"</vpns>и то что удалось надампить на WAN - во время попыток посмотреть IPTV:
19:59:28.773573 IP 172.25.0.1 > 224.0.0.1: igmp query v2
19:59:30.174871 IP 172.25.0.1 > 239.255.10.60: igmp query v2 [max resp time 10] [gaddr 239.255.10.60]
19:59:31.173620 IP 172.25.0.1 > 239.255.10.60: igmp query v2 [max resp time 30] [gaddr 239.255.10.60]
19:59:34.228291 IP 172.25.0.1 > 239.255.10.60: igmp query v2 [max resp time 30] [gaddr 239.255.10.60]
19:59:46.566442 IP 172.25.0.1 > 224.0.0.13: PIMv2, Hello, length 42
20:00:02.286527 IP 172.25.0.1 > 224.0.0.13: PIMv2, Bootstrap, length 36
20:00:02.287693 IP 172.25.0.1 > 224.0.0.13: PIMv2, Bootstrap, length 36
20:00:13.530540 IP 192.168.90.22.37266 > 233.34.28.6.1001: UDP, length 1316
20:00:15.865689 IP 172.25.0.1 > 224.0.0.13: PIMv2, Hello, length 42
20:00:15.866983 IP 172.25.0.1 > 224.0.0.13: PIMv2, Hello, length 42
20:00:15.883895 IP 172.25.0.1 > 224.0.0.13: PIMv2, Hello, length 42
20:00:15.885180 IP 172.25.0.1 > 224.0.0.13: PIMv2, Hello, length 42
20:00:15.886464 IP 172.25.0.1 > 224.0.0.13: PIMv2, Hello, length 42
20:00:17.115696 IP 172.25.0.1 > 239.255.10.41: igmp query v2 [max resp time 10] [gaddr 239.255.10.41]
20:00:18.111663 IP 172.25.0.1 > 239.255.10.41: igmp query v2 [max resp time 30] [gaddr 239.255.10.41]
20:00:21.127125 IP 172.25.0.1 > 239.255.10.41: igmp query v2 [max resp time 30] [gaddr 239.255.10.41]
20:00:28.771786 IP 172.25.0.1 > 224.0.0.1: igmp query v2
20:00:45.764935 IP 172.25.0.1 > 224.0.0.13: PIMv2, Hello, length 42
20:00:45.766224 IP 172.25.0.1 > 224.0.0.13: PIMv2, Hello, length 42 -
Должен признать, я был не прав. На сегодняшний день, видимо, смотреть IPtv через pfSense невозможно. И проблема не в том, что мультикаст передать через pfSense нельзя, это похоже работает:
20:00:13.530540 IP 192.168.90.22.37266 > 233.34.28.6.1001: UDP, length 1316
Проблема в том, что невозможно передать IGMP. Будем ждать пока кто-нибудь не соорудить igmpproxy пакетикт для pfSense.
Прошу прощения за то, что морочил Вам голову. -
Должен признать, я был не прав. На сегодняшний день, видимо, смотреть IPtv через pfSense невозможно. И проблема не в том, что мультикаст передать через pfSense нельзя, это похоже работает:
20:00:13.530540 IP 192.168.90.22.37266 > 233.34.28.6.1001: UDP, length 1316
Проблема в том, что невозможно передать IGMP. Будем ждать пока кто-нибудь не соорудить igmpproxy пакетикт для pfSense.
Прошу прощения за то, что морочил Вам голову.Да на самом деле igmpproxy уже есть в пакетах, которые предлагаются через Web-интерфейс, в pfSense 1.2.3RC1 - точно есть. У меня он стоит, но как его настроить тоже непонятно. Был бы благодарен если бы подсказали верные настройки. В Web-интерфейсе есть выбор : WAN/LAN , upstream/Downstream и Network Address - что и куда нужно прописать?
-
Как говорят наши американские друзья "уау!", не знал, не знал… у меня везде 1.2-RELEASE стоит. На досуге обязательно гляну и отпишу.
-
Удалось ли заставить работать IPTV через IGMP ?
-
Пока нет. Разработчики pfSense молчат -(
-
Для правильной работы igmp-proxy нужно ядро с опцией MROUTING
настройки igmp-proxy стандартные найдено в сети:После этого лезем в /usr/local/etc/ и исправляем igmpproxy.conf
У меня это:
##Начало конфига
quickleave
phyint rl0 upstream ratelimit 0 threshold 1
##rl0 заменть на буквенное обозначение внешнего(интернет) интерфеса.
##Кто забыл как посмотреть - ifconfig
altnet 239.255.1.0/24
altnet 239.255.0.0/24
altnet 212.48.127.0/24
altnet 212.49.127.0/24
##Сегменты сети с мультикаст траффиком. Одинаковы для всей планеты.
phyint dc0 downstream ratelimit 0 threshold 1
##Заменить dc0 на буквенное обозначение внутреннего интерфеса
phyint lo disabled
##Отключаем передачу мультикаст траффика на внутренний интерфес
##(петлю loopback) ОБЯЗАТЕЛЬНО!
##Конец конфига -
Для правильной работы igmp-proxy нужно ядро с опцией MROUTING
настройки igmp-proxy стандартные найдено в сети:После этого лезем в /usr/local/etc/ и исправляем igmpproxy.conf
У меня это:
##Начало конфига
quickleave
phyint rl0 upstream ratelimit 0 threshold 1
##rl0 заменть на буквенное обозначение внешнего(интернет) интерфеса.
##Кто забыл как посмотреть - ifconfig
altnet 239.255.1.0/24
altnet 239.255.0.0/24
altnet 212.48.127.0/24
altnet 212.49.127.0/24
##Сегменты сети с мультикаст траффиком. Одинаковы для всей планеты.
phyint dc0 downstream ratelimit 0 threshold 1
##Заменить dc0 на буквенное обозначение внутреннего интерфеса
phyint lo disabled
##Отключаем передачу мультикаст траффика на внутренний интерфес
##(петлю loopback) ОБЯЗАТЕЛЬНО!
##Конец конфигаЭто все хорошо известно. У Вас есть "ядро с опцией MROUTING" для pfsense и которое работает с igmpproxy, т.е. на компе можно смотреть IPTV ?
-
Все выходные бились над этим вопросом.
Ядро взяли 7.1 GENERIC откомпилировали с нужной опцией а вот подсунуть в PFSens не вышло …
Может есть исходники PFSensa или может подскажете как подсунуть? -
Тут Eugene отписался, что возможно скоро все заработает в тестовой сборке от разработчиков.
-
Ставил последнюю Альфу от 6 августа вроде
все так же не работает …. -
Пока пробовать что-либо бесполезно. Ошибка в коде igmpproxy. Ошибка найдена и поправлена, остаётся ждать, когда исправленный вариант будет скомпилирован и доступен всеобщему пользованию. Я дам знать - потестируете.
PS: ядро в pfSense скомпилировано с опцией MROUTING
-
Тогда ждемс …
Вопрос а при помощи диска разработчика можно откомпилировать и собрать свой PFSENSE ?PS Хотя по логам igmpproxy пишет что то вроде "не могу включить маршрут тк не поддерживает ядро"
и на сайте лазил и не видел в настройках включенную опчию -
pfSense-Developers-1.2.2.iso.gz здесь http://files.pfsense.org/mirror/downloads/
Можно глянуть на лог igmpproxy? -
К сожалению логи показать не могу тк поставил на эту машину FreeBSD.
Вопрос другой, а если установить пакет igmpproxy не через WEB интерфейс а при помощи pkg_add -r igmpproxy и дальнейшей настройкой в ручную -работать будет?
Теоретически должно работать если подключена опция ядра MROUTONG …Кто нибудь так пробовал?
-
Работать не будет
-
Да действительно не работает …
-
Ну когда же появится версия PFSense с рабочим IGMP proxy?
-
Похоже это долгая история. Могу прислать по мэйлу бинарник для теста.
-
Ок.
Вышли пожалуйста :)
электронка в личном… -
Та же история
Aug 19 23:29:57 php: /pkg_edit.php: Started Igmpproxy service sucsesfully.
Aug 19 23:29:57 igmpproxy: Note: RECV Membership query from 192.168.0.1 to 224.0.0.1 (ip_hl 20, data 8)
Aug 19 23:30:29 igmpproxy: Note: RECV Membership query from 192.168.0.1 to 224.0.0.1 (ip_hl 20, data 8)
Aug 19 23:30:37 igmpproxy: Note: The source address 192.168.0.99 for group 239.192.152.143, is valid DOWNSTREAM VIF #0.
Aug 19 23:30:37 igmpproxy: Note: New origin for route 239.192.152.143 is 192.168.0.99, flood 0
Aug 19 23:30:37 igmpproxy: Note: Adding MFC: 192.168.0.99 -> 239.192.152.143, InpVIf: 0
Aug 19 23:31:00 igmpproxy: Note: RECV Membership query from 192.168.0.1 to 224.0.0.1 (ip_hl 20, data 8)
Aug 19 23:31:10 igmpproxy: Note: Removing MFC: 192.168.0.99 -> 239.192.152.143, InpVIf: 0
Aug 19 23:31:10 igmpproxy: Note: Route is not active. No kernel updates done. -
tcpdump -ni <lan inteface="">igmp
и
tcpdump -ni <wan interface="">igmp
Запускаем программу-ресивер и смотрим tcpdump'ыа также пожалуйтса /tmp/igmpproxy.conf</wan></lan>
-
Хорошо попробуем.
До этого так же было, единственное что igmpproxy устанавливал через порты при помощи pkg_add -r -
должно быть примерно так:
Debu: Packet from 192.168.7.185: proto: 2 hdrlen: 20 iplen: 8 or 2048
Note: RECV V2 member report from 192.168.7.185 to 224.0.0.22 (ip_hl 20, data 8)
Debu: Should insert group 239.142.1.1 (from: 192.168.7.185) to route table. Vif Ix : 0
Debu: No existing route for 239.142.1.1. Create new.
Debu: Found existing routes. Find insert location.
Debu: Inserting at beginning, before route 224.0.1.60
Info: Inserted route table entry for 239.142.1.1 on VIF #0
Debu: Joining group 239.142.1.1 upstream on IF address 2.2.2.2
Note: joinMcGroup: 239.142.1.1 on le1
Debu: SENT V2 member report from INADDR_ANY to 239.142.1.1
Debu:
Current routing table (Insert Route);
–---------------------------------------------------Debu: #0: Dst: 239.142.1.1, Age:2, St: I, OutVifs: 0x00000001
Debu: #1: Dst: 224.0.1.60, Age:2, St: I, OutVifs: 0x00000001
Debu: #2: Dst: 224.0.1.127, Age:2, St: I, OutVifs: 0x00000001
Debu: #3: Dst: 239.255.255.250, Age:2, St: I, OutVifs: 0x00000001
Debu: #4: Dst: 224.0.0.251, Age:2, St: I, OutVifs: 0x00000001
Debu: #5: Dst: 239.255.255.253, Age:2, St: I, OutVifs: 0x00000001
Debu:И каждый IGMP пакет принимаемый на DOWNSTREAM interface будет транслирован на UPSTREAM.
Проверь кстати таблицу маршрутизации, мультикаст трафик должен быть замаршрутизирован на UPSTREAM -
Установил 1.2.2 Developers
вот логи
Aug 20 17:52:38 php: /pkg_edit.php: Started Igmpproxy service sucsesfully.
Aug 20 17:52:38 igmpproxy: Note: RECV Membership query from 192.168.0.1 to 224.0.0.1 (ip_hl 20, data 8)
Aug 20 17:52:57 igmpproxy: Warn: select() failure; Errno(4): Interrupted system call
Aug 20 17:52:57 igmpproxy: Note: Got a interupt signal. Exiting.
Aug 20 17:52:57 igmpproxy: Note: All routes removed. Routing table is empty.
Aug 20 17:52:59 igmpproxy: Note: adding VIF, Ix 0 Fl 0x0 IP 0x0100a8c0 rl0, Threshold: 1, Ratelimit: 0
Aug 20 17:52:59 igmpproxy: Note: adding VIF, Ix 1 Fl 0x0 IP 0xc3bdff0a rl1, Threshold: 1, Ratelimit: 0
Aug 20 17:52:59 igmpproxy: Note: joinMcGroup: 224.0.0.2 on rl0
Aug 20 17:52:59 igmpproxy: Note: RECV Membership query from 192.168.0.1 to 224.0.0.1 (ip_hl 20, data 8)
Aug 20 17:53:12 igmpproxy: Note: RECV Membership query from 10.255.189.193 to 224.0.0.1 (ip_hl 20, data 8)
Aug 20 17:53:30 igmpproxy: Note: RECV Membership query from 192.168.0.1 to 224.0.0.1 (ip_hl 20, data 8)
Aug 20 17:53:53 igmpproxy: Warn: select() failure; Errno(4): Interrupted system call
Aug 20 17:53:53 igmpproxy: Note: Got a interupt signal. Exiting.
Aug 20 17:53:53 igmpproxy: Note: All routes removed. Routing table is empty.
Aug 20 17:54:01 igmpproxy: Note: adding VIF, Ix 0 Fl 0x0 IP 0x0100a8c0 rl0, Threshold: 1, Ratelimit: 0
Aug 20 17:54:01 igmpproxy: Note: adding VIF, Ix 1 Fl 0x0 IP 0xc3bdff0a rl1, Threshold: 1, Ratelimit: 0
Aug 20 17:54:01 igmpproxy: Note: joinMcGroup: 224.0.0.2 on rl0
Aug 20 17:54:01 igmpproxy: Note: RECV Membership query from 192.168.0.1 to 224.0.0.1 (ip_hl 20, data 8)
Aug 20 17:54:12 igmpproxy: Note: RECV Membership query from 10.255.189.193 to 224.0.0.1 (ip_hl 20, data 8)
Aug 20 17:54:32 igmpproxy: Note: RECV Membership query from 192.168.0.1 to 224.0.0.1 (ip_hl 20, data 8) -
пакеты IGMP на внешнем и внутреннем интерфейсах есть
-
igmpproxy.conf
##–----------------------------------------------------
Enable Quickleave mode (Sends Leave instantly)
##------------------------------------------------------
quickleave
phyint rl1 upstream ratelimit 0 threshold 1
altnet 212.49.127.0/24phyint rl0 downstream ratelimit 0 threshold 1
altnet 192.168.0.0/24 -
Ну вот и отлично! в чём теперь проблема?
По идее то устройство, что генерит multicast (на upstream интерфейсе) должно увидеть IGMP и понять, что на данном сегменте сети есть желающие получть этот трафик. После того, как данное устройство осознало столь значительный факт, ты должен незамедлительно получать multicast на upstream интерфейсе, который уже ядром будет доставлен на downstream интерфейс. -
Кстати, всем интересующимся. Можете uninstall/install igmpproxy package и попробовать. Патч наконец-то стал доступен.
-
Я невнимательно посмотрел на внешнем интерфейсе есть IGMP но он от удаленного устройства а не от моего шлюза
IGMP запросы ходят только по внутреннему интерфейсуPS версию igmpproxy обновил через пакеты
-
Это внутри
18:56:04.464254 IP 192.168.0.97 > 224.0.0.252: igmp v2 report 224.0.0.252
18:56:04.464674 IP 192.168.0.97 > 239.255.0.147: igmp v2 report 239.255.0.147
18:58:07.967229 IP 192.168.0.1 > 224.0.0.1: igmp query v2Это снаружи
19:02:56.110616 IP 10.255.189.193 > 224.0.0.1: igmp query v2
19:03:56.363288 IP 10.255.189.193 > 224.0.0.1: igmp query v2
19:04:57.298533 IP 10.255.189.193 > 224.0.0.1: igmp query v2 -
Не уверен, что это корректно, на сколько я помню моя тестовая программулина (какой-то плэйер) слал membership report на 224.0.0.2, а внутри уже был адрес типа 239.255.0.147. Я гляну в RFC, как должно быть.
@filosoff96:18:56:04.464674 IP 192.168.0.97 > 239.255.0.147: igmp v2 report 239.255.0.147
Что у тебя с маршрутизацией покажи пожалуйста
netstat -rn -
Internet:
Destination Gateway Flags Refs Use Netif Expire
default 10.255.189.193 UGS 0 202232 rl1
10.255.189.192/27 link#2 UC 0 0 rl1
10.255.189.193 00:0c:31:65:7d:00 UHLW 2 105 rl1 1074
10.255.189.195 127.0.0.1 UGHS 0 0 lo0
127.0.0.1 127.0.0.1 UH 1 0 lo0
192.168.0.0/24 link#1 UC 0 0 rl0
192.168.0.97 00:11:d8:d7:72:18 UHLW 1 49921 rl0 1007 -
Попробуй добавить следующее
route add host 239.255.0.147 10.255.189.193 -
##–----------------------------------------------------
Enable Quickleave mode (Sends Leave instantly)
##------------------------------------------------------
quickleave
phyint rl1 upstream ratelimit 0 threshold 1
altnet 212.49.127.0/24phyint rl0 downstream ratelimit 0 threshold 1
altnet 192.168.0.0/24Это конфиг
-
Попробуй добавить следующее
route add host 239.255.0.147 10.255.189.193route: bad address: host
-
Пардон
route add -host 239.255.0.147 10.255.189.193