[HOME] [github] [twitter] [blog] [fml4] [fml8] [北海道] Powered by NetBSD and [nuinui.net] .

NetBSD によるブリッジ(スイッチ)

bridge(4) は NetBSD 1.6 で実装されました。 元は Jason L. Wright さんの卒論だそうですよ! なお、現在の NetBSD のコードは J. R. Thorpe が奇麗に書き直したもの。

カーネルの再構築

NetBSD カーネルを再構築 し、 カーネルを入れ換えて ください。

ブリッジを有効にするためには、 カーネルの設定ファイルに次のオプションを追加してください。


pseudo-device bridge

また、これはオプションですが、 ブリッジの中からフィルタシステムを呼び出すために、 次のオプションも追加してください。


options         BRIDGE_IPF

bridge インターフェイスの設定

bridge の設定は brconfig コマンドを使って行ないます。

起動時に、 自動的にブリッジを有効にするには /etc/ifconfig.bridge0 を作成します。

「ifconfig.識別子」 ファイルの中に書かれた ! マークはコマンドの実行です。 次のように brconfig コマンドを実行するように設定します。

!brconfig bridge0 up add fxp0 add fxp1
この例では fxp0 と fxp1 を同じネットワークに所属しています。
PC1 -- fxp0 - NetBSD - fxp1 -- PC2

ポートが二つ以上でも同様に設定すればOKです。

                +----- fxp3 -- PC4
PC1 -- fxp0 - NetBSD - fxp1 -- PC2
                +----- fxp2 -- PC3
!brconfig bridge0 up add fxp0 add fxp2 up add fxp3

bridge の設定例: 四つのインターフェイスで一つのブリッジ

例: fxp0 fxp1 fxp2 fxp3 の4インターフェイスで一つのブリッジ。

[/etc/ifconfig.bridge0]

!brconfig add up fxp0 add fxp1 add fxp2 add fxp3

[/etc/ifconfig.fxp0]
up

[/etc/ifconfig.fxp1]
up

[/etc/ifconfig.fxp2]
up

[/etc/ifconfig.fxp3]
up

議論

2011/10 記(現在どうなってるか?は未調査): フィルタの呼び出しが間違ってると思うんだ。

[/usr/src/sys/net/if_bridge.c]

bridge_forward() {
   ループ {
	... snip ...
	お初なら、宛先のインターフェイスを学習
	... snip ...
	if (ユニキャスト) {
		転送先インターフェイス(dst_if)を決定。
		転送先(dst_if)が入力インターフェイス(src_if)の場合、捨てる。
		( if (src_if == dst_if) { パケットを捨てる;} )
	}
	else {
		全インターフェイスに転送。
	}
	パケットフィルタを呼び出す。
	ブロードキャストの場合、ここでブロードキャスト。
	... snip ...
   }
}

[HOME] [github] [twitter] [blog] [fml4] [fml8] [北海道] Powered by NetBSD and [nuinui.net] .
Copyright (C) 1993-2022 Ken'ichi Fukamachi mail:< fukachan at fml.org >