Static Multicast Routing
Настройка статической multicast-маршрутизации на дистрибутивах ALT Linux.
Ссылки
- Статья про Multicast на Wikipedia
- Multicast over TCP/IP HOWTO (англ.)
- Организация доступа к IPTV через NAT
- Multicast forward/routing Linux, OpenBSD (iptv)
- Как пробросить IPTV
Общие понятия
Рассмотрим типичную схему multicast-маршрутизации с выделенным сервером, имеющим два сетевых интерфейса:
- eth0 — публичный интерфейс, на который придет поток от провайдера;
- eth1 — интерфейс в локальную сеть, в которой находятся клиенты.
Подготовка шлюза
Для начала необходимо установить дистрибутив ALT Linux и пакет igmpproxy из соответствующего репозитория:
apt-get update apt-get install igmpproxy
Также необходимы пакеты iptables net-tools iproute2, в дистрибутивах ALT Linux они присутствуют по умолчанию.
Для мониторинга можно установить пакеты tcpdump и wireshark
Конфигурация
Файл /etc/igmpproxy.conf:
# Раскомментируйте параметр quickleave # если внутри всего лишь один клиент IP TV #quickleave phyint eth0 upstream ratelimit 0 threshold 1 altnet 192.168.0.0/24 phyint eth1 downstream ratelimit 0 threshold 1
В параметрах altnet обычно указываются маски сети, в которых разрешена маршрутизация. В примере 192.168.0.0/24 — маска локальной сети.
Настройка маршрутизации
1. Шлюз должен быть настроен для маршрутизации сетевых пакетов:
- Находится в режиме "Шлюз" в модуле "Брандмауэр" в дистрибутивах на базе Пятой платформы;
- или настраиваем вручную:
echo 1 > /proc/sys/net/ipv4/conf/default/forwarding
Отключаем reverse path filtering:
echo 1 > /proc/sys/net/ipv4/conf/eth0/rp_filter
Для ядер 2.6.x указываем версию IGMP (igmpproxy поддерживает только IGMPv1 и IGMPv2 на внутреннем интерфейсе):
echo 1 > /proc/sys/net/ipv4/conf/eth0/force_igmp_version echo 1 > /proc/sys/net/ipv4/conf/eth1/force_igmp_version
2. Проверяем готовность к маршрутизации:
[root@ham1 ~]# less /proc/config.gz | grep '\(MROUTE\|MULTICAST\)' CONFIG_IP_MULTICAST=y CONFIG_IP_MROUTE=y [root@ham1 ~]# cat /proc/sys/net/ipv4/conf/default/forwarding 1 [root@ham1 ~]# cat /proc/sys/net/ipv4/conf/eth0/mc_forwarding 1 [root@ham1 ~]# cat /proc/sys/net/ipv4/conf/eth0/mc_forwarding 1 [root@ham1 ~]# cat /proc/sys/net/ipv4/conf/eth0/rp_filter 0 [root@ham1 ~]# cat /proc/sys/net/ipv4/conf/eth0/force_igmp_version 1 [root@ham1 ~]# cat /proc/sys/net/ipv4/conf/eth1/force_igmp_version 1
3. Запускаем igmpproxy
[root@ham1 ~]# /usr/sbin/igmpproxy /etc/igmpproxy.conf