Linux Debian прокидання multicast

Linux 3.2.0-1-686-pae i686 GNU/Linux

В результаті матимемо:

1. Маршрутизація multicast трафіку через Linux роутер

2. Роздача IPTV через Linux у локальну мережу на Windows клієнтів

Дано: Мережа провайдера (eth0 10.72.55.177 шлюз 10.72.48.1), локальна мережа (eth1 192.168.0.1/24 (клієнт 192.168.0.2)) і wi-fi інтерфейс8. 192.168.1.1.)) та інет ppp0

Далі, завантажуємо igmpproxy, який займатиметься прокиданням multicast заголовків http://sourceforge.net/projects/igmpproxy/

tar xvfz igmpproxy-0.1.tar.gz

Дозволяємо ядру пропускати multicast трафік

вставляємо наприкінці

net.ipv4.ip_forward=1 net.ipv4.conf.all.mc_forwarding = 1 net.ipv4.conf.default.mc_forwarding = 1 net.ipv4.conf.lo.mc_forwarding = 1 net.ipv4.conf.eth0.mc_forwarding = 1 net.ipv4.conf.eth1.mc_forwarding = 1 net.ipv4.conf.wlan0.mc_forwarding = 1 net.inet.ip. mforwarding=1 multicast_router=YES

За промовчанням фаєрвол у Debian пропускає все і вся, тому додані правила, тільки для доступу клієнтам локалки в локалку провайдера + вихід в інтернет

iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -o ppp0 -j MASQUERADE iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -o ppp0 -j MASQUERADE iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -d 10.0.0.0/8 -o eth0 -j MASQUERADE iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -d 10.0.0.0/8 -o -j MASQUERADE

Конфігуруємо igmpproxy, вказуємо мережі + інтерфейси з яких слухати multicast та інтерфейси, на які віддавати його

Приводимо до вигляду

##——————————————————— ##Enable Quickleave mode (Sends Leave instantly) ##——————————————————— quickleave ———————— ## Configuration for eth0 (Upstream Interface) ##—————————————————— phyint eth0 upstream ratelimit 0 threshold 1 altnet 224.0.0.0/4 ##—————————————————— ## Configuration for eth1 (Downstream Interface) ##——————————————————— phyint eth1 downstream ratelimit 0 threshold 1 phyint wlan0 downstream ratelimit 0 threshold 1 ##————— ————————————— ## Configuration for eth2 (Disabled Interface) ##—————————————————— phyint ppp0 disabled

Підсіть 224.0.0.0/4 і є розповсюджувачем multicast шторму :) )

Маленький нюанс, місцевий провайдер мовить 224.0.0.0/4 не від імені локального шлюзу, так що рядок route add -net 224.0.0.0/4 gw 10.72.48.1 не поспішайте додавати!

На серверороутері під управлінням Debian виконуємо

igmpproxy -v -d /usr/local/etc/igmpproxy.conf

УВАГА! Тут у першій половині команди використаний відносний шлях змінної оточення PATH і прямий шлях до файлу конфіга, ви повинні точно знати, наприклад, що бінарник і конфіг перебувають у необхідних місцях і їх викликати. Наприклад, цей рядок у своєму випадку мені можна вказати явно

/usr/local/sbin/igmpproxy -v -d /usr/local/etc/igmpproxy.conf

ключі -v та -d допоможуть нам для вилову дебагів.

Запущено у нас на гвинтовій машині клієнта і запущено igmpproxy і немає ніякого ТБ … Клікаємо канал і уважно дивимося лог igmpproxy

RECV Membership query from 192.168.0.1 to 239.192.0.12 RECV V2 member report from 192.168.0.2 to 239.192.0.12 Запроваджений route table entry for 239.192.0. 192.0.12 on eth0 RECV V2 member report from 10.72.55.177 to 239.192.0.12 The IGMP messageбув від себе. Ігнорування. Запит на активацію маршруту з 10.72.55.177 для 239.192.0.12 надіслано мною. Ігнорується. Адреса джерела 172.16.110.210 для групи 239.192.0.12 не входить до жодної дійсної мережі для висхідного VIF. Звіт учасників RECV V2 від 192.168.0.2 до 239.192.0.12 Оновлений запис маршруту для 239.192 .0.12 на VIF #0 Звіт учасників RECV V2 від 192.168.0.1 до 224.0.0.251 Повідомлення IGMP надійшло від мене. Ігнорування. Звіт учасників RECV V2 від 10.72.55.177 до 239.192.0.12 Повідомлення IGMP надійшло від мене. Ігнорування.

##——————————————————— ## Увімкнути режим Quickleave (миттєво надсилає вихід) ##————————————— —————— quickleave ##——————————————————— ## Конфігурація для eth0 (інтерфейс висхідного потоку) ## —————————————————— phyint eth0 upstream ratelimit 0 threshold 1 altnet 224.0.0.0/4 altnet 172.16.110.210 ##— ————————————————— ## Конфігурація для eth1 (низхідний інтерфейс) ##————————————————— —— phyint eth1 downstream ratelimit 0 threshold 1 phyint wlan0 downstream ratelimit 0 threshold 1 ##——————————————————— ## Конфігурація для eth2 (відключений інтерфейс) ##——————————————————— phyint ppp0 вимкнено

Запускаємо, на клієнті щёлкаем канал і дивимось, повинно все заробити :)

/usr/local/sbin/igmpproxy -v -d /usr/local/etc/igmpproxy.conf

Тепер робиться більш зручне управління для автозапуску, все залежить від вашої релігії та наскільки ви творча особистість. Лично я зробив так

екран встановлення aptitude

Додав перед виходом 0 строку

su – userme -c 'екран d -m -S igmptraff igmpproxy /usr/local/etc/igmpproxy.conf'

Перевіряємо, щоб для користувача був доступ до бінарника та конфігурації

Или запускаем ручками

екран -d -m -S igmptraff igmpproxy -v -d /usr/local/etc/igmpproxy.conf

екран -xigmptraff

Звертаємо сесію, не закриваючи і не перериваючи виконання