Форум русскоязычного сообщества Ubuntu


Следите за новостями русскоязычного сообщества Ubuntu в Twitter-ленте @ubuntu_ru_loco

Автор Тема: Multicast в локальную сеть  (Прочитано 8700 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн avuraltsev

  • Автор темы
  • Новичок
  • *
  • Сообщений: 36
    • Просмотр профиля
Multicast в локальную сеть
« : 13 Мая 2013, 19:36:16 »
Доброго времени суток.
Сегодня вспомнил о том что у моего провайдера (ТТК) есть IP TV и решил попробовать настроить, но как вы уже догадались ни чего не вышло)) перекопал кучу мануалов толку ноль...пока что)) настраиваю по этому мануалу

что имеем:
Шлюз под управлением Ubuntu Server 12.04
Eth0 - смотрит в сеть (192.168.0.0/24)
Eth2 - интернет (адрес выдается автоматически)


# /etc/igmpproxy.conf
##------------------------------------------------------
## Enable Quickleave mode (Sends Leave instantly)
## Эту строчку раскомментируют только в том случае,
## если внути всего лишь один клиент IP TV
##------------------------------------------------------
#quickleave

##------------------------------------------------------
## Configuration for eth0 (Upstream Interface)
## Здесь указаны параметры для публичного интерфейса,
## на который придет поток от провайдера
##------------------------------------------------------
phyint eth2 upstream ratelimit 0  threshold 1
        altnet 0.0.0.0/0

##------------------------------------------------------
## Configuration for eth1 (Downstream Interface)
## Типовая конфигурация для внутреннего интерфейса
##------------------------------------------------------
phyint eth0 downstream ratelimit 0  threshold 1

# sysctl -p
net.ipv4.conf.default.rp_filter = 0
net.ipv4.conf.all.rp_filter = 0
net.ipv4.ip_forward = 1

# iptables-save
# Generated by iptables-save v1.4.12 on Mon May 13 21:19:44 2013
*filter
:INPUT ACCEPT [47:18962]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [314:86327]
-A INPUT -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -d 224.0.0.0/4 -i eth2 -j ACCEPT
-A INPUT -s 224.0.0.0/4 -i eth2 -j ACCEPT
-A INPUT -i eth2 -p tcp -m tcp -m multiport --dports 22,53,80,9091,10000,27960 -j ACCEPT
-A INPUT -i eth2 -j DROP
-A FORWARD -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
-A FORWARD -p igmp -j ACCEPT
-A FORWARD -s 224.0.0.0/4 -j ACCEPT
-A FORWARD -i eth0 -o eth2 -j ACCEPT
-A FORWARD -o eth2 -p tcp -m tcp -j DROP
COMMIT
# Completed on Mon May 13 21:19:44 2013
# Generated by iptables-save v1.4.12 on Mon May 13 21:19:44 2013
*mangle
:PREROUTING ACCEPT [1815:278470]
:INPUT ACCEPT [518:71981]
:FORWARD ACCEPT [220:92427]
:OUTPUT ACCEPT [327:88147]
:POSTROUTING ACCEPT [555:180944]
-A PREROUTING -d 224.0.0.0/4 -p udp -j TTL --ttl-inc 1
COMMIT
# Completed on Mon May 13 21:19:44 2013
# Generated by iptables-save v1.4.12 on Mon May 13 21:19:44 2013
*nat
:PREROUTING ACCEPT [1255:142351]
:INPUT ACCEPT [7:1080]
:OUTPUT ACCEPT [37:4825]
:POSTROUTING ACCEPT [10:2205]
-A POSTROUTING -o eth2 -j MASQUERADE
COMMIT
# Completed on Mon May 13 21:19:44 2013

