Linux Debian проброс multicast / IPTV пробросить через NAT в локальную сеть |
Автор: admin Просмотров: 4428 Комментарии:
Добавлен: 28 ноября 2016
Имеем на борту:
Linux 3.2.0-1-686-pae i686 GNU/Linux
Debian 6.0.4
В результате будем иметь:
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 интерфейс wlan для нетбука (192.168.1.1/24 (клиент 192.168.1.1.)) и инет ppp0
Выполняем
aptitude update
aptitude upgrade
Далее, скачиваем igmpproxy, который будет заниматься прокидыванием multicast заголовков https://sourceforge.net/projects/igmpproxy/ распаковываем, конфигурируем, собираем, ставим
cd /usr/src
wget https://cdnetworks-kr-1.dl.sourceforge.net/project/igmpproxy/igmpproxy/0.1/igmpproxy-0.1.tar.gz
tar xvfz igmpproxy-0.1.tar.gz
cd igmpproxy-0.1
./configure
make
make install
Разрешаем ядру пропускать multicast трафик
nano /etc/sysctl.conf
вставляем в конце
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 eth0 -j MASQUERADE
Конфигурируем igmpproxy , указываем сети + интерфейсы с которых слушать multicast и интерфейсы, на которые отдавать его
nano /usr/local/etc/igmpproxy.conf
Приводим к виду
##——————————————————
## 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 не торопитесь добавлять!
Теперь пробуем тест. Запускаем VLC или спец программу для IPTV, которую распространяет ваш провайдер, и включаем приём потока (наш интерфейс должен начать громко кричать, что он хочет присоединиться к группе ипов на приём рассылки udp трафика, к примеру с адреса 239.192.0.12:1234)
На серверороутере од управлением 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
Inserted route table entry for 239.192.0.12 on VIF #0
joinMcGroup: 239.192.0.12 on eth0
RECV V2 member report from 10.72.55.177 to 239.192.0.12
The IGMP message was from myself. Ignoring.
Route activation request from 10.72.55.177 for 239.192.0.12 is from myself. Ignoring.
The source address 172.16.110.210 for group 239.192.0.12, is not in any valid net for upstream VIF.
RECV V2 member report from 192.168.0.2 to 239.192.0.12
Updated route entry for 239.192.0.12 on VIF #0
RECV V2 member report from 192.168.0.1 to 224.0.0.251
The IGMP message was from myself. Ignoring.
RECV V2 member report from 10.72.55.177 to 239.192.0.12
The IGMP message was from myself. Ignoring.
Добавляем чудесный адрес в igmppoxy.conf в раздел к сетям, с которых ловим multicast (я специально не указал его раньше, чтобы вы на своём примере таким же образом прописали необходимый свой адрес (во многих конфигах в инете народ пишет, что достаточно указать 0.0.0.0.0 и всё! НО! моя версия igmpproxy с таким диапазоном не запустилась))
nano /usr/local/etc/igmpproxy.conf
Вставляем
##——————————————————
## 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
altnet 172.16.110.210
##——————————————————
## 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
Запускаем, на клиенте щёлкаем канал и смотрим, должно всё заработать :)
/usr/local/sbin/igmpproxy -v -d /usr/local/etc/igmpproxy.conf
Теперь делаем более удобное управление для автозапуска, всё зависит от вашей религии и насколько вы творческая личность. Лично я сделал так
aptitude install screen
nano /etc/rc.local
Добавил перед exit 0 строку
su – userme -c 'screen d -m -S igmptraff igmpproxy /usr/local/etc/igmpproxy.conf'
Проверяем, чтобы для userme был доступ к бинарнику и конфигу
Или ручками запускаем
screen -d -m -S igmptraff igmpproxy -v -d /usr/local/etc/igmpproxy.conf
Открываем сессию
screen -x igmptraff
Сворачиваем сессию, не закрывая и не прерывая выполнение
Ctrl+A, D
Смотрим, что screen тихонько выполняется
screen -ls
Автор - сайт https://rukul.ru/
------------------------
Отзыв о Kwork
ТРИО теплый пол отзыв
Vkjust отзыв
Заработок на сокращении ссылок
Earnings on reducing links
Код PHP на HTML сайты
Я уже пять лет не занимаюсь сайтом, так как работаю по 12 часов. Образование у меня среднее, и по этому нет нормальной работы. Если бы сайт приносил по 100$ в месяц, я бы добавлял по 50 статей каждый месяц. Если отправите пожертвования, я оставлю Ваши имена и фамилии в списке благодетелей !
Bitcoin: 1AP3JCZVFpHzZwcAyNztbrbFFiLdnKbY1j
Litecoin LfHXHz4k6LnDNNvCodd5pj9aW4Qk67KoUD
Dogecoin D9HHvKNFZxRhjtoh6uZYjMjgcZewwiUME9
Есть также другие кошельки.
Linux 3.2.0-1-686-pae i686 GNU/Linux
Debian 6.0.4
В результате будем иметь:
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 интерфейс wlan для нетбука (192.168.1.1/24 (клиент 192.168.1.1.)) и инет ppp0
Выполняем
aptitude update
aptitude upgrade
Далее, скачиваем igmpproxy, который будет заниматься прокидыванием multicast заголовков https://sourceforge.net/projects/igmpproxy/ распаковываем, конфигурируем, собираем, ставим
cd /usr/src
wget https://cdnetworks-kr-1.dl.sourceforge.net/project/igmpproxy/igmpproxy/0.1/igmpproxy-0.1.tar.gz
tar xvfz igmpproxy-0.1.tar.gz
cd igmpproxy-0.1
./configure
make
make install
Разрешаем ядру пропускать multicast трафик
nano /etc/sysctl.conf
вставляем в конце
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 eth0 -j MASQUERADE
Конфигурируем igmpproxy , указываем сети + интерфейсы с которых слушать multicast и интерфейсы, на которые отдавать его
nano /usr/local/etc/igmpproxy.conf
Приводим к виду
##——————————————————
## 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 не торопитесь добавлять!
Теперь пробуем тест. Запускаем VLC или спец программу для IPTV, которую распространяет ваш провайдер, и включаем приём потока (наш интерфейс должен начать громко кричать, что он хочет присоединиться к группе ипов на приём рассылки udp трафика, к примеру с адреса 239.192.0.12:1234)
На серверороутере од управлением 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
Inserted route table entry for 239.192.0.12 on VIF #0
joinMcGroup: 239.192.0.12 on eth0
RECV V2 member report from 10.72.55.177 to 239.192.0.12
The IGMP message was from myself. Ignoring.
Route activation request from 10.72.55.177 for 239.192.0.12 is from myself. Ignoring.
The source address 172.16.110.210 for group 239.192.0.12, is not in any valid net for upstream VIF.
RECV V2 member report from 192.168.0.2 to 239.192.0.12
Updated route entry for 239.192.0.12 on VIF #0
RECV V2 member report from 192.168.0.1 to 224.0.0.251
The IGMP message was from myself. Ignoring.
RECV V2 member report from 10.72.55.177 to 239.192.0.12
The IGMP message was from myself. Ignoring.
Добавляем чудесный адрес в igmppoxy.conf в раздел к сетям, с которых ловим multicast (я специально не указал его раньше, чтобы вы на своём примере таким же образом прописали необходимый свой адрес (во многих конфигах в инете народ пишет, что достаточно указать 0.0.0.0.0 и всё! НО! моя версия igmpproxy с таким диапазоном не запустилась))
nano /usr/local/etc/igmpproxy.conf
Вставляем
##——————————————————
## 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
altnet 172.16.110.210
##——————————————————
## 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
Запускаем, на клиенте щёлкаем канал и смотрим, должно всё заработать :)
/usr/local/sbin/igmpproxy -v -d /usr/local/etc/igmpproxy.conf
Теперь делаем более удобное управление для автозапуска, всё зависит от вашей религии и насколько вы творческая личность. Лично я сделал так
aptitude install screen
nano /etc/rc.local
Добавил перед exit 0 строку
su – userme -c 'screen d -m -S igmptraff igmpproxy /usr/local/etc/igmpproxy.conf'
Проверяем, чтобы для userme был доступ к бинарнику и конфигу
Или ручками запускаем
screen -d -m -S igmptraff igmpproxy -v -d /usr/local/etc/igmpproxy.conf
Открываем сессию
screen -x igmptraff
Сворачиваем сессию, не закрывая и не прерывая выполнение
Ctrl+A, D
Смотрим, что screen тихонько выполняется
screen -ls
Автор - сайт https://rukul.ru/
------------------------
Отзыв о Kwork
ТРИО теплый пол отзыв
Vkjust отзыв
Заработок на сокращении ссылок
Earnings on reducing links
Код PHP на HTML сайты
Я уже пять лет не занимаюсь сайтом, так как работаю по 12 часов. Образование у меня среднее, и по этому нет нормальной работы. Если бы сайт приносил по 100$ в месяц, я бы добавлял по 50 статей каждый месяц. Если отправите пожертвования, я оставлю Ваши имена и фамилии в списке благодетелей !
Bitcoin: 1AP3JCZVFpHzZwcAyNztbrbFFiLdnKbY1j
Litecoin LfHXHz4k6LnDNNvCodd5pj9aW4Qk67KoUD
Dogecoin D9HHvKNFZxRhjtoh6uZYjMjgcZewwiUME9
Есть также другие кошельки.
Категория: Компьютерные советы
Комментарии |