Static Multicast Routing

Материал из ALT Linux Wiki


Настройка статической multicast-маршрутизации на дистрибутивах ALT Linux.

Ссылки

Общие понятия

Рассмотрим типичную схему multicast-маршрутизации с выделенным сервером, имеющим два сетевых интерфейса:

  • eth0 — публичный интерфейс, на который придет поток от провайдера;
  • eth1 — интерфейс в локальную сеть, в которой находятся клиенты.


Типовая схема multicast-маршрутизации

Подготовка шлюза

Для начала необходимо установить дистрибутив 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