Bridgeの設定 brctl
sorry Japanese only
PAGE作成日 2005/06/12
最終更新日 2005/06/12
page size = Mbyte


関連するページ iptables iptables2 iptables3+brctl brctl

linux PCへ、何枚も Networkカードを差し込み、それを Swハブのように使ってしまおう!
って方法です。

PCとは別に Swハブを取り付け、それに年中電源入れておくなんて勿体なくありませんか?
私のように Linux PCで apacheサーバー兼 PPPoEルーターをやらせて 24時間動かしっぱなし。
って人は、そのパソコンを使って高速度の 1000BASE スイッチングハブを低価格で構築できます。

以下の図のような動作をさせる設定にしました。
このページでは (6)の設定部分を説明します。


(1) Bフレッツ用 ONUへは linux PCの eth2に接続
eth2では kernel mode pppoeにて @niftyと IIJ4Uの切り替えが可能な常時接続を行う。
@niftyと IIJ4Uは、負荷分散する為、数日ごとの自動切り替えにする。
(2) internetから ppp0へ入ってきた PORT80と 8080のパケットは linuxで動作している apacheへ振り分ける。(INPUTの部分許可)
(3) ppp0から入ってきたパケットを eth1,eth2へは通さない。(FOWARDの禁止) (3) ppp0から入ってきたその他の通信は拒否(INPUTの原則拒否)
(4) eth0,1の win機からは linux PCを telnet,ftpなどフルコントロールできるようにする(eth0,1からの INPUTは ACCEPT)
(5) eth0,1から ppp0へは無条件で通信を通す(FORWARDの許可)
(6) eth0,1は brctlを組み込み Bridge動作を行う。(brctlの組み込み)
(6) eth0,1で 192.168.0.5の共通 IPを割り振り (4)が行えるようにする。(FOWARDの特定許可)

eth0,1間の通信は Hubに繋いでいるときと同じように動作させたい。
市販のルーターに付いているスイッチングハブ部分と同じような感じですね。

kernelの再コンパイル

以下のカーネルオプション
802.1d Ethernet Bridgingを Enable
Network packet filtering debuggingを Disable
にしてカーネルソースより再コンパイルする必要があります。

詳しくはこちら => ソースからのカーネルコンパイルページ

brctlの組み込み

Linux Ethernet bridgingより brctlの sourceを downloadします。
私は、bridge-utils-1.0.6.tar.gzを downloadしました。
tar zxvf bridge-utils-1.0.6.tar.gz
cd bridge-utils-1.0.6
configure
make
cd brctl
cp brctl /usr/local/bin

これで brctlの installは完了です。

brctlの設定

brctlはコマンドなので、linuxの起動と同時にブリッジ機能を働かせたい場合、/etc/rc.d/init.dへスクリプトを用意しなければなりません。
Bridge Firewallingさんの所のスクリプトのまねをさせていただきました。

/etc/rc.d/init.d/brctl
#!/bin/sh
#
#bridge        Starts Bridge

case "$1" in

start)
        echo "Starting bridge: "

        # Network interface up
        /sbin/ifconfig eth0 0.0.0.0
        /sbin/ifconfig eth1 0.0.0.0

        # Bridge interface up
        /usr/local/bin/brctl addbr br0
        /usr/local/bin/brctl addif br0 eth0
        /usr/local/bin/brctl addif br0 eth1

        /sbin/ifconfig br0 192.168.0.5 up
        ;;

stop)
        echo "Shutting down bridge: "

        # Bridge interface down
        /sbin/ifconfig br0 down

        # Bridge interface delete
        /usr/local/bin/brctl delif br0 eth0
        /usr/local/bin/brctl delif br0 eth1
        /usr/local/bin/brctl delbr br0

        # Network interface down
        /sbin/ifconfig eth0 down
        /sbin/ifconfig eth1 down
        ;;

status)
        /usr/local/bin/brctl showstp br0
        ;;

restart)
        stop
        start
        ;;

*)
        echo "Usage: $0 {start|stop|status|restart}"
        exit 1
esac

exit 0

次に /etc/rc.d/rc2.dへ 上記スクリプトへのリンクを張ります。
cd /etc/rc.d/rc2.d
ln -s ../init.d/brctl S20brctl

rc3.dからrc5.dも同じようなリンクを作成します。
これで linux起動時、自動的に bridge有効になります。

ちなみに、関連ありそうな network,iptablesとの起動順のかねあいは、
S10network
S20brctl
S29iptables
の順番にしてみました。

ifcfg-eth0の再設定

ブリッジにするときは Networkカードを promiscuous modeと言うので起動します。
IPアドレス 0.0.0.0で設定して起動するという意味らしいです。

/etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE=eth0
ONBOOT=no
BOOTPROTO=static
IPADDR=0.0.0.0
NETMASK=255.255.255.0
BROADCAST=
NETWORK=
USERCTL=no

初期設定はboot=noにしていますが、brctlのスクリプトの方で upさせるようにしています。
ifcfg-eth1も同じような設定にします。


44782
戻る