2022年8月、ホームページを全面リニューアルしました! 情報を分かりやすくお伝えできるサイト作りを目指してまいります。

LinuxBOXでBridgeを作る!

ブリッジは、自身にはIPアドレスを持たずNIC2枚差しPCの両端にセグメントの異なったネットワークを接続して双方からフォワードを行い。ただ繋ぐだけで左と右のパケットが自由に行き来できるような機器である。したがって、IPアドレスが無いと言うことからスイッチングハブ的要素が有ると思う。これに加えて、Bridge機能以外にフィルタリング機能も搭載できるが今回は割愛する。

使用環境 )
OS : Debian GNU Linux3.1 Sarge Kernel-2.4.30
← カーネルの再構築を行うバージョン


1. NICを認識させる

まず、2枚のNICを認識できなければならない。
Debianのパッケージインストール時点で2枚のNICが認識されていれば良いが認識されてなかったら、認識されている方だけでとりあえずネットにつなげること。その後、lspciコマンドで認識できなかったNICを調べる。

mt-brige:~# lspci
0000:00:00.0 Host bridge: Intel Corp. 82845G/GL[Brookdale-G]/GE/PE DRAM Controller/Host-Hub Interface (rev 01)
0000:00:02.0 VGA compatible controller: Intel Corp. 82845G/GL[Brookdale-G]/GE Chipset Integrated Graphics Device (rev 01)
省略
0000:01:07.0 Ethernet controller: 3Com Corporation 3c905B 100BaseTX [Cyclone] (rev 34)
0000:01:0c.0 Ethernet controller: Intel Corp. 82540EM Gigabit Ethernet Controller (rev 02)

こんな具合に出てるので認識できなかったNICの型式をメモる。俺の場合は、最後に表示されている Ethernet controller: Intel Corp. 82540EM Gigabit Ethernet Controller (rev 02) が認識できなかったので後のカーネル再構築でチェックを入れた。


2.Bridgeとして動かすにはカーネル再構築が必要

カーネルは、2.4.xxを使う。kernel menuに802.1d Ethernet Bridgingの項目が有ることが前提なので2.4.xxが必要である。
2.6.xxには、どういう訳かその項目が見あたらなかった。

1)kernel再構築に必要なモジュールのインスコ

mt-brige:~# apt-get update
mt-brige:~# apt-get install libncurses5-dev
mt-brige:~# apt-get install kernel-package

2)カーネルモジュールのゲットと解凍

2.4.30カーネルを ここ からゲットする。2005年6月現在これが最新であった。ソースを/usr/srcへ解凍する

mt-brige:~/usr/src# tar xvzf linux-2.4.30.tar.gz
mt-brige:~/usr/src# chown root.root linux-2.4.30
mt-brige:~/usr/src# ln -s linux-2.4.30 linux

3)カーネルメニューのチェック

mt-brige:~/usr/src# cd linux
mt-brige:/usr/src/linux# make menuconfig

「Processor type and features」でProcessorタイプをチェックする。
「Networking options」を開く。
「Network packet filtering (replaces ipchains)」 をチェックする。
「Network device support」でNICをチェックする。saveして抜ける。

4)カーネルのコンパイル

# make-kpkg –revision 20050613 kernel-image
バイナリを作る。            ↑ 今日の日付などの名前がベストだと思う。

5)カーネルイメージを展開する

# cd ..
# dpkg -i kernel-image-2.4.30_20050613_i386.deb
カーネルイメージを展開してインストール。

# lilo -v
liloを設定する。新しいイメージがlinuxになって、現在のイメージがlinux.oldとなる。
注:lilo -vをやらないと新しいカーネルイメージがブートアップしないので注意すること。


3.Bridgeユーティリティのセットアップ

Bridgeユーティリティは ここ から、ダウンロードしてコンパイルする。
2005年6月現在の最新版は bridge-utils-1.0.6.tar.gzであった。

mt-brige:/# cd /usr/local/src/
mt-brige:/usr/local/src# tar xvzf bridge-utils-1.0.6.tar.gz
mt-brige:/usr/local/src# cd bridge-utils-1.0.6
mt-brige:/usr/local/src/bridge-utils-1.0.6# make
mt-brige:/usr/local/src/bridge-utils-1.0.6# cd brctl
mt-brige:/usr/local/src/bridge-utils-1.0.6# cp brctl /usr/local/sbin


4.Bridgeを起動する

brctl」とだけ打つと、使い方が画面に表示される。

mt-brige:/# brctl addbr br0
mt-brige:/# brctl stp br0 off               
← spanning treeをoffにする
mt-brige:/# brctl addif br0 eth0
mt-brige:/# brctl addif br0 eth1
mt-brige:/# ifconfig eth0 0.0.0.0 up
mt-brige:/# ifconfig eth1 0.0.0.0 up
mt-brige:/# ifconfig br0 xxx.xxx.xxx.xxx up  
← このIPアドレスは適当なIPで良いでしょう


5.ちゃんと出来てるか確かめる

mt-brige:/# brctl show
bridge name bridge id STP enabled interfaces
br0 8000.000874ebf029 no eth0
eth1

一応、俺が作ったBridgeは、showオプションで上記のような表示がViewされた。
あと、パケットがフォワードしてるかどうかは、tcpdumpコマンド位でしか解らないと思う。

mt-brige:/# tcpdump -i eth0

Alt+F2でコンソール2へ切り替えて、
mt-brige:/# tcpdump -i eth1

のような具合に切り替えて通信の状態を観覧してみてはどうかと思う。

また、ルータ越えをする場合はルーティングテーブルをちゃんと定義しないと通信しないので悪しからず。


6.自動起動させる

Debianの場合、起動時にBridgeをアクティブにさせるためには/etc/init.d/rcに書いておくと良い。

mt-brige:/# vi /etc/init.d/rc

省略
brctl addbr br0
brctl stp br0 off
brctl addif br0 eth0
brctl addif br0 eth1
ifconfig eth0 0.0.0.0 up
ifconfig eth1 0.0.0.0 up
ifconfig br0 xxx.xxx.xxx.xxx up
省略

以上

コメント