опять FreeBSD + igmpproxy + BeelineTV..
Добавлено: 2011-12-10 0:16:38
доброго времени суток.
Много чего перерыл на эту тему, много чего попробовал и проверил, но работает только половина телефизора. Сейчас объясню как
Есть FreeBSD/amd64 8.2 + pf + pfnat + igmpproxy + !ВНЕЗАПНО! Xbox 360Slim
Схема сети у меня типичная:
У сервера два интерфейса, один смотрит в билайн, другой в домашнюю локалку, в которой собственно сидит XBox и официально поддерживает BeelineTV
Так вот, все маршруты ко внутренним ресурсам у меня получает dhclient, я его починил для ms-classless-routes (option 249) и все заработало, вручную писать больше ничего не надо.
мой pf.conf
мой igmpproxy.conf
Так вот! При это первая половина телевизора, которая вещает из сети 78.107.196.0/22 работает прекрасно, а остальные каналы идут с сети 10.0.0.0/8 и они замерзают через несколько секунд просмотра.
Почему они замерзают я знаю, но не знаю как сделать, чтобы не замерзало.
Так выглядит лог хорошего канала
А такая фигня, вываливается, на замирающем канале
Т.е. поток идет из сети 10.0.0.0/8 и как-то странно, потому что 10.243.100.216 - это я
ifconfig msk0
Что делать уже просто не понимаю... неделю воюю... Подскажите пожалуйста
Много чего перерыл на эту тему, много чего попробовал и проверил, но работает только половина телефизора. Сейчас объясню как
Есть FreeBSD/amd64 8.2 + pf + pfnat + igmpproxy + !ВНЕЗАПНО! Xbox 360Slim
Схема сети у меня типичная:
У сервера два интерфейса, один смотрит в билайн, другой в домашнюю локалку, в которой собственно сидит XBox и официально поддерживает BeelineTV
Так вот, все маршруты ко внутренним ресурсам у меня получает dhclient, я его починил для ms-classless-routes (option 249) и все заработало, вручную писать больше ничего не надо.
Код: Выделить всё
# netstat -rn
Routing tables
Internet:
Destination Gateway Flags Refs Use Netif Expire
default 85.21.0.249 UGS 5 58548 ng0
10.0.0.0/8 10.243.96.1 UGS 0 0 msk0
10.243.96.0/21 link#5 U 0 0 msk0
10.243.100.216 link#5 UHS 0 0 lo0
78.107.23.0/24 10.243.96.1 UGS 0 0 msk0
78.107.51.0/28 10.243.96.1 UGS 0 0 msk0
78.107.196.0/22 10.243.96.1 UGS 0 5216 msk0
78.107.235.4/30 10.243.96.1 UGS 0 0 msk0
78.107.255.10 link#17 UHS 0 0 lo0
83.102.146.96/27 10.243.96.1 UGS 0 0 msk0
83.102.231.32/28 10.243.96.1 UGS 0 0 msk0
85.21.0.249 10.243.96.1 UGHS 4 59401 msk0
85.21.72.80/28 10.243.96.1 UGS 0 0 msk0
85.21.79.0/24 10.243.96.1 UGS 0 35 msk0
85.21.90.0/24 10.243.96.1 UGS 0 0 msk0
85.21.108.16/28 10.243.96.1 UGS 0 0 msk0
85.21.138.208/28 10.243.96.1 UGS 0 0 msk0
127.0.0.1 link#12 UH 0 9441 lo0
172.48.0.0/24 link#16 U 0 0 wlan0
172.48.0.1 link#16 UHS 0 0 lo0
192.168.1.0/29 link#6 U 3 244187 msk1
192.168.1.1 link#6 UHS 0 0 lo0
217.118.84.213/32 10.243.96.1 UGS 0 0 msk0
217.118.84.249/32 10.243.96.1 UGS 0 0 msk0
224.0.0.0/4 10.243.100.216 US 2 0 msk0
233.33.210.0/24 10.243.100.216 US 1 0 msk0
233.33.220.0/24 10.243.100.216 US 0 0 msk0
239.192.152.0/24 10.243.100.216 US 0 0 msk0
239.255.255.0/24 10.243.100.216 US 0 0 msk0Код: Выделить всё
# Const
inet_if="ng0"
corbina_if="msk0"
local_if="msk1"
wi_if="wlan0"
# Options
set block-policy return
set skip on lo
# Normalization
scrub in all fragment reassemble
scrub out all random-id max-mss 1460
# NAT Rules
nat on $corbina_if from { $local_if:network, $wi_if:network } to any -> ($corbina_if)
nat on $inet_if from { $local_if:network, $wi_if:network } to any -> ($inet_if)
# Default Rules
block in
antispoof quick for { lo $local_if $wi_if }
# IPTV
pass quick on { $local_if $corbina_if } proto { igmp udp } to { 224.0.0.0/4 } allow-opts modulate state
# Lan Rules
pass in quick on $local_if
pass in quick on $wi_if
pass out all keep stateКод: Выделить всё
quickleave
phyint msk0 upstream ratelimit 0 threshold 10
altnet 78.107.196.0/22
altnet 10.0.0.0/8
phyint msk1 downstream ratelimit 0 threshold 10
phyint ng0 disabled
phyint wlan0 disabled
phyint lo0 disabled
phyint tun0 disabled
phyint vboxnet0 disabled
phyint ath0 disabledПочему они замерзают я знаю, но не знаю как сделать, чтобы не замерзало.
Так выглядит лог хорошего канала
Код: Выделить всё
igmpproxy -dvvvvv /usr/local/etc/igmpproxy.conf
adding VIF, Ix 0 Fl 0x0 IP 0xd864f30a msk0, Threshold: 10, Ratelimit: 0
adding VIF, Ix 1 Fl 0x0 IP 0x0101a8c0 msk1, Threshold: 10, Ratelimit: 0
adding VIF, Ix 2 Fl 0x0 IP 0x010030ac wlan0, Threshold: 1, Ratelimit: 0
joinMcGroup: 224.0.0.2 on msk1
RECV V2 member report from 192.168.1.4 to 224.0.0.251
Inserted route table entry for 224.0.0.251 on VIF #1
joinMcGroup: 224.0.0.251 on msk0
RECV V2 member report from 10.243.100.216 to 224.0.0.251
The IGMP message was from myself. Ignoring.
RECV V2 member report from 192.168.1.6 to 233.33.210.112
Inserted route table entry for 233.33.210.112 on VIF #1
joinMcGroup: 233.33.210.112 on msk0
RECV V2 member report from 10.243.100.216 to 233.33.210.112
The IGMP message was from myself. Ignoring.
Adding MFC: 78.107.196.15 -> 233.33.210.112, InpVIf: 0
RECV V2 member report from 192.168.1.6 to 233.33.210.112
Updated route entry for 233.33.210.112 on VIF #1
Adding MFC: 78.107.196.15 -> 233.33.210.112, InpVIf: 0
RECV V2 member report from 192.168.1.4 to 224.0.0.251
Updated route entry for 224.0.0.251 on VIF #1Код: Выделить всё
RECV Leave message from 192.168.1.6 to 224.0.0.2
RECV Leave message from 192.168.1.6 to 224.0.0.2
RECV Membership query from 10.219.145.41 to 233.33.210.82
RECV V2 member report from 10.243.100.216 to 233.33.210.82
The IGMP message was from myself. Ignoring.
RECV Membership query from 10.219.145.41 to 233.33.210.82
RECV V2 member report from 10.243.100.216 to 233.33.210.82
The IGMP message was from myself. Ignoring.
RECV Membership query from 10.219.145.41 to 233.33.210.82
RECV V2 member report from 10.243.100.216 to 233.33.210.82
The IGMP message was from myself. Ignoring.
RECV Membership query from 10.219.145.41 to 233.33.210.82
RECV V2 member report from 10.243.100.216 to 233.33.210.82
The IGMP message was from myself. Ignoring.
RECV Membership query from 10.219.145.41 to 233.33.210.82
RECV V2 member report from 10.243.100.216 to 233.33.210.82ifconfig msk0
Код: Выделить всё
msk0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500
options=c011b<RXCSUM,TXCSUM,VLAN_MTU,VLAN_HWTAGGING,TSO4,VLAN_HWTSO,LINKSTATE>
ether 00:1d:60:d7:d4:e6
inet 10.243.100.216 netmask 0xfffff800 broadcast 10.243.103.255
media: Ethernet autoselect (100baseTX <full-duplex>)
status: active