ターゲット:
lmcが必要「ランメッセンジャー」iptablesを使用して、Linuxゲートウェイに分離された2つのLANで作業します。
情報:
- 「LANメッセンジャー」プログラムでなければなりません。
- Lmcはマルチキャストアドレス239.255.100.100:50000を使用してユーザーを確認し、チャット用のTCP接続を作成します。
- lan1 = olan1 = 192.168.2.0/24: ゲートウェイはスマートスイッチ「Linksys Etherfast Router」で、フィルタマルチキャストは無効になります。
- lan2 = slan1 = 10.10.10.0/24: ゲートウェイは Linux ボックスです。
- ゲートウェイPC = Ubuntu 14サーバー。 iptablesはLAN間でいくつかのトラフィックを転送します。
IPtableルール:
フィルタテーブル:
-P INPUT ACCEPT
-P FORWARD ACCEPT
-P OUTPUT ACCEPT
-A INPUT -i lo -j ACCEPT
-A FORWARD -i slan1 -o olan1 -j ACCEPT
-A FORWARD -m state --state RELATED,ESTABLISHED -j ACCEPT
-A FORWARD -m iprange --src-range 192.168.2.100-192.168.2.254 -j ACCEPT
-A FORWARD -i olan1 -o slan1 -p tcp -m tcp --dport 22 -m conntrack --ctstate NEW -j ACCEPT
-A FORWARD -i olan1 -o slan1 -p tcp -m tcp --dport 9696 -m conntrack --ctstate NEW -j ACCEPT
-A FORWARD -i olan1 -o slan1 -p tcp -m tcp --dport 50000 -m conntrack --ctstate NEW -j ACCEPT
-A FORWARD -i olan1 -o slan1 -p udp -m udp --dport 50000 -m conntrack --ctstate NEW -j ACCEPT
-A FORWARD -s 224.0.0.0/4 -d 224.0.0.0/4 -j ACCEPT
-A FORWARD -p icmp -j ACCEPT
-A FORWARD -p igmp -j ACCEPT
-A FORWARD -i olan1 -o slan1 -j DROP
NATテーブル:
-P PREROUTING ACCEPT
-P INPUT ACCEPT
-P OUTPUT ACCEPT
-P POSTROUTING ACCEPT
-A POSTROUTING -j MASQUERAD
私の考えにマルチキャストトラフィックを転送する必要がある規則は次のとおりです。
-A FORWARD -i olan1 -o slan1 -p tcp -m tcp --dport 50000 -m conntrack --ctstate NEW -j ACCEPT
-A FORWARD -i olan1 -o slan1 -p udp -m udp --dport 50000 -m conntrack --ctstate NEW -j ACCEPT
-A FORWARD -s 224.0.0.0/4 -d 224.0.0.0/4 -j ACCEPT
-A FORWARD -p igmp -j ACCEPT
tcpdumpを使用してゲートウェイへのトラフィックを監視する場合、iptableルールを変更してもマルチキャストトラフィックはまったく表示されません。
iptablesはマルチキャストトラフィックを転送しますか?わかりますか?
pimd
マルチキャストルーティングデーモンまたはプロキシ(たとえば、または)を使用する必要がありますかsmcroute
?
ベストアンサー1
smcroute
2つのネットワークネームスペースと2つのペアを使用してテストveth
しました。設定:
ns1 <-- main namespace --> ns2
10.0.0.1 -- 10.0.0.254 10.0.1.254 -- 10.0.1.1
veth0b veth0a veth1a veth1b
Debiansmcroute
パッケージはバージョン2.0.0で、仮想ethをサポートしていないようで、次からバージョン2.3.1をインストールしました。smcrouteホームページ。これマルチキャストルーティングガイドまた、非常に役立ちますsmcroute
。
私はこのssmping
パッケージを使ってマルチキャストをテストします。 ns1からpingを送信ssmpingd
中にns2で実行されています。ssmping -4 -I veth0b 10.0.1.1
これはグループを使用するソース固有のマルチキャスト(SSM)であり、232.43.211.234
ASM(すべてのソースマルチキャスト)をテストするためにも使用できますasmping
。 LANメッセンジャーが何を使用しているのかわかりません。
ユニキャスト ping 要求を許可するために、デフォルトの名前空間で転送を有効にしてから実行しました。
smcroutectl add veth1a 10.0.1.1 232.43.211.234 veth0a
みんな大丈夫です。smcroutectl join
スイッチがマルチキャストを正しく配信する必要があることをスイッチに通知する必要があるかもしれませんが、設定に合わせて調整すると機能することが期待されます。すべての関連インターフェイスのマルチターミナルウィンドウは、tcpdump
デバッグに非常に役立ちます。
次の情報が面白かったです。
マルチキャストパスを設定するには、プログラムをカーネルのマルチキャストルーティングソケットに接続する必要があり、ソケットが閉じると(UNIXプログラムが終了すると自動的に実行されます)、カーネルはすべてのパスを消去します。
これは、カーネルのマルチキャストルーティング機能を使用する場合〜しなければならないコマンドラインツールの代わりに悪魔を使用してください。
静的ルーティングと動的ルーティングの場合は、次のことを意味します。
smcrouteの目的は、ダイナミックマルチキャストルーティングが正しく機能しない状況を支援することです。ただし、ダイナミックマルチキャストルーティングプロトコルは、ほとんどすべての場合に好ましいソリューションです。その理由は、レイヤ3信号をレイヤ2信号に変換したり、その逆に変換したりすることができるためです(IGMPまたはMLD)。
最後に、LANメッセンジャーによって生成されたTTLに細心の注意を払ってください。マルチキャストに関するよくある質問最後に。