# tcpdump -i eth2 igmp
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on eth2, link-type EN10MB (Ethernet), capture size 65535 bytes
21:16:10.939659 IP 10.66.5.170 > 224.0.2.60: igmp query v2 [max resp time 10] [gaddr 224.0.2.60]
21:16:11.864374 IP 10.66.5.170 > 224.0.2.60: igmp query v2 [max resp time 10] [gaddr 224.0.2.60]
21:16:25.452898 IP 10.66.5.170 > all-systems.mcast.net: igmp query v2
21:16:25.963874 IP intranet.local > 224.0.0.251: igmp v2 report 224.0.0.251
21:16:35.474455 IP 10.66.5.170 > 238.1.1.203: igmp query v2 [max resp time 10] [gaddr 238.1.1.203]
21:16:35.524646 IP 10.66.5.170 > 238.1.1.203: igmp query v2 [max resp time 10] [gaddr 238.1.1.203]
21:16:35.551933 IP 10.66.5.170 > 238.1.1.203: igmp query v2 [max resp time 10] [gaddr 238.1.1.203]
21:16:36.489216 IP 10.66.5.170 > 238.1.1.203: igmp query v2 [max resp time 10] [gaddr 238.1.1.203]
21:16:36.513920 IP 10.66.5.170 > 238.1.1.203: igmp query v2 [max resp time 10] [gaddr 238.1.1.203]
21:16:36.544745 IP 10.66.5.170 > 238.1.1.203: igmp query v2 [max resp time 10] [gaddr 238.1.1.203]
21:17:18.664631 IP 10.66.5.170 > 224.0.2.60: igmp query v2 [max resp time 10] [gaddr 224.0.2.60]
21:17:19.676393 IP 10.66.5.170 > 224.0.2.60: igmp query v2 [max resp time 10] [gaddr 224.0.2.60]
21:17:20.696052 IP 10.66.5.170 > 224.0.2.60: igmp query v2 [max resp time 10] [gaddr 224.0.2.60]
21:17:21.684899 IP 10.66.5.170 > 224.0.2.60: igmp query v2 [max resp time 10] [gaddr 224.0.2.60]
21:17:22.698187 IP 10.66.5.170 > 224.0.2.60: igmp query v2 [max resp time 10] [gaddr 224.0.2.60]
21:17:22.733962 IP 10.66.5.170 > 224.0.2.60: igmp query v2 [max resp time 10] [gaddr 224.0.2.60]
21:17:22.756918 IP 10.66.5.170 > 224.0.2.60: igmp query v2 [max resp time 10] [gaddr 224.0.2.60]
21:17:23.707316 IP 10.66.5.170 > 224.0.2.60: igmp query v2 [max resp time 10] [gaddr 224.0.2.60]
21:17:23.731496 IP 10.66.5.170 > 224.0.2.60: igmp query v2 [max resp time 10] [gaddr 224.0.2.60]
21:17:23.758415 IP 10.66.5.170 > 224.0.2.60: igmp query v2 [max resp time 10] [gaddr 224.0.2.60]
21:17:25.303499 IP 10.66.5.170 > 224.0.2.60: igmp query v2 [max resp time 10] [gaddr 224.0.2.60]
21 packets captured
21 packets received by filter
0 packets dropped by kernel
« Последнее редактирование: 13 Мая 2013, 19:37:57 от avuraltsev »

Оффлайн koshev

  • Старожил
  • *
  • Сообщений: 1709
  • חתול המדען
    • Просмотр профиля
Re: Multicast в локальную сеть
« Ответ #1 : 13 Мая 2013, 21:00:30 »
Покажите еще
sysctl -a |grep -E 'mc_forwarding|force_igmp' |grep -E 'eth0|eth2'
OpenWrt 19.07

Оффлайн avuraltsev

  • Автор темы
  • Новичок
  • *
  • Сообщений: 36
    • Просмотр профиля
Re: Multicast в локальную сеть
« Ответ #2 : 14 Мая 2013, 12:30:25 »
Покажите еще
sysctl -a |grep -E 'mc_forwarding|force_igmp' |grep -E 'eth0|eth2'


