IPTV и 1001 порт

Доброго дня!

Столкнулся с проблемой - провайдер ведёт вещание ip-tv частично по 1001 порту, работа с которым запрещена всем пользователям, кроме root'а.
Правило

iptables -A PREROUTING -i eth2 -p udp -m udp --dport 1001 -j DNAT --to-destination 127.0.0.1:1233

толку особого не дало, хотя по идее всё, что идёт на 1001, перенаправляется на 1233 на этом же хосте, но VLC и иже с ним работать всё равно не хотят.

Подскажите, что можно сделать в данной ситуации? Как разрешить работу с 1001 сокетом простым пользователям или как настроить iptables?

Пользователям нельзя

Пользователям нельзя создавать сокеты на порты 1-1024, про то, что подключаться к ним нельзя - ни слова. Ничего сверхъестественного делать не надо, все должно работать сразу как есть.

Не грусти, товарищ! Всё хорошо, beautiful good!

winterheart

winterheart написал(а):
Пользователям нельзя создавать сокеты на порты 1-1024, про то, что подключаться к ним нельзя - ни слова. Ничего сверхъестественного делать не надо, все должно работать сразу как есть.

Вот Вы странный - если бы всё нормально работало и не надо было бы делать ничего сверхестественного, я бы ничего и не делал и не спрашивал:)
Однако от рута всё запускается нормально, а от пользователя, который находится в

wheel cron audio cdrom video cdrw usb users vboxusers crontab samba vmware nx

мы получаем следующее:

...
0x2a3dbe0] access_udp access error: cannot open socket
[0x2579a70] main input error: open of `udp://@233.34.28.3:1001' failed: (null)
[0x7faae8001e10] main access error: socket bind error (Permission denied)
[0x7faae8001e10] access_udp access error: cannot open socket
[0x2a00e20] main input error: open of `udp://@233.34.28.4:1001' failed: (null)
[0x2a00e20] main access error: socket bind error (Permission denied)
[0x2a00e20] access_udp access error: cannot open socket
[0x29d3220] main input error: open of `udp://@233.34.28.5:1001' failed: (null)
[0x27322a0] main access error: socket bind error (Permission denied)
[0x27322a0] access_udp access error: cannot open socket
[0x2a2a6a0] main input error: open of `udp://@233.34.28.6:1001' failed: (null)
[0x26cc110] main access error: socket bind error (Permission denied)
[0x26cc110] access_udp access error: cannot open socket
[0x7faae8005ef0] main input error: open of `udp://@233.34.28.30:1001' failed: (null) 
...

...ну и далее по плей-листу, пока не найдёт чего-то с портом выше 1024, который и начинает успешно показывать.

233.34.28.4 - твой IP? Что за

233.34.28.4 - твой IP? Что за программа?

Не грусти, товарищ! Всё хорошо, beautiful good!

Это логи от VLC 1.1.13,

Это логи от VLC 1.1.13, запущеного через vlc-wrapper, собранного со след флагами:
[ebuild R ] media-video/vlc-1.1.13 USE="X a52 aac alsa cdda cddb dbus dirac dts dvd ffmpeg flac fontconfig gcrypt gnutls id3tag kde libnotify libv4l libv4l2 live matroska mmx mp3 mpeg mtp ncurses nsplugin ogg opengl png qt4 rtsp samba schroedinger sdl shine sse stream svg truetype twolame udev v4l vorbis wma-fixed x264 xcb xml xv -aalib (-altivec) -atmo -avahi -bidi -dc1394 -debug -directfb -dvb -fbcon -fluidsynth -ggi -gme -gnome -httpd -ieee1394 -jack -kate -libass -libcaca -libproxy -libtiger -lirc -lua -modplug -musepack -optimisememory -oss -projectm -pulseaudio -pvr -remoteosd -run-as-root -sdl-image -shout -skins -speex -sqlite (-svga) -taglib -theora -upnp -vaapi -vcdx -vlm (-win32codecs) -xosd -zvbi"
mplayer ведёт себя аналогично.
233.34.28.* - адреса вещателей, те которые не с 1001 портом из этой же подсети кажутся нормально.

Как запускаешь приложение?

Как запускаешь приложение?

Не грусти, товарищ! Всё хорошо, beautiful good!

lexx@Odin ~ $ vlc или из

lexx@Odin ~ $ vlc или из К-меню кедов - результат аналогичный.

_lexx_ написал(а): ...Однако

_lexx_ написал(а):
...Однако от рута всё запускается нормально, а от пользователя...

Возможно при запуске используются разные конфиги, root использует одни, пользователи другие.
Или я чего-то не догнал, и вы пытаетесь от имени пользователя "Васи" запустить процесс и повесить его на 1001 порт?

Я типичный русский колхозник.
Долго запрягаю, быстро езжу и сильно торможу...

Нет, я запускаю проигрыватели

Нет, я запускаю проигрыватели из сеанса простого пользователя, чтобы посмотреть ip-tv, но каналы, которые передаются через 1001 порт простым пользователем не показываются, а выдают ошибку доступа к сокету.

Конфиги - даже одинаково-дефолтные у рута и пользователя дают тот же эффект: у рута кажет, пользователю - фиг.

Хорошо, я правильно все понял

Хорошо, я правильно все понял :-)
В данном случае проигрыватели, которые вы запускаете от простого usera хотят слушать 1001 порт, то есть фактически реализуют функцию сервера. Система их естественно отфутболивает, с выдачей соответствующих матов в лог. Ваша попытка воспользоваться iptables выглядит весьма разумно, но неясно почему не сработала. Можно взглянуть на:

root# iptables -S

И еще, почему используется PREROUTING а не INPUT?

Я типичный русский колхозник.
Долго запрягаю, быстро езжу и сильно торможу...

Так, то ли лыжи не едут, то

Так, то ли лыжи не едут, то ли одно из двух.

Odin ~ # iptables -t nat -A PREROUTING -i eth2 -p udp -m udp --dport 1001 -j DNAT --to-destination 127.0.0.1:1233
Odin ~ # /etc/init.d/iptables start
 * Loading iptables state and starting firewall ...                       [ ok ]
Odin ~ # iptables -S
-P INPUT ACCEPT
-P FORWARD ACCEPT
-P OUTPUT ACCEPT

А если попробовать сделать

А если попробовать сделать так:

Odin ~ # /etc/init.d/iptables start
 * Loading iptables state and starting firewall ...                       [ ok ]
Odin ~ # iptables -t nat -A PREROUTING -i eth2 -p udp -m udp --dport 1001 -j DNAT --to-destination 127.0.0.1:1233
Odin ~ # iptables -S

:-)

Я типичный русский колхозник.
Долго запрягаю, быстро езжу и сильно торможу...

аналогично, лыжи снова не

аналогично, лыжи снова не едут:), хотя

Odin ~ # cat /var/lib/iptables/rules-save  | grep 1001
[0:0] -A PREROUTING -i eth2 -p udp -m udp --dport 1001 -j DNAT --to-destination 127.0.0.1:1233

наличествует.

Теперь скажите, а iptables

Теперь скажите, а iptables вообще-то у вас работает? Может в ядре чего не хватает?

Я типичный русский колхозник.
Долго запрягаю, быстро езжу и сильно торможу...

Прадонте, туплю. Odin ~ #

Прадонте, туплю.

Odin ~ # iptables -t nat -S
-P PREROUTING ACCEPT
-P INPUT ACCEPT
-P OUTPUT ACCEPT
-P POSTROUTING ACCEPT
-A PREROUTING -i eth2 -p udp -m udp --dport 1001 -j DNAT --to-destination 127.0.0.1:1233
-A POSTROUTING -o eth2 -j MASQUERADE

Маскарад висит для запущеного тут же pptpd, мешать по идее не должен.

В правилах iptables я не

В правилах iptables я не знаток, но вот нашел у себя в "библиотеке", может что прояснит:

Пример: "Редирект по портам"
Допустим Вам нужно переадресовать с одного порта на другой, к примеру вы хотите сделать редирект с 80 порта на 8080:
*nat
-I PREROUTING -d 10.1.0.20 -p tcp --dport 80 -J DNAT --to-destination 10.1.0.20:8080
-I POSTROUTING -s 10.1.0.20 -o eth0 -p tcp -j SNAT --to-source 10.1.0.20:8080
COMMIT
      где 10.1.0.20 ip-адрес web-сервера.

Или просто редирект с одного порта на другой.
*nat
-A PREROUTING -i eth1 -p tcp --dport 80 -j REDIRECT --to-port 3128

Я типичный русский колхозник.
Долго запрягаю, быстро езжу и сильно торможу...

Не стал ждать пока Вы у себя

Не стал ждать пока Вы у себя проверите, собрал у себя маленький тестовый стенд из двух ноутов. С одного посылаю тестовые данные другому на порт 1001:

$ newlisp
newLISP v.10.4.0 64-bit on Linux IPv4/6 UTF-8, execute 'newlisp -h' for more info.

>(net-send-udp "192.168.0.134" 1001 "Test port REDIRECT")
18
>

На втором ноуте iptables настроен так:

root# iptables -S
-P INPUT DROP
-P FORWARD DROP
-P OUTPUT ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
-A INPUT -s 192.168.0.0/24 -j ACCEPT
root# iptables -t nat -S
-P PREROUTING ACCEPT
-P INPUT ACCEPT
-P OUTPUT ACCEPT
-P POSTROUTING ACCEPT
-A PREROUTING -i wlan0 -p udp -m udp --dport 1001 -j REDIRECT --to-ports 10001

То есть должен быть редирект с порта 1001 всех udp данных, на порт 10001.
Начинаю слушать порт 10001:

$ newlisp
newLISP v.10.4.0 64-bit on Linux IPv4/6 UTF-8, execute 'newlisp -h' for more info.

> (net-receive-udp 10001 20)
("Test port REDIRECT" "192.168.0.140" 35043)
> 

Все замечательно, редирект сработал, посылка на 10001 порту поймана :-)

Я типичный русский колхозник.
Долго запрягаю, быстро езжу и сильно торможу...

Делаю аналогично, даже порт

Делаю аналогично, даже порт на 10001 для достоверности:

lexx@Odin ~ $ sudo iptables -t nat -S
-P PREROUTING ACCEPT
-P INPUT ACCEPT
-P OUTPUT ACCEPT
-P POSTROUTING ACCEPT
-A PREROUTING -i eth2 -p udp -m udp --dport 1001 -j REDIRECT --to-ports 10001
-A POSTROUTING -o eth2 -j MASQUERADE

Правлю порт источников, но плеер на все эти каналы отвечает

main stream error: cannot pre fill buffer

т.е. просто ничего не получает с истоника.
Смотрим tcpdump'ом

12:15:24.912270 IP 192.168.90.22.37266 > 233.34.28.1.1001: UDP, length 1316
12:15:24.914419 IP 192.168.90.22.37266 > 233.34.28.1.1001: UDP, length 1316
12:15:24.917286 IP 192.168.90.22.37266 > 233.34.28.1.1001: UDP, length 1316
12:15:24.920177 IP 192.168.90.22.37266 > 233.34.28.1.1001: UDP, length 1316
...

Т.е. с движуха по 1001 порту есть, но если сделать по 10001 порту - тишина

lexx@Odin ~ $ sudo tcpdump -i eth2 | grep 10001
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on eth2, link-type EN10MB (Ethernet), capture size 68 bytes
^C
17092 packets captured
170869 packets received by filter
137393 packets dropped by kernel

В чём ещё может быть засада, что при аналогичных исходных данных - разный результат?

Дальше я могу только

Дальше я могу только предложить, для достоверности, убрать маскарадинг из правил и посмотреть что получится. Потом можно взглянуть конфиги ядра, и убедится, что все необходимое включено, например как указанно здесь. Да, может это важное, когда я ставил эксперимент мне пришлось добавить вот такое правило:

-A INPUT -s 192.168.0.0/24 -j ACCEPT

Иначе редирект не работал.

Я типичный русский колхозник.
Долго запрягаю, быстро езжу и сильно торможу...

Что слушает VLC?

Извините, может я и не прав, но после переброса портов плееру (vlc) нужно указать порт куда вы перебросили поток. Не заметил в обсуждении повторного запуска vlc с изменёнными параметрами.

Palmer написал(а): Извините,

Palmer написал(а):
Извините, может я и не прав, но после переброса портов плееру (vlc) нужно указать порт куда вы перебросили поток. Не заметил в обсуждении повторного запуска vlc с изменёнными параметрами.

Ну это само собой разумеется - толку перебрасывать порты и слушать старые?:)

Идея мультикаста в том что

Идея мультикаста в том что пакет просто летит в сеть на определённый адрес и порт в строго определённой подсети (224.0.0.0/4). И здесь "клиент" чтобы принимать поток должен создать у себя listen-сокет, а сервер будет лить на него траф. Подробнее читайте на википедии и/или в соответствующей литературе.

У топик-стартера проблема в том что он должен создавать listen-сокет на порту 1001/udp, что может делать только привилегированный пользователь (root).

Вариант тут каике:
1. Пускать плеер от рута (например через sudo или op)
2. Разобраться с перекидыванием пакета на непривилегированный порт. И вот у меня к сожалению нет возможности поставить эксперимент, но ИМХО редиректить надо не на 127.0.0.1 а на адрес из 224.0.0.0/4 и уже на нём создавать listen-сокет. И тогда КМК всё должно получиться.

т.е. что-то в духе iptables

т.е. что-то в духе

iptables -t nat -I PREROUTING -i eth2 -p udp -d 224.0.0.0/4 --dport 1001 -j REDIRECT --to-port 1233
iptables -I INPUT -d 224.0.0.0/4 -i eth2 -p udp -m state --state NEW -j ACCEPT
iptables -I INPUT -d 224.0.0.0/4 -i eth2 -p igmp -m state --state NEW -j ACCEPT

да?

да:)

да:)

Специально для всех

Специально для всех участников хочу задать 1 вопрос и дать 1 разяснение
Вопрос к автору топика: по какому протоколу происходит управление потоком ?
udp таком не яеляется по определению

Пояснения - в апстолах нет трекинга rtmp, rtsp, etc ...

P.S в апстримных дистрах я бы на раз решил это рестримом на стрим сервере или проксиком. В генте ничего подобного не обнаружил - только какие то ошметки в виде live555, openRTSP и rtmpdump

Compute:
Bosch M2.8.1 -> custom Bosch M2.8.3 clone from Russia.
Speed about 260 km,Ram 2 pers.,HDD - 70 kg,210 FLOPS ;)

Настройки просмотра комментариев

Выберите нужный метод показа комментариев и нажмите "Сохранить установки".