Batasi lalu lintas keluar UDP ke loopback (localhost) alih-alih eth0

1

Atm saya mengujinya di Ubuntu Server di VMware Workstation + Windows 7 host lokal dengan koneksi yang dijembatani. Nanti ini harus pergi ke server hidup.

Saya punya file video streaming VLC di Ubuntu dengan

cvlc -vvv /home/user/file.avi --loop --sout '#rtp{access=udp,mux=ts,dst=239.1.1.1,port=32321,caching=10000}'

nanti aliran ini dipilih oleh udpxy sebagai

udpxy -a lo -m eth0 -p 7777 &

Pada dasarnya semuanya bekerja dengan baik tetapi penyedia hosting saya menghitung lalu lintas UDP sebagai keluar meskipun saya tidak membutuhkannya di mana pun di luar. Gagasan saya adalah memblokir lalu lintas keluar UDP multicast.

Saya sudah mencoba menggunakannya

route add -net 239.0.0.0/8 dev lo

lalu lintas terbatas (tidak dapat mengaksesnya di luar) tetapi

dumprtp 239.1.1.1 32321

pada server yang sama juga tidak bekerja.

Saya juga sudah mencoba membuat antarmuka loopback baru untuk alamat multicast di /etc/network/interfaces seperti ini

auto lo lo:udp
iface lo inet loopback

iface lo:udp inet static
    address 239.1.1.1
    netmask 255.0.0.0
    network 239.0.0.0

Saya hanya berusaha membuatnya bekerja, tetapi ternyata tidak.

Jadi pada dasarnya saya ingin lalu lintas multicast udp tetap di dalam server tanpa pergi ke jaringan eksterior. Dan itu harus multicast udp (stream juga dipilih oleh sistem penyimpanan dan tes kualitas streaming).

Terima kasih.

Johnatan
sumber
apakah Anda sudah melihat iptables ?
XyZZy
ya saya lakukan. Usaha saya adalah iptables -A OUTPUT -p udp -d 239.1.1.1 --dport 32321 -o eth0 -j DROP dan itu memblokir lalu lintas udp sepenuhnya. Termasuk di dalam server. Tidak dapat membacanya dengan dumprtp 239.1.1.1 32321
Johnatan
hmm, ya, itu aneh ... aturan itu seharusnya hanya memblokir paket yang menuju eth0. Mungkin UDP selalu melewati eth0, karena itu adalah alamat jaringan. Anda dapat mencoba membuat jaringan virtual dan mengirim paket udp ke jaringan itu. jadi jangan hanya membuat udp loopback, Anda harus membuat antarmuka lengkap baru dengan alamat IP-nya sendiri.
XyZZy
Itulah yang saya coba dengan membuat antarmuka baru untuk loopback. Mungkin saya salah? Apakah valid membuat antarmuka statis dengan alamat 239.1.1.1? Alamat itu dicadangkan untuk multicast saja. Tapi itu yang saya butuhkan untuk rute-kembali dari eth0.
Johnatan
1
Untung saya memutuskan untuk menindaklanjuti dan melihat apakah ada kegiatan. Petunjuk: Jika Anda "memberi tag" pada seseorang dengan sesuatu seperti @killermist, itu akan memberi tahu mereka bahwa mereka telah ditanggapi. Bagaimanapun, untuk bisnis. Ditembak dalam gelap, sudahkah Anda mempertimbangkan untuk menggunakan "dst = 127.0.0.1" (IP localhost resmi) alih-alih "dst = 239.1.1.1" dalam perintah cvlc?
killermist

Jawaban:

0

Solusinya adalah:

  1. Tambahkan opsi baru --miface=lo ke VLC: cvlc -vvv /home/user/file.avi --loop --sout '#rtp{access=udp,mux=ts,dst=239.1.1.1,port=32321,caching=10000}' --miface=lo
  2. Tambahkan rute ke lo untuk alamat multicast: route add -net 239.1.1.0 netmask 255.255.255.0 dev lo

    2a. Untuk membuat rute gigih kita harus menambahkannya /etc/network/interfaces dengan awalan up. Seperti ini: up route add -net 239.1.1.0 netmask 255.255.255.0 dev lo

Itu dia. Sekarang VLC mengalir ke lo antarmuka dan bukan untuk eth0. Juga setiap aplikasi yang ingin berlangganan 239.1.1.1 - 239.1.1.254 akan melakukannya lo antarmuka.

Semoga ini bisa membantu seseorang menyelesaikan masalah streaming.

Johnatan
sumber