ターゲット:
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に細心の注意を払ってください。マルチキャストに関するよくある質問最後に。
答え2
まあ、それは次のようになりますiptables
ホロこれは行く道ではありません。
Ubuntuリポジトリから試したりsmcroute
ダウンロードしたりします。pimd
これまで、私はこれらのどれも機能させませんでした。
smcrouteを使用してください:
iptables
-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 -p igmp -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 PREROUTING -d 239.255.100.100/32 -j TTL --ttl-set 64
smcroute 2.3.1穴居人から。
次に抽出/opt
./configure
デフォルトのオプションを使用してください。
構成ファイルは次の場所にあります。
/usr/local/etc/smcroute.conf
#phyint olan1 enable ttl-threshold 1
phyint olan1 enable ttl-threshold 5
phyint slan1 enable ttl-threshold 5
mgroup from olan1 group 239.255.100.100
mgroup from slan1 group 239.255.100.100
mroute from olan1 group 239.255.100.100 to slan1
mroute from slan1 group 239.255.100.100 to olan
- ttl-threshold - これは最小しきい値ですか?
- 私のパケットのTTLが1の場合、phyintはそれを無視するという意味ですか?もしかして5に変えました。
sudo smcrouted
sudo smcroutectl show groups
GROUP (S,G) INBOUND
(*, 239.255.100.100) slan1
(*, 239.255.100.100) olan1
sudo smcroutectl show routs
ROUTE (S,G) INBOUND PACKETS BYTES OUTBOUND
(*, 239.255.100.100) slan1 0 0 olan1
(*, 239.255.100.100) olan1 0 0 slan1
(10.10.10.154, 239.255.100.100) slan1 2 344 olan1
(192.168.2.53, 239.255.255.250) olan1 4 776
(10.10.10.101, 239.255.100.100) slan1 1 32 olan1
(192.168.2.101, 239.255.100.100) olan1 1 32 slan1
(10.10.10.1, 239.255.100.100) slan1 2 64 olan1
まさにみんなではありません...
WinXPマルチホームコンピュータでは、ルーティングを変更する必要があります。
route add 224.0.0.0 mask 240.0.0.0 10.10.10.153
ネットワークカードのIPアドレスの代わりにインターフェイス番号を使用する必要があります...
- インジケーターが1になります。 TTLの問題ですか...
sudo smcroutectl show routs
ROUTE (S,G) INBOUND PACKETS BYTES OUTBOUND
(*, 239.255.100.100) slan1 0 0 olan1
(*, 239.255.100.100) olan1 0 0 slan1
(192.168.2.53, 239.255.255.250) olan1 4 776
(10.10.10.153, 239.255.100.100) slan1 1 32 olan1
LAN Messenger 1.2.32 network preferences
- 接続タイムアウト(秒) - 最大出力値
- 最大再試行回数 - 最大出力値
Upstartを使用してUbuntu 14でsmcrouteをデーモンに設定する
/etc/init/smcroute.conf
# Upstart for custom compiled smcroute
## jc 2017 08 24
description "SMCRoute, a static multicast router"
author "jc"
# Stanzas
# Stanzas control when and how a process is started and stopped
# See a list of stanzas here: http://upstart.ubuntu.com/wiki/Stanzas#respawn
# When to start the service
# start on runlevel [2345]
start on (local-filesystems and net-device-up IFACE!=lo) or runlevel [2345]
# When to stop the service
#stop on runlevel [016]
stop on runlevel [!2345]
# Automatically restart process if crashed
expect fork
respawn
exec /usr/local/sbin/smcrouted -N -f /usr/local/etc/smcroute.conf -d 10 -l notice
すべてがうまくいくようです。ランダムな再起動、断続的なネットワークの中断、通常のタスクなど、しばらくの間タスクを実行します。
太陽
smcrouteをデーモンにする継続的なルートの作成- iptablesルールの確認...が必要です。
Win7コンピュータでサブネットを表示できるようにする