1

OLSR を実行しているルーターには、接続されたデバイスが相互に OLSR を通信する 4 つのポート/インターフェイスがあります。今では、各インターフェイスに IP アドレスを使用するのではなく、すべてをブリッジして、ブリッジに 1 つの IP アドレスのみを設定するようにしています。

問題は、これらのデバイスがレイヤー 2 でお互いを認識しないことです。そうしないと、olsr ルーティングが間違った方法で変更されます (ブリッジが原因で)。これらのデバイスは、OLSR のみによってレイヤー 3 にルーティングする必要があります。わかりましたので、ebtables を使用するオプションがあります...

私はすでにこの投稿を読みましたが、探しているものとはまったく異なります。だから私は、接続されたすべてのデバイスがレイヤー2でお互いを見ることを拒否しながら、接続された各デバイスがルーターにOLSRを話すことを許可する方法を理解しようとしています。

# deny talking to each other
ebtables -P FORWARD DROP
ebtables -F FORWARD

うまく機能しますが、ルーター自体は接続されたデバイスを認識しないため、インターフェイスがルーター自体と通信できるようにする必要があると思います。

# allow port eth1
ebtables -F FORWARD -i eth1 -j ACCEPT
ebtables -F FORWARD -o eth1 -j ACCEPT

しかし、これはあまりにも多くのことを許可します。結果は、ポリシーを受け入れるように設定し直すのと同じです。

これを正しく機能させるには、ebtables ルールをどのように設定すればよいですか?

4

2 に答える 2

1

あるデバイスが別のデバイスと通信する場合、送信側デバイスはレイヤー 3 の宛先アドレスを調べます。それで:

  • 宛先レイヤー 3 アドレスが送信側デバイスと同じネットワーク内にある場合、デバイスは ARP キャッシュを調べて (キャッシュ内にない場合はレイヤー 2 ブロードキャストである ARP を送信します)、レイヤーを決定します。レイヤ 3 パケットをレイヤ 2 フレームにカプセル化できるように、宛先デバイスの 2(MAC)アドレス。その後、レイヤ 2 フレームがインターフェイスに送信されます。
  • 宛先レイヤー 3 アドレスが別のネットワークにある場合、送信側デバイスはゲートウェイのレイヤー 2 (MAC) アドレスを宛先レイヤー 2 アドレスとして使用します。ゲートウェイ (ルーター) は、レイヤー 3 パケットからレイヤー 2 フレームを破棄し、それを別のインターフェイスにルーティングし、プロセスを繰り返して新しいレイヤー 2 アドレスを取得し、レイヤー 3 パケットを新しいレイヤー 2 にカプセル化します。フレームをインターフェイスから送信する前に。

インターフェイス間のレイヤー 2 をブロックするという要件に基づいて、別のインターフェイス上のデバイスと同じネットワーク内の 1 つのインターフェイス上のデバイスは、レイヤー 2 経由で接続できないため、他のデバイスに接続することはできません。

指定されたパブリック アドレス範囲を使用する必要がある場合は、その範囲を 4 つの /31 サブネットにサブネット化できます。これにより、各リンクに 2 つの IP アドレスが与えられ、各リンクは異なるネットワーク内にあります。レイヤー 3 境界 (ルーター) は、インターフェイス間のレイヤー 2 をブロックします。残りはルーティングが処理し​​ます。

これを本当に理解する必要があります。それは非常に基本的なネットワーキングです。これを誤解しないでください。ただし、適切なスキルを持つ人を 1 時間または 1 日雇って、ネットワークをセットアップする必要があるように思われます。

于 2015-09-17T00:01:32.560 に答える
0

すべてのポートをブリッジ br0 に配置するのと同じくらい簡単です。

ebtables -P FORWARD DROP
ip link set br0 promisc on

(ubnt エッジルーターで期待どおりに動作しますが、以前に Linux ボックスでもテストされているため、そこでも動作するはずです)

于 2015-09-21T21:34:53.290 に答える