В общем сломал уже голову, никак не могу настроить. Не работает и все тут. Изначально схема такая:
Есть один маршрутизатор, смотрит в интернет
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 build
options 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 тоже не работает.