В общем сломал уже голову, никак не могу настроить. Не работает и все тут. Изначально схема такая:
Есть один маршрутизатор, смотрит в интернет
TP-Link TL-WR741ND
У него внешний адрес статика, внутренний 192.168.8.1/24
В сети несколько IPTV приставок.
Через него все работает. Дальше появилась необходимость в более мощном маршрутизаторе. VPN тунели, прокси, блокировки сайтов и т.д. Решено поставить freebsd. ТП линк отключать не стал, одна ТВ приставка подключена к нему напрямую и все работало. Появилась необходимость настроить еще одну ТВ приставвку, и ТВ на компьютерах. И вот тут уже нет возможности подключить их всех к внешнему маршрутизатору, они все должны ходить через шлюз FreeBSD по заданным правилам. Никак не могу настроить все это дело.
Итак схема такаяWAN (внешний интерфейс смотрит в интернет. TP-Link)
|
LAN(NAT) 192.168.8.1/24 Включен IGMP proxy в автоматическом режиме. Тут IPTV работает.
|
WAN 192.168.8.3 (Freebsd внешний интерфейс)
|
LAN 192.168.10.253 (NAT PF) В этой подсети все компьютеры, тут то и нужно вещать IPTV.Пробовал настраивать UDPPX что бы хотябы с компьютеров можно было смотреть. установил по умолчанию, запустил
ps -ax | grep udpxy
2783 - S 0:00.05 udpxy -p 4022 -m 192.168.8.3 -a 192.168.10.253 -l /var/log/udpxy.log
поменял ссылки в плейлисте, не работает.настройки pf
]# cat /etc/pf.conf
int_if="re0"
ext_if="re1"
ext_gw="192.168.8.1"
lan_nt="192.168.10.0/24"
######################################
set block-policy return
scrub in all
######################################
######################################
rdr on $ext_if proto tcp from any to any port 80 -> 192.168.10.212
rdr on $ext_if proto tcp from any to any port 3389 -> 192.168.10.254
rdr on $ext_if proto tcp from any to any port 3080 -> 192.168.10.254
rdr on $ext_if proto tcp from any to any port 3081 -> 192.168.10.254
rdr on $ext_if proto tcp from any to any port 8080 -> 192.168.10.254
rdr on $ext_if proto tcp from any to any port 555 -> 192.168.10.254
rdr on $ext_if proto tcp from any to any port 554 -> 192.168.10.254
nat on $ext_if inet from $lan_nt to any -> ($ext_if)
######################################pass log all
pass in proto igmp all allow-opts
pass out proto igmp all allow-opts
pass proto udp all allow-optsОпции ядра:
device pf
device pflog
device pfsyncoptions ALTQ
options ALTQ_CBQ # Class Bases Queuing (CBQ)
options ALTQ_RED # Random Early Detection (RED)
options ALTQ_RIO # RED In/Out
options ALTQ_HFSC # Hierarchical Packet Scheduler (HFSC)
options ALTQ_PRIQ # Priority Queuing (PRIQ)
options ALTQ_NOPCC # Required for SMP buildoptions MROUTING
options DEVICE_POLLING
options HZ=1000Пробовал настроить Igmpproxy
phyint re1 upstream ratelimit 0 threshold 1
altnet 192.0.0.0/8phyint re0 downstream ratelimit 0 threshold 1
phyint pflog0 disabled
phyint pfsync0 disabled
phyint lo0 disabled
phyint ng0 disabledНе работает.
igmpproxy -v -d /usr/local/etc/igmpproxy.conf выдает
received packet from 192.168.10.110 shorter (28 bytes) than hdr+data length (20+28)
The origin for route 239.255.255.250 changed from 192.168.8.1 to 192.168.10.128
received packet from 192.168.10.110 shorter (28 bytes) than hdr+data length (20+28)
received packet from 192.168.10.117 shorter (32 bytes) than hdr+data length (24+32)
received packet from 192.168.10.253 shorter (32 bytes) than hdr+data length (24+32)
received packet from 192.168.10.254 shorter (32 bytes) than hdr+data length (24+32)
received packet from 192.168.10.110 shorter (28 bytes) than hdr+data length (20+28)
received packet from 192.168.10.110 shorter (28 bytes) than hdr+data length (20+28)
received packet from 192.168.10.110 shorter (28 bytes) than hdr+data length (20+28)
received packet from 192.168.10.241 shorter (32 bytes) than hdr+data length (24+32)
received packet from 192.168.10.254 shorter (32 bytes) than hdr+data length (24+32)
received packet from 192.168.10.110 shorter (28 bytes) than hdr+data length (20+28)
received packet from 192.168.10.254 shorter (32 bytes) than hdr+data length (24+32)
received packet from 192.168.10.110 shorter (28 bytes) than hdr+data length (20+28)
received packet from 192.168.10.110 shorter (28 bytes) than hdr+data length (20+28)
received packet from 192.168.10.110 shorter (28 bytes) than hdr+data length (20+28)
Removing MFC: 192.168.10.128 -> 239.255.255.250, InpVIf: 1
MRT_DEL_MFC; Errno(49): Can't assign requested address
received packet from 192.168.10.110 shorter (28 bytes) than hdr+data length (20+28)
И ничего не показывает.
tcpdump на внутреннем интерфейсе
tcpdump -n -i re0 igmp
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on re0, link-type EN10MB (Ethernet), capture size 65535 bytes
capability mode sandbox enabled
18:41:56.819739 IP 192.168.10.110 > 232.44.44.233: igmp v2 report 232.44.44.233
18:41:57.383493 IP 192.168.10.110 > 232.44.44.233: igmp v2 report 232.44.44.233
18:41:58.319207 IP 192.168.10.110 > 232.44.44.233: igmp v2 report 232.44.44.233
18:41:58.883136 IP 192.168.10.110 > 232.44.44.233: igmp v2 report 232.44.44.233
18:42:00.819170 IP 192.168.10.110 > 232.44.44.233: igmp v2 report 232.44.44.233
18:42:01.383218 IP 192.168.10.110 > 232.44.44.233: igmp v2 report 232.44.44.233
18:42:02.319128 IP 192.168.10.110 > 232.44.44.233: igmp v2 report 232.44.44.233
18:42:02.883248 IP 192.168.10.110 > 232.44.44.233: igmp v2 report 232.44.44.233на внешнем тишина.
Пробовал вот этот скрипт
http://www.opennet.me/tips/2649_multicast_proxy_igmp_freebsd...
Тоже не работает.
Пакеты видны и на внутреннем и на внешнем, но ничего не показывает.
[root@blgw /usr/ports/net/udpxy]# tcpdump -n -i re1 igmp
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on re1, link-type EN10MB (Ethernet), capture size 65535 bytes
capability mode sandbox enabled
18:44:41.846531 IP 192.168.10.110 > 232.44.44.233: igmp v2 report 232.44.44.233
18:44:42.387113 IP 192.168.10.110 > 232.44.44.233: igmp v2 report 232.44.44.233
18:44:43.347685 IP 192.168.10.110 > 232.44.44.233: igmp v2 report 232.44.44.233
18:44:43.887653 IP 192.168.10.110 > 232.44.44.233: igmp v2 report 232.44.44.233
18:44:43.973850 IP 192.168.10.254 > 225.1.2.240: igmp v2 report 225.1.2.240
18:44:45.848310 IP 192.168.10.110 > 232.44.44.233: igmp v2 report 232.44.44.233
18:44:46.387220 IP 192.168.10.110 > 232.44.44.233: igmp v2 report 232.44.44.233
^C
7 packets captured
109 packets received by filter
0 packets dropped by kernel
[root@blgw /usr/ports/net/udpxy]# tcpdump -n -i re0 igmp
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on re0, link-type EN10MB (Ethernet), capture size 65535 bytes
capability mode sandbox enabled
18:44:51.348279 IP 192.168.10.110 > 232.44.44.233: igmp v2 report 232.44.44.233
18:44:51.887260 IP 192.168.10.110 > 232.44.44.233: igmp v2 report 232.44.44.233
18:44:53.848426 IP 192.168.10.110 > 232.44.44.233: igmp v2 report 232.44.44.233
18:44:54.387332 IP 192.168.10.110 > 232.44.44.233: igmp v2 report 232.44.44.233
18:44:55.349210 IP 192.168.10.110 > 232.44.44.233: igmp v2 report 232.44.44.233
18:44:55.887343 IP 192.168.10.110 > 232.44.44.233: igmp v2 report 232.44.44.233
^C
6 packets captured
104 packets received by filter
0 packets dropped by kernelПробовал Freebsd напрямую подключать в интернет, без TP-link результат такой же. Не работает и все.
Голову сломал уже. Подскажите еще чем можно настроить? или что не так? И возможно ли вообще через 2 шлюза прокинуть?mrouted тоже не работает.
>[оверквотинг удален]
> 18:44:51.887260 IP 192.168.10.110 > 232.44.44.233: igmp v2 report 232.44.44.233
> 18:44:53.848426 IP 192.168.10.110 > 232.44.44.233: igmp v2 report 232.44.44.233
> 18:44:54.387332 IP 192.168.10.110 > 232.44.44.233: igmp v2 report 232.44.44.233
> 18:44:55.349210 IP 192.168.10.110 > 232.44.44.233: igmp v2 report 232.44.44.233
> 18:44:55.887343 IP 192.168.10.110 > 232.44.44.233: igmp v2 report 232.44.44.233
> ^C
> 6 packets captured
> 104 packets received by filter
> 0 packets dropped by kernel
>
Скрипт я так понимаю не работает, из-за того, что он не натит адреса, а посылает реального отправителя, ну и у провайдера это все конечно режится. Видимо он для тех, у кого подсеть с реальными адресами.
>[оверквотинг удален]
> ^C
> 6 packets captured
> 104 packets received by filter
> 0 packets dropped by kernel
>
> Пробовал Freebsd напрямую подключать в интернет, без TP-link результат такой же. Не
> работает и все.
> Голову сломал уже. Подскажите еще чем можно настроить? или что не так?
> И возможно ли вообще через 2 шлюза прокинуть?
> mrouted тоже не работает.Через UDPXY заработало, только через проигрыватель VLC. Включением на интерфейсах promisc mode. Но мне нужно что бы ИП ТВ приставки работали и на телевизор показывали.
Кто то настроил через igmpproxy? или может есть этот скрипт модифицированый на замену IP подозреваю, что мультикаст реализован через L3 и там то как раз рубятся адреса локальные.
> Кто то настроил через igmpproxy? или может есть этот скрипт модифицированый на
> замену IP подозреваю, что мультикаст реализован через L3 и там то
> как раз рубятся адреса локальные.Совершенно необязательно, может Multicast TTL выставлен в 2.
Тогда через первый Multicast-роутер данные пойдут, через второй — нет.
>> Кто то настроил через igmpproxy? или может есть этот скрипт модифицированый на
>> замену IP подозреваю, что мультикаст реализован через L3 и там то
>> как раз рубятся адреса локальные.
> Совершенно необязательно, может Multicast TTL выставлен в 2.
> Тогда через первый Multicast-роутер данные пойдут, через второй — нет.Ну я на freebsd поднимал TTL пакетам, scrab in all min-ttl 10 не помогает. Да и потом, писал же что пробовал подключать напрямую шлюз на freebsd не помогает, все равно не работает.
Обновил ось до 10.1 поставил все патчи, обновил все порты включил на интерфесах
ifconfig re1,0 promisc
Заработало, но только через VLC плеер. И как то притормаживает, но это думаю уже с чем то другим связанно.
А через их плеер, ну который провайдер рекомендует на своем сайте IP-TV pleer так и не работает ни в какую.