# sysctl -a |grep -E 'mc_forwarding|force_igmp' |grep -E 'eth0|eth2'
error: permission denied on key 'vm.compact_memory'
error: permission denied on key 'dev.parport.parport0.autoprobe'
error: permission denied on key 'dev.parport.parport0.autoprobe0'
error: permission denied on key 'dev.parport.parport0.autoprobe1'
error: permission denied on key 'dev.parport.parport0.autoprobe2'
error: permission denied on key 'dev.parport.parport0.autoprobe3'
error: permission denied on key 'net.ipv4.route.flush'
error: permission denied on key 'net.ipv6.route.flush'
net.ipv4.conf.eth0.mc_forwarding = 0
net.ipv4.conf.eth0.force_igmp_version = 0
net.ipv4.conf.eth2.mc_forwarding = 0
net.ipv4.conf.eth2.force_igmp_version = 0
net.ipv6.conf.eth0.mc_forwarding = 0
net.ipv6.conf.eth2.mc_forwarding = 0

Оффлайн koshev

  • Старожил
  • *
  • Сообщений: 1709
  • חתול המדען
    • Просмотр профиля
Re: Multicast в локальную сеть
« Ответ #3 : 14 Мая 2013, 19:15:28 »
А что Вы хотели? У Вас же запрещено хождение multicast между интерфейсами, кроме того, в конфиге igmpproxy лучше бы указать более конкретные источники вещания, 0/0, это всё же перебор.
Попробуйте разрешить multicast.
Ниже моя конфигурация, вероятно она подойдёт и Вам. Подставьте свои интерфейсы.
(Нажмите, чтобы показать/скрыть)
OpenWrt 19.07

Оффлайн avuraltsev

  • Автор темы
  • Новичок
  • *
  • Сообщений: 36
    • Просмотр профиля
Re: Multicast в локальную сеть
« Ответ #4 : 15 Мая 2013, 11:12:12 »
в конфиге igmpproxy лучше бы указать более конкретные источники вещания, 0/0, это всё же перебор.
Попробуйте разрешить multicast.

Если пишу 238.1.1.0/24, то igmpproxy не запускается...ну как не запускается, у меня терпения подождать не хватило...

Вот лог:
May 15 13:48:51 intranet igmpproxy[7318]: The source address 192.168.0.1 for group 239.255.255.250, is not in any valid net for upstream VIF.
May 15 13:49:12 intranet igmpproxy[7318]: The source address 10.99.63.90 for group 238.1.1.109, is not in any valid net for upstream VIF.
May 15 13:49:20 intranet igmpproxy[7318]: The source address 10.99.63.48 for group 238.1.1.221, is not in any valid net for upstream VIF.
May 15 13:49:20 intranet igmpproxy[7318]: The source address 192.168.0.2 for group 239.255.255.250, is not in any valid net for upstream VIF.
May 15 13:49:22 intranet igmpproxy[7318]: The source address 10.99.63.90 for group 238.1.1.109, is not in any valid net for upstream VIF.
May 15 13:49:30 intranet igmpproxy[7318]: The source address 10.99.63.48 for group 238.1.1.221, is not in any valid net for upstream VIF.
May 15 13:49:32 intranet igmpproxy[7318]: The source address 10.99.63.90 for group 238.1.1.109, is not in any valid net for upstream VIF.
May 15 13:49:40 intranet igmpproxy[7318]: The source address 10.99.63.48 for group 238.1.1.221, is not in any valid net for upstream VIF.
May 15 13:49:42 intranet igmpproxy[7318]: The source address 10.99.63.90 for group 238.1.1.109, is not in any valid net for upstream VIF.
May 15 13:49:50 intranet igmpproxy[7318]: The source address 10.99.63.48 for group 238.1.1.221, is not in any valid net for upstream VIF.
May 15 13:49:53 intranet igmpproxy[7318]: The source address 10.99.63.48 for group 238.1.1.222, is not in any valid net for upstream VIF.
May 15 13:49:56 intranet igmpproxy[7318]: The source address 192.168.0.1 for group 239.255.255.250, is not in any valid net for upstream VIF.
May 15 13:50:00 intranet igmpproxy[7318]: The source address 10.99.63.48 for group 238.1.1.221, is not in any valid net for upstream VIF.
May 15 13:50:03 intranet igmpproxy[7318]: select() failure; Errno(4): Interrupted system call
May 15 13:50:28 intranet igmpproxy[7878]: The source address 192.168.0.2 for group 239.255.255.250, is not in any valid net for upstream VIF.
May 15 13:50:52 intranet igmpproxy[7878]: The source address 192.168.0.2 for group 238.1.1.222, is not in any valid net for upstream VIF.
May 15 13:51:00 intranet igmpproxy[7878]: The source address 192.168.0.2 for group 239.255.255.250, is not in any valid net for upstream VIF.
May 15 13:51:04 intranet igmpproxy[7878]: select() failure; Errno(4): Interrupted system call

