Static Multicast Routing: различия между версиями
Строка 19: | Строка 19: | ||
<br style="clear: both" /> | <br style="clear: both" /> | ||
[[Файл:Multicast-scheme.png|frame|center|Типовая схема multicast-маршрутизации]] | [[Файл:Multicast-scheme.png|frame|center|Типовая схема multicast-маршрутизации]] | ||
Multicast-маршрутизация осуществляется по протоколу [http://ru.wikipedia.org/wiki/IGMP IGMP]. IGMP (англ. Internet Group Management Protocol — протокол управления группами Интернета) — протокол управления групповой (multicast) передачей данных в сетях, основанных на протоколе IP. В данном руководстве используется IGMP версии 1. | |||
На шлюзе должен должен быть разрешена пересылка сетевых пакетов (forwarding) и запущен демон multicast-маршрутизации. Мы рекомендуем использовать в качестве такого демона '''igmpproxy'''. | На шлюзе должен должен быть разрешена пересылка сетевых пакетов (forwarding) и запущен демон multicast-маршрутизации. Мы рекомендуем использовать в качестве такого демона '''igmpproxy'''. |
Версия от 18:04, 20 мая 2010
Настройка статической multicast-маршрутизации на дистрибутивах ALT Linux.
Ссылки
- Статья про Multicast на Wikipedia
- Multicast over TCP/IP HOWTO (англ.)
- Организация доступа к IPTV через NAT
- Multicast forward/routing Linux, OpenBSD (iptv)
- Как пробросить IPTV
Общие понятия
Рассмотрим типичную схему multicast-маршрутизации с выделенным сервером, имеющим два сетевых интерфейса:
- eth0 — публичный интерфейс, на который придет поток от провайдера;
- eth1 — интерфейс в локальную сеть, в которой находятся клиенты.
Multicast-маршрутизация осуществляется по протоколу IGMP. IGMP (англ. Internet Group Management Protocol — протокол управления группами Интернета) — протокол управления групповой (multicast) передачей данных в сетях, основанных на протоколе IP. В данном руководстве используется IGMP версии 1.
На шлюзе должен должен быть разрешена пересылка сетевых пакетов (forwarding) и запущен демон multicast-маршрутизации. Мы рекомендуем использовать в качестве такого демона igmpproxy.
Примечание: интерфейсы в дистрибутивах на базе Пятой платформы будут соответственно breth0 и breth1, однако мы не рекомендуем делать на них маршрутизацию.
Подготовка шлюза
Для начала необходимо установить дистрибутив ALT Linux и пакет демона multicast-маршрутизации 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. Шлюз должен быть настроен для маршрутизации сетевых пакетов:
- Находится в режиме "Шлюз" в модуле "Брандмауэр" в дистрибутивах на базе Пятой платформы;
- или настраиваем вручную: в файле /etc/net/sysctl.conf параметр net.ipv4.ip_forward должен быть установлен в "1":
net.ipv4.ip_forward = 1
Также в файл /etc/net/sysctl.conf добавляем параметры: отключаем reverse path filtering для eth0 и для ядер 2.6.x указываем версию IGMP (igmpproxy поддерживает только IGMPv1 и IGMPv2 на внутреннем интерфейсе):
net.ipv4.conf.eth0.rp_filter=0 net.ipv4.conf.eth0.force_igmp_version=1 net.ipv4.conf.eth1.force_igmp_version=1
Примечание: после внесения изменений в этот файл необходимо перезагрузить компьютер.
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