web-dev-qa-db-ja.com

2つのTAPインターフェイス間のブリッジにはIPアドレスが必要ですか?

マシンにopenvpnをセットアップして、2つの異なるタップインターフェイス(tap0とtap1)と、それらのインターフェイスを接続するブリッジを作成しようとしています。 openvpnは、各TAPインターフェイスのサーバーブリッジ構成でセットアップされます。アイデアは、tap0のクライアントがtap1のクライアントと通信できるようになり、その逆も可能になるということです。

ブリッジには物理的なNICは関与せず、ブリッジインターフェイスはip/netmask/broadcastなしでセットアップされます。単一の「ifconfigbrXup」で起動するだけです。

2つのクライアントが両方ともopenvpnサーバーに接続されていて、それぞれが上記の独自のタップインターフェイスに接続されている場合、2つのクライアント間でpingを実行できますが、ブリッジインターフェイスをtcpdumpしようとするとトラフィックが表示されません。

私はいくつかのことに少し混乱しています:

  1. ブリッジインターフェイスにIPを設定する必要がありますか?仮想インターフェイスを相互に通信させるだけなので、その理由はよくわかりません。

  2. ブリッジインターフェイスに割り当てられたIP /ネットマスク/ブロードキャストがないという事実は、そのインターフェイスをtcpdumpするときにブリッジインターフェイスのpingトラフィックを確認できない理由ですか?

  3. 2番目の答えが「はい」の場合、iptablesを使用してそのインターフェイス上のトラフィックをブロック/許可することもできないと思いますよね?もしそうなら、そのようなインターフェースでiptablesを使って何をするかを達成する他の方法はありますか?

3
ByteFlinger

ブリッジインターフェイスにIPを設定する必要がありますか?仮想インターフェイスを相互に通信させるだけなので、その理由はよくわかりません。

いいえ、純粋なブリッジはイーサネットレベルでのみ機能し、IPヘッダーも調べません。 br0にIPアドレスを割り当てると、実際にはそのブリッジに接続されているホストOSに割り当てられます。

ただし、実際にtapインターフェイスをブリッジポートとして追加することについては何も言っていません。管理するポートをブリッジに明示的に指示する必要があります。

  • brctl addif br0 tap0

  • ip link set tap0 master br0

ブリッジインターフェイスに割り当てられたIP /ネットマスク/ブロードキャストがないという事実は、そのインターフェイスをtcpdumpするときにブリッジインターフェイスのpingトラフィックを確認できない理由ですか?

番号。

ただし、ブリッジがまだ「学習」モードになっている可能性があります。デフォルトは30秒です– brctl showstp br0を使用して確認してください。ポートがブリッジに追加されていない可能性があります(上記を参照)。ポートインターフェイス自体がまだダウンしている可能性があります。

(また、親愛なる神々なぜ人々はブロードキャストアドレスを設定する必要があると思うのですか?実際、OSはすでにIP | 〜netmaskからそれを計算できます。ブロードキャストアドレスを手動で構成することはほとんど役に立ちません。誤って取得しやすくなります間違った。)

2番目の答えが「はい」の場合、iptablesを使用してそのインターフェイス上のトラフィックをブロック/許可することもできないと思いますよね?もしそうなら、そのようなインターフェースでiptablesを使って何をするかを達成する他の方法はありますか?

はい、トラフィックをフィルタリングするにはebtablesが必要です。 IPファイアウォールを通過しません。

(ただし、常に正しいとは限りません。たとえば、Untangleファイアウォールは、クロスブリードルーター/ブリッジモードで機能しているようですが、多少混乱します。)

5
user1686