Static Multicast Routing

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


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

Ссылки

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

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

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


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

Примечание: интерфейсы в дистрибутивах на базе Пятой платформы будут соответственно breth0 и breth1, однако мы не рекомендуем делать на них маршрутизацию.

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

Для начала необходимо установить дистрибутив ALT Linux и пакет igmpproxy из соответствующего репозитория:

apt-get update
apt-get install igmpproxy

Также необходимы пакеты iptables net-tools iproute2, в дистрибутивах ALT Linux они присутствуют по умолчанию.

Для мониторинга можно установить пакеты tcpdump и wireshark

Все манипуляции осуществляются под правами пользователя root.

Конфигурация

Файл /etc/igmpproxy.conf:

quickleave
phyint eth0 upstream  ratelimit 0  threshold 1
       altnet 192.168.0.0/24
phyint eth1 downstream  ratelimit 0  threshold 1
phyint lo disabled

В параметрах altnet обычно указываются маски сети, в которых разрешена маршрутизация. В примере 192.168.0.0/24 — маска локальной сети.

Для дистрибутивов на базе Пятой платформы файл /etc/igmpproxy.conf:

quickleave
phyint breth0 upstream  ratelimit 0  threshold 1
       altnet 192.168.0.0/24
phyint breth1 downstream  ratelimit 0  threshold 1
phyint lo disabled

Настройка маршрутизации

1. Шлюз должен быть настроен для маршрутизации сетевых пакетов:

  • Находится в режиме "Шлюз" в модуле "Брандмауэр" в дистрибутивах на базе Пятой платформы;
  • или настраиваем вручную:
echo 1 > /proc/sys/net/ipv4/conf/default/forwarding

Отключаем reverse path filtering:

echo 0 > /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/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. Настраиваем цепочки iptables для работы со специальными multicast-подсетями:

iptables -I INPUT -d 224.0.0.0/4 -j ACCEPT
iptables -I FORWARD -d 224.0.0.0/4 -j ACCEPT

4. Прописываем маршрут:

route add -net 224.0.0.0/4 dev eth1

5. Запускаем демона:

igmpproxy /etc/igmpproxy.conf

Журнал работы igmpproxy ведётся в /vat/log/messages. Для отладки можно запустить командой igmpproxy -d /etc/igmpproxy.conf

Проверка работы

После запуска igmpproxy должны появится соответствующие флаги:

[root@ham1 ~]# cat /proc/sys/net/ipv4/conf/breth0/mc_forwarding
1
[root@ham1 ~]# cat /proc/sys/net/ipv4/conf/breth1/mc_forwarding
1

В файлах состояния ядра появится записи:

cat /proc/net/igmp
cat /proc/net/dev_mcast
cat /proc/net/ip_mr_vif
cat /proc/net/ip_mr_cache