Benim kurulumda çok noktaya yayın TX trafiği iptables tarafından işaretlendi, ancak yeni yönlendirme tablolarını kullanarak politika yönlendirme hiç işe yaramadı. Tek noktaya yayın TX paketleri için çalışmasına rağmen (başlangıç paketlerini eth0'dan eth5'e yönlendirme). Tc kullanarak eth5 için eth0 mcast trafiği alabilirim src mac ve src ip adresi eth5 t değiştirilir, bu yüzden anahtar öğrenmeleri ile ilgili sorunlar oluşturmaz. CONFIG_NET_SCHED çekirdek paketi zamanlaması için tüm çekirdek desteği etkinleştirilmelidir
Eth0'dan eth5'e yönlendiren tek noktaya yayın ve çok noktaya yayın trafiği için ÇALIŞMALAR altında
Netfilter, çekirdekteki bir paketi temsil eden yapı ile doğrudan etkileşime girmek için kullanılabilir. Bu yapı, sk_buff, değiştireceğimiz “__u32 nfmark” adlı bir alan içeriyor. TC daha sonra bir paketin hedef sınıfını seçmek için bu değeri okuyacaktır.
IP_ADDR_ETH0 = ifconfig eth0 | grep 'inet addr'| cut -d ':' -f 2 | cut -d ' ' -f 1 | tr -d '\n'
iptables -t mangle -A ÇIKIŞ -s $ {IP_ADDR_ETH0} -p udp --match multiport --dports 329.330 -o eth0 -j MARK - set-mark 2
Zamanlama politikamızı temsil eden ve PRIO qdisc (paket zamanlayıcı) kullanan bir ağaç oluşturacak (diğer mevcut olanları deneyebilir). qdiscs bir cihazın köküne takılıyor
tc qdisc dev eth0 kök kolu 15 ekleyin: prio
Şimdi bir tarafta trafik şekillendirme politikası, diğer tarafta paket işaretlemesi var. İkisini bağlamak için bir filtreye ihtiyacımız var.
bkz. man tc-mirred (8): Yansıtılan eylem, paketin aynalanmasına (kopyalanmasına) veya aldığı paketin yeniden yönlendirilmesine (çalınmasına) izin verir. Aynalama, bazen Anahtar Bağlantı Noktası Analizörü (SPAN) olarak adlandırılır ve akışları analiz etmek ve / veya hata ayıklamak için yaygın olarak kullanılır.
bkz. man tc-fw (8): fw - fwmark trafik kontrol filtresi fw filtresi, paketleri önceden ayarlanmış bir fwmark'a göre iptables ile sınıflandırmaya izin verir. Filtrenin 'tutamacı' ile aynıysa, filtre eşleşir. iptables, tek paketleri MARK hedefi veya CONNMARK kullanarak tüm bağlantıları işaretlemenizi sağlar.
MAC_ADDR_ETH1 = cat /sys/class/net/eth1/address
IP_ADDR_ETH1 = ifconfig eth1 | grep 'inet addr'| cut -d ':' -f 2 | cut -d ' ' -f 1 | tr -d '\n'
tc filtresi dev et0 üst öğe ekle 15: 0 protokol ip prio 1 tanıtıcı 0x2 fw eylem pedit ex munge eth src $ $ {MAC_ADDR_ETH1} boru \ eylem pedit ex munge ip src set $ {IP_ADDR_ETH1} boru \ eylem yansıtılmış çıkış yönlendirmesi dev eth1
yukarıdaki kuralları göster: tc qdisc show dev eth0 tc filtre show dev eth0
ayarlanan kuralların yukarısındaki sil / unset: tc qdisc del dev eth0 root