フォローアップ私の他の質問私は次のことを明確にしたいと思います。
ポートの 1 つの代わりにブリッジインターフェイスを設定するには、キーワード self を追加します。ルーティングスタック(レイヤ3)はIPv4またはIPv6パケットを処理するため、タグ付きフレームではなくこの種類のフレームを受信することを期待します。したがって、ブリッジを離れるときにVLAN ID 10はタグ付けされてはならず(ルーティングスタックがトラフィックを受信するには)、ルーティングスタックからブリッジにタグを付け直すには、このポートVLAN IDがポートVLAN IDである必要があります。これにより、1つのVLANだけがルーティングスタックに接続できます。
トランクポートは複数のVLANを転送しますが、PVID
トランクポートを通過するフレームbridge
(ルーティングスタックからブリッジなど)には1つの値しかありません。フレームに正しいタグが付けられていることを確認する方法はありません。 VLAN ID(ブリッジに到着したID)?
図では、私の問題を説明しようとしています。
+----+
| L3 |
+--+-+
|
|
|br0
+------+-------+
| Linux Bridge |
+------+-------+
|trunk (vid 2-4094)
|PVID (??)
|
+------+-------+
| L2 switch |
+-+----+-----+-+
| | |
| | |
10| 20| 30|
たとえば、VID 10タグ(にバインドされているbr0
)を持つフレームがLinuxブリッジtrunk
ポートに到着すると、タグは削除され、スタックに転送され、処理(ICMPなど)され、応答パケットが生成されます。ブリッジbr0
にPVIDタグが付けられています。 PVID = 20に設定すると、そのパケットはVLAN10のホストに到達しません。
Linux ブリッジは、元のパケットの宛先 MAC および VLAN ID に基づいて応答パケットを転送することを期待します。
修正するいくつかの実験を行った後、次の設定が機能することがわかりました。したがって、Vlanサブインターフェイスを作成してethX.VID
ブリッジに追加し、単一のbr0
IPアドレスで各サブインターフェイスにタグを付け/タグ解除します。
つまり、タグ付きパケット(複数のVLAN)がbr0に到着し、タグが付けられていない後にスタックにプッシュされ、応答パケットはbr0を介して正しいVlanサブインターフェイスに戻り、タグ付けされて流れます。
+----+
| L3 |
+--+-+
|
|
|br0
+------+-------+
| Linux Bridge |
+------+-------+
| | |
| | |
|eth0.10|eth0.20|eth0.30|
+------+
| eth0 |
+--+---+
|trunk (vid 2-4094)
|PVID (??)
|
+------+-------+
| L2 switch |
+-+----+-----+-+
| | |
| | |
10| 20| 30|