может нужно написать маршруты для включения mc_forwarding в sysctl.conf ??

Попробуйте разрешить multicast.
Ниже моя конфигурация, вероятно она подойдёт и Вам. Подставьте свои интерфейсы.

Внес изменения в sysctl.conf

/etc/sysctl.conf
#
# /etc/sysctl.conf - Configuration file for setting system variables
# See /etc/sysctl.d/ for additional system variables
# See sysctl.conf (5) for information.
#

#kernel.domainname = example.com

# Uncomment the following to stop low-level messages on console
#kernel.printk = 3 4 1 3

##############################################################3
# Functions previously found in netbase
#

# Uncomment the next two lines to enable Spoof protection (reverse-path filter)
# Turn on Source Address Verification in all interfaces to
# prevent some spoofing attacks
net.ipv4.conf.default.rp_filter=0
net.ipv4.conf.all.rp_filter=0

# Uncomment the next line to enable TCP/IP SYN cookies
# See http://lwn.net/Articles/277146/
# Note: This may impact IPv6 TCP sessions too
#net.ipv4.tcp_syncookies=1

# Uncomment the next line to enable packet forwarding for IPv4
net.ipv4.ip_forward=1

# Uncomment the next line to enable packet forwarding for IPv6
#  Enabling this option disables Stateless Address Autoconfiguration
#  based on Router Advertisements for this host
#net.ipv6.conf.all.forwarding=1


###################################################################
# Additional settings - these settings can improve the network
# security of the host and prevent against some network attacks
# including spoofing attacks and man in the middle attacks through
# redirection. Some network environments, however, require that these
# settings are disabled so review and enable them as needed.
#
# Do not accept ICMP redirects (prevent MITM attacks)
#net.ipv4.conf.all.accept_redirects = 0
#net.ipv6.conf.all.accept_redirects = 0
# _or_
# Accept ICMP redirects only for gateways listed in our default
# gateway list (enabled by default)
# net.ipv4.conf.all.secure_redirects = 1
#
# Do not send ICMP redirects (we are not a router)
#net.ipv4.conf.all.send_redirects = 0
#
# Do not accept IP source route packets (we are not a router)
#net.ipv4.conf.all.accept_source_route = 0
#net.ipv6.conf.all.accept_source_route = 0
#
# Log Martian Packets
#net.ipv4.conf.all.log_martians = 1
#

net.ipv4.conf.eth0.force_igmp_version = 2
net.ipv4.conf.eth0.mc_forwarding = 1
net.ipv4.conf.eth2.force_igmp_version = 2
net.ipv4.conf.eth2.mc_forwarding = 1

~# sysctl -a |grep -E 'mc_forwarding|force_igmp' |grep -E 'eth0|eth2'
error: permission denied on key 'vm.compact_memory'
error: permission denied on key 'dev.parport.parport0.autoprobe'
error: permission denied on key 'dev.parport.parport0.autoprobe0'
error: permission denied on key 'dev.parport.parport0.autoprobe1'
error: permission denied on key 'dev.parport.parport0.autoprobe2'
error: permission denied on key 'dev.parport.parport0.autoprobe3'
error: permission denied on key 'net.ipv4.route.flush'
error: permission denied on key 'net.ipv6.route.flush'
net.ipv4.conf.eth0.mc_forwarding = 0
net.ipv4.conf.eth0.force_igmp_version = 2
net.ipv4.conf.eth2.mc_forwarding = 0
net.ipv4.conf.eth2.force_igmp_version = 2
net.ipv6.conf.eth0.mc_forwarding = 0
net.ipv6.conf.eth2.mc_forwarding = 0
« Последнее редактирование: 15 Мая 2013, 12:05:21 от avuraltsev »

Оффлайн AnrDaemon

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 28511
    • Просмотр профиля
Re: Multicast в локальную сеть
« Ответ #5 : 15 Мая 2013, 12:11:06 »
net.ipv4.conf.all
Хотите получить помощь? Потрудитесь представить запрошенную информацию в полном объёме.

Прежде чем [Отправить], нажми [Просмотр] и прочти собственное сообщение. Сам-то понял, что написал?…

Оффлайн avuraltsev

  • Автор темы
  • Новичок
  • *
  • Сообщений: 36
    • Просмотр профиля
Re: Multicast в локальную сеть
« Ответ #6 : 15 Мая 2013, 12:33:29 »
net.ipv4.conf.all

Спасибо, использовал, результат не изменился...

Пользователь решил продолжить мысль 15 Мая 2013, 13:53:04:
Вроде все заработало, вечером опишу что и как сделал  :D
« Последнее редактирование: 15 Мая 2013, 13:53:04 от avuraltsev »

Оффлайн AnrDaemon

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 28511
    • Просмотр профиля
Re: Multicast в локальную сеть
« Ответ #7 : 15 Мая 2013, 13:56:18 »
Ждём-с.
Хотите получить помощь? Потрудитесь представить запрошенную информацию в полном объёме.

Прежде чем [Отправить], нажми [Просмотр] и прочти собственное сообщение. Сам-то понял, что написал?…

Оффлайн avuraltsev

  • Автор темы
  • Новичок
  • *
  • Сообщений: 36
    • Просмотр профиля
Re: Multicast в локальную сеть
« Ответ #8 : 15 Мая 2013, 15:54:08 »
В общем для работы ip tv за nat требуется всего лишь настройка iptables и igmpproxy

# /etc/igmpproxy.conf
##------------------------------------------------------
## Enable Quickleave mode (Sends Leave instantly)
## Эту строчку раскомментируют только в том случае,
## если внути всего лишь один клиент IP TV
##------------------------------------------------------
#quickleave

##------------------------------------------------------
## Configuration for eth2 (Upstream Interface)
## Здесь указаны параметры для публичного интерфейса,
## на который придет поток от провайдера
##------------------------------------------------------
phyint eth2 upstream ratelimit 0  threshold 1
        altnet 238.1.1.0/24
        altnet 10.99.63.0/24
##------------------------------------------------------
## Configuration for eth0 (Downstream Interface)
## Типовая конфигурация для внутреннего интерфейса
##------------------------------------------------------
phyint eth0 downstream ratelimit 0  threshold 1

После того как был просмотрен playlist было выяснено, что трансляция ведется с разных ip адресов, поэтому написал 238.1.1.0/24

10.99.63.0/24 - этот адрес я взял из системного лога:
igmpproxy[7318]: The source address 10.99.63.90 for group 238.1.1.109, is not in any valid net for upstream VIF.
igmpproxy[7318]: The source address 10.99.63.48 for group 238.1.1.221, is not in any valid net for upstream VIF.

в iptables добавил следующие правила:
iptables -t filter -A INPUT -d 224.0.0.0/240.0.0.0 -i eth0 -j ACCEPT
iptables -t filter -A INPUT -s 224.0.0.0/240.0.0.0 -i eth0 -j ACCEPT
iptables -t filter -A FORWARD -d 224.0.0.0/240.0.0.0 -j ACCEPT
iptables -t filter -A FORWARD -s 224.0.0.0/240.0.0.0 -j ACCEPT
iptables -t mangle -A PREROUTING -d 224.0.0.0/240.0.0.0 -p udp -j TTL --ttl-inc 1

затем добавляем igmpproxy в автозагрузку:

~# nano /etc/rc.local
/usr/local/sbin/igmpproxy /etc/igmpproxy.conf &
хождение multicast между интерфейсами включается автоматически, в /etc/sysctl.conf писать ничего не надо.
По крайней мере в моем случае не понадобилось писать ни какие маршруты (хоть я и пытался).
Напомню что мой провайдер ТТК (ЗАО "УралТрансТелеком")
Теперь встал вопрос о том как это tv смотреть на телевизоре, зомбоящик по имени Samsung SmartTV.
« Последнее редактирование: 15 Мая 2013, 15:57:43 от avuraltsev »

Оффлайн AnrDaemon

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 28511
    • Просмотр профиля
Re: Multicast в локальную сеть
« Ответ #9 : 16 Мая 2013, 01:53:30 »

в iptables добавил следующие правила:
iptables -t filter -A INPUT -d
iptables -t filter -A INPUT -s
iptables -t filter -A FORWARD -d
iptables -t filter -A FORWARD -s
Вам про модуль conntrack что-нибудь известно?


Цитировать
затем добавляем igmpproxy в автозагрузку:

~# nano /etc/rc.local
Ничего глупее придумать было нельзя. Это я вам как специалист по дурацким идеям говорю.
igmpproxy скорее всего уже установлен на автозагрузки сразу после установки. Даже если нет - ТАК это делать не надо. Есть upstart, есть init.d наконец. Почему вы не пользуетесь тем, что уже есть?
Хотите получить помощь? Потрудитесь представить запрошенную информацию в полном объёме.

Прежде чем [Отправить], нажми [Просмотр] и прочти собственное сообщение. Сам-то понял, что написал?…

Оффлайн avuraltsev

  • Автор темы
  • Новичок
  • *
  • Сообщений: 36
    • Просмотр профиля
Re: Multicast в локальную сеть
« Ответ #10 : 16 Мая 2013, 07:19:16 »
Вам про модуль conntrack что-нибудь известно?

Если честно, то нет...как то не задавался вопросом

Цитировать
Ничего глупее придумать было нельзя. Это я вам как специалист по дурацким идеям говорю.
igmpproxy скорее всего уже установлен на автозагрузки сразу после установки. Даже если нет - ТАК это делать не надо. Есть upstart, есть init.d наконец. Почему вы не пользуетесь тем, что уже есть?

Сегодня у меня работа над ошибками, спасибо за замечания

Удалил igmpproxy из rc.local, добавил в upstart, через webmin  :) tv работает, но в webmin статус не запущен...


Пользователь решил продолжить мысль 16 Мая 2013, 07:24:17:
Цитировать
conntrack используется именно для того, для чего предназначен - для установление факта отношения каждого отдельного пакета к тому или иному открытому соединению. И, конечно, для установления состояния этого соединения.

Пользователь решил продолжить мысль 16 Мая 2013, 08:08:09:
Еще интересует вопрос логов сетевых интерфейсов, они валятся в syslog, а можно направить в определенный файл?
« Последнее редактирование: 16 Мая 2013, 08:31:08 от avuraltsev »

Оффлайн AnrDaemon

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 28511
    • Просмотр профиля
Re: Multicast в локальную сеть
« Ответ #11 : 16 Мая 2013, 13:24:00 »
Webmin вообще не очень точно показывает статус сервисов.
Да, логи можно убрать в другой файл.
Установите пакет rsyslog, и настройте фильтрацию в отдельный файл.
Что-то типа этого:
/etc/rsyslog.d/05-iptables.conf
:msg, contains, "IPT-INPUT" -/var/log/iptables/input-dropped.log
& ~

:msg, contains, "IPT-FORWARD"   -/var/log/iptables/forward-dropped.log
& ~
Хотите получить помощь? Потрудитесь представить запрошенную информацию в полном объёме.

Прежде чем [Отправить], нажми [Просмотр] и прочти собственное сообщение. Сам-то понял, что написал?…

 

Страница сгенерирована за 0.021 секунд. Запросов: 22.