GNU/Linux >> Belajar Linux >  >> Linux

Cara mengirim paket multicast melalui antarmuka khusus di Linux

Saya tidak sepenuhnya yakin bahwa solusi saya benar, tetapi setidaknya saya dapat menjelaskan lebih banyak tentang apa yang sedang terjadi.

Latar Belakang

Linux sebenarnya memiliki beberapa tabel perutean, dan tabel tersebut dicari satu per satu dalam urutan prioritas tertentu hingga tabel dengan rute yang cocok ditemukan. Secara opsional, Anda dapat mencari beberapa tabel perutean berdasarkan alamat sumber atau protokol; lihat ip-rule(8) halaman manual.

Masalahnya adalah tabel perutean "lokal", yang memiliki prioritas 0, setinggi mungkin. Tabel "lokal" diisi secara otomatis oleh kernel dan menampung antarmuka "jelas" dan rute siaran. Untuk IPv6 di Linux, ini tampaknya mencakup seluruh blok multicast.

Masalahnya

Saya akan menggunakan iproute2 alat daripada route yang lebih tradisional , karena itu akan menunjukkan kepada saya semua yang perlu saya ketahui.

Di kotak Linux saya:

$ ip -6 route show table local
local ::1 via :: dev lo  proto none  metric 0 
local fe80::213:a9ff:fe91:5bcb via :: dev lo  proto none  metric 0 
local fe80::250:b6ff:fe44:37d1 via :: dev lo  proto none  metric 0 
ff00::/8 dev eth0  metric 256 
ff00::/8 dev eth1  metric 256

$ ip -6 route show table main
fe80::/64 dev eth0  proto kernel  metric 256 
fe80::/64 dev eth1  proto kernel  metric 256 
ff15::/16 dev eth1  metric 1024
ff00::/8 dev eth1  metric 1024 

$ ip -6 rule show
0:      from all lookup local 
32766:  from all lookup main 

... Dan paket multicast saya untuk ff15::1 (5==site-local,>link-local) berakhir di eth0, karena tabel perutean "lokal" cocok terlebih dahulu dan menimpa tabel "utama", meskipun tabel "utama" memiliki rute yang lebih spesifik. Perilaku penggantian ini benar dalam skema perutean kebijakan yang lebih besar, tetapi pilihan penambahan otomatis ff00::/8 ke tabel lokal patut dipertanyakan bagi saya.

Solusi Saya

Saya tidak memiliki cukup pengalaman untuk mengetahui apakah ini ide yang bagus, tetapi:

# ip -6 route add ff15::/16 dev eth1 table local

dan sekarang paket ff15::1 saya dialihkan melalui eth1.

Ini agak sesuai dengan semantik tabel lokal, karena dialihkan langsung melalui perangkat. Rasanya kurang pas (mengingat pengelolaan otomatis dan "Anda tidak perlu melihat tabel ini"), tetapi ini adalah solusi terbaik yang saya temukan.


Linux
  1. potong tabel melalui baris perintah di Linux

  2. Bagaimana cara menonaktifkan ipv6 pada antarmuka tertentu di linux?

  3. Cara mengatur dua rute default di linux

  1. Cara Membuat Berbagi Jaringan melalui Samba di Linux

  2. Bagaimana cara Mengirim Email melalui server SMTP Eksternal menggunakan perintah mailx di Linux?

  3. Cara mengatur antarmuka jaringan yang disukai di linux

  1. Cara mengkonfigurasi antarmuka jaringan virtual di Redhat 7 Linux

  2. Cara Menampilkan Tabel Perutean di Linux

  3. Linux:Bagaimana cara mengirim pesan ke pengguna lokal yang masuk ke X11?