Задать вопрос
  • Как корректно пробросить rtsp поток через iptables?

    @zh2s Автор вопроса
    Andrey Barbolin, добрый день

    Вывод команды:
    sudo sysctl -p
    net.ipv4.ip_forward = 1

    cat /proc/sys/net/ipv4/ip_forward
    1


    Внес предложенные вами поправки в iptables. Текущая итерация выглядит вот так
    # Generated by iptables-save v1.8.7 on Sun Aug 21 12:29:28 2022
    *filter
    :INPUT ACCEPT [0:0]
    :FORWARD DROP [377:22912]
    :OUTPUT ACCEPT [0:0]
    :DOCKER - [0:0]
    :DOCKER-ISOLATION-STAGE-1 - [0:0]
    :DOCKER-ISOLATION-STAGE-2 - [0:0]
    :DOCKER-USER - [0:0]
    -A INPUT -p tcp -m tcp --dport 554 -j ACCEPT
    -A INPUT -p udp -m udp --dport 554 -j ACCEPT
    -A FORWARD -m state --state RELATED,ESTABLISHED -j ACCEPT
    -A FORWARD -d 192.168.1.21/32 -p tcp -m tcp --dport 554 -j ACCEPT
    -A FORWARD -d 192.168.1.21/32 -p udp -m udp --dport 554 -j ACCEPT
    COMMIT
    # Completed on Sun Aug 21 12:29:28 2022
    # Generated by iptables-save v1.8.7 on Sun Aug 21 12:29:28 2022
    *nat
    :PREROUTING ACCEPT [0:0]
    :INPUT ACCEPT [0:0]
    :OUTPUT ACCEPT [0:0]
    :POSTROUTING ACCEPT [0:0]
    :DOCKER - [0:0]
    -A POSTROUTING -d 192.168.1.21/32 -p tcp -m tcp --dport 554 -j SNAT --to-source 192.168.1.190
    -A POSTROUTING -d 192.168.1.21/32 -p udp -m udp --dport 554 -j SNAT --to-source 192.168.1.190
    
    COMMIT


    Попробовал запустить утилиту ffmpeg с компа в той же локальной сети, по-прежнему не могу достучаться до камеры через малинку. И если раньше ffmpeg выдавал ошибку Operation timed out, то сейчас Connection refused

    ffmpeg -rtsp_transport tcp -i rtsp://admin:123456@192.168.1.190:554/0
    ffmpeg version 4.3.1-tessus  https://evermeet.cx/ffmpeg/  Copyright (c) 2000-2020 the FFmpeg developers
      built with Apple clang version 11.0.0 (clang-1100.0.33.17)
      configuration: --cc=/usr/bin/clang --prefix=/opt/ffmpeg --extra-version=tessus --enable-avisynth --enable-fontconfig --enable-gpl --enable-libaom --enable-libass --enable-libbluray --enable-libdav1d --enable-libfreetype --enable-libgsm --enable-libmodplug --enable-libmp3lame --enable-libmysofa --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libopenh264 --enable-libopenjpeg --enable-libopus --enable-librubberband --enable-libshine --enable-libsnappy --enable-libsoxr --enable-libspeex --enable-libtheora --enable-libtwolame --enable-libvidstab --enable-libvmaf --enable-libvo-amrwbenc --enable-libvorbis --enable-libvpx --enable-libwavpack --enable-libwebp --enable-libx264 --enable-libx265 --enable-libxavs --enable-libxvid --enable-libzimg --enable-libzmq --enable-libzvbi --enable-version3 --pkg-config-flags=--static --disable-ffplay
      libavutil      56. 51.100 / 56. 51.100
      libavcodec     58. 91.100 / 58. 91.100
      libavformat    58. 45.100 / 58. 45.100
      libavdevice    58. 10.100 / 58. 10.100
      libavfilter     7. 85.100 /  7. 85.100
      libswscale      5.  7.100 /  5.  7.100
      libswresample   3.  7.100 /  3.  7.100
      libpostproc    55.  7.100 / 55.  7.100
    [tcp @ 0x7fd911804f40] Connection to tcp://192.168.1.190:554?timeout=0 failed: Connection refused
    rtsp://admin:123456@192.168.1.190:554/0: Connection refused


    Подозреваю, что правила PREROUTING в iptables все же нужны