Back | Top

無線LANアクセスポイントの設定(続編) - ブリッジ化

Last update: $Date: 2003/03/05 13:54:02 $

無線LAN Access Pointの設定(前編?)


復習?

まずはじめにアクセスポイント用のカーネルモジュールを有効にする

# modprobe hostap_pci

するとifconfigの出力結果は以下のようにloだけとなる

# ifconfig 
lo        Link encap:Local Loopback  
          inet addr:127.0.0.1  Mask:255.0.0.0
          UP LOOPBACK RUNNING  MTU:16436  Metric:1
          RX packets:81 errors:0 dropped:0 overruns:0 frame:0
          TX packets:81 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 
          RX bytes:4939 (4.8 Kb)  TX bytes:4939 (4.8 Kb)

一方"ifconfig -a"の出力結果は以下のようになる.
大事なのは無線LANのインタフェースである"wlan0"が見えていること. これを確認する.なお設定によっては"ifconfig"の時点で見えるように なっている場合もありうる.

# ifconfig -a
eth0      Link encap:Ethernet  HWaddr 00:VV:WW:XX:YY:ZZ
          BROADCAST MULTICAST  MTU:1500  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 
          RX bytes:0 (0.0 b)  TX bytes:0 (0.0 b)

lo        Link encap:Local Loopback  
          inet addr:127.0.0.1  Mask:255.0.0.0
          UP LOOPBACK RUNNING  MTU:16436  Metric:1
          RX packets:81 errors:0 dropped:0 overruns:0 frame:0
          TX packets:81 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 
          RX bytes:4939 (4.8 Kb)  TX bytes:4939 (4.8 Kb)

wlan0     Link encap:Ethernet  HWaddr 00:VV:WW:XX:YY:ZZ
          BROADCAST NOTRAILERS RUNNING  MTU:1500  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:4 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 
          RX bytes:0 (0.0 b)  TX bytes:2480 (2.4 Kb)

この時点で,syslog(/var/log/messages)の表示は以下のようになっているはずである. hostap_pciがカーネルに読み込まれたときに出力されたものである.

Mar  5 19:34:27 capri kernel: hostap_pci: hostap_pci.c 0.0.0 2002-10-12 (SSH Communications Security Corp, Jouni Malinen)
Mar  5 19:34:27 capri kernel: hostap_pci: (c) Jouni Malinen 
Mar  5 19:34:27 capri kernel: PCI: Found IRQ 11 for device 02:05.0
Mar  5 19:34:27 capri kernel: PCI: Sharing IRQ 11 with 00:1d.2
Mar  5 19:34:27 capri kernel: PCI: Sharing IRQ 11 with 00:1f.1
Mar  5 19:34:27 capri kernel: PCI: Sharing IRQ 11 with 02:03.2
Mar  5 19:34:27 capri kernel: hostap_pci: Registered netdevice wlan0
Mar  5 19:34:27 capri kernel: wlan0: NIC: id=0x8013 v1.0.0
Mar  5 19:34:27 capri kernel: wlan0: PRI: id=0x15 v1.0.7
Mar  5 19:34:27 capri kernel: wlan0: STA: id=0x1f v1.3.6
Mar  5 19:34:27 capri kernel: wlan0: Intersil Prism2.5 PCI: mem=0xf0000000, irq=11

次にESSIDを意図したものに変更しておこう.デフォルトの値は"test"に なっているが,あまりにも芸がないので変更しておこう.

# iwconfig wlan0 mode Master (APとして振る舞うことを指示)
# iwconfig wlan0 essid Roma   (ESSIDの変更)
# iwconfig
Warning : Device wlan0 has been compiled with version 13
of Wireless Extension, while we are using version 11.
Some things may be broken...

wlan0     IEEE 802.11-b  ESSID:"Roma"  
          Mode:Master  Frequency:2.422GHz ...
          ...(省略)

さて,ここまでは以前のWeb pageの説明と重複していた部分であり,復習です. 目新しい記述はないはずである.


ブリッジの設定

さてここからがブリッジ化へ向けての設定になる.改めて確認しておくが, この稼働試験を行ったLinuxはRedHat 7.2である.ここでブリッジ化作業を 行うために以下のユーティリティソフトウェアをWeb経由でdownloadし, インストールする.

bridge-utils

当方がインストールしたバージョンは0.9.6(bridge-utils-0.9.6.tar.gz)である (2003年3月4日現在).このインストールは極めて簡単.お約束通りである.

% tar zxvf bridge-utils-0.9.6.tar.gz
% cd bridge-utils-0.9.6
% ./configure
% make
% su 
Password:
# make install
# exit
%

すると/usr/local/sbin/に"brctl"(bridge control?)という プログラムがインストールされるはずである.このプログラムを使って ブリッジ化のための設定作業を行っていく.

なお話が横道にそれるがLinux kernel version 2.4系ではブリッジとしての 機能が組み込まれており, それはここに 書いてある方法で確認できる.ま,と単に書いただけではわからないし, 確認しないと思うので簡単に書く(^^;.この文書を読むとRedHat 7.2はカーネルに デフォルトでブリッジの機能はモジュールとして組み込まれているが,bridge-utils はインストールされていない.でも,そう書いてあるということは試験環境として 評価しているだろう.つまり(多分)使えるだろうなということがわかる.

以下のどちらかの確認方法で確認が取れれば,あなたが使っているLinux kernelは ブリッジ機能が使えるkernelである.

  1. 起動時のログの記録

    ログ(syslogだろう)に"NET4: Ethernet Bridge 008 for NET4.0"という 出力がある.

  2. カーネルモジュール

    /lib/modules/<your kernel version>/kernel/net/bridgeというディレクトリがあり,その中に"bridge.o"というファイルがある.

さて,では本題のブリッジの設定を始めよう.

まず始めにブリッジのための仮想ネットワークインタフェースを作成する (だと思う).addbr(add bridge?)というオプションを使用する.

# /usr/local/sbin/brctl addbr br0
(syslogの表示)
Mar  5 19:43:59 capri kernel: NET4: Ethernet Bridge 008 for NET4.0

次に作成したブリッジ用インタフェースにブリッジするネットワークインタフェースを 関連づけていく(enslave=奴隷にする.と,書いてあった). オプションはaddif(add interface)である.

# /usr/local/sbin/brctl addif br0 eth0
(syslogの表示)
Mar  5 19:44:23 capri kernel: device eth0 entered promiscuous mode

インタフェースが一つだけではブリッジにはならないので(当たり前) 今回は有線と無線の間をブリッジするので前述の有線インタフェースに続いて 無線インタフェースも追加する.これで二つのインタフェースが一つの ブリッジ用インタフェースに関連づけられた.つまり,この二つのネットワーク インタフェース間で通信データをブリッジするのである.

# /usr/local/sbin/brctl addif br0 wlan0
(syslogの表示)
Mar  5 19:44:43 capri kernel: device wlan0 entered promiscuous mode

そうしたら,ネットワークインタフェースを'UP'状態にする. IPアドレスは付与する必要がないので"0.0.0.0"とする.

# ifconfig  eth0   0.0.0.0
# ifconfig  wlan0  0.0.0.0

また以下のコマンドでもいいらしい

# ip link set eth0  up
# ip link set wlan0 up

この時点でのifconfigの出力は以下のようになる.
eth0,wlan0は'UP'状態にはなっているものの,IPアドレスがないことに注目

# ifconfig 
eth0      Link encap:Ethernet  HWaddr 00:VV:WW:XX:YY:ZZ
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:6 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 
          RX bytes:394 (394.0 b)  TX bytes:0 (0.0 b)

lo        Link encap:Local Loopback  
          inet addr:127.0.0.1  Mask:255.0.0.0
          UP LOOPBACK RUNNING  MTU:16436  Metric:1
          RX packets:189 errors:0 dropped:0 overruns:0 frame:0
          TX packets:189 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 
          RX bytes:12165 (11.8 Kb)  TX bytes:12165 (11.8 Kb)

wlan0     Link encap:Ethernet  HWaddr 00:VV:WW:XX:YY:ZZ
          UP BROADCAST RUNNING  MTU:1500  Metric:1
          RX packets:44 errors:0 dropped:0 overruns:0 frame:0
          TX packets:8 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 
          RX bytes:0 (0.0 b)  TX bytes:4960 (4.8 Kb)

そうしたら"br0"に有線側ネットワークで使用できるIPアドレスを 一つ割り当て,'UP'状態にする.

# ifconfig br0 192.168.0.51 netmask 255.255.255.0 up
(このときのsyslogの出力は以下のようになる.時刻を見てもらえばわかるが,
これらのログ出力がすべて出力されるまでには多少の時間が(30秒ほど)かかる)
Mar  5 20:11:02 capri kernel: br0: port 2(wlan0) entering listening state
Mar  5 20:11:02 capri kernel: br0: port 1(eth0) entering listening state
Mar  5 20:11:17 capri kernel: br0: port 2(wlan0) entering learning state
Mar  5 20:11:17 capri kernel: br0: port 1(eth0) entering learning state
Mar  5 20:11:32 capri kernel: br0: port 2(wlan0) entering forwarding state
Mar  5 20:11:32 capri kernel: br0: topology change detected, sending tcn bpdu
Mar  5 20:11:32 capri kernel: br0: port 1(eth0) entering forwarding state
Mar  5 20:11:32 capri kernel: br0: topology change detected

こうしてしばらくすると無線LANと有線LANの間でpingが通るようになる.
(ブリッジなので,無線LANのクライアント側のIPアドレスには有線LAN側で 使用可能なIPアドレスを手入力で割り当ててある)

どうやらSwitching HUBではないが,上のログから想像するにトポロジーを学習し, 通信可能になるまで多少の時間が必要なようである.できあがるネットワーク構成は 以下の図のような無線LAN - 有線LANのブリッジである.

この状態でのifconfigの出力は以下の通りである.

# ifconfig
br0       Link encap:Ethernet  HWaddr 00:VV:WW:XX:YY:ZZ
          inet addr:192.168.0.51  Bcast:192.168.0.255  Mask:255.255.255.0
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:23 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 
          RX bytes:1602 (1.5 Kb)  TX bytes:0 (0.0 b)

eth0      Link encap:Ethernet  HWaddr 00:VV:WW:XX:YY:ZZ
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:286 errors:0 dropped:0 overruns:0 frame:0
          TX packets:155 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 
          RX bytes:23182 (22.6 Kb)  TX bytes:15119 (14.7 Kb)

lo        Link encap:Local Loopback  
          inet addr:127.0.0.1  Mask:255.0.0.0
          UP LOOPBACK RUNNING  MTU:16436  Metric:1
          RX packets:81 errors:0 dropped:0 overruns:0 frame:0
          TX packets:81 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 
          RX bytes:4939 (4.8 Kb)  TX bytes:4939 (4.8 Kb)

wlan0     Link encap:Ethernet  HWaddr 00:VV:WW:XX:YY:ZZ
          UP BROADCAST RUNNING  MTU:1500  Metric:1
          RX packets:224 errors:0 dropped:4 overruns:0 frame:0
          TX packets:328 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 
          RX bytes:16637 (16.2 Kb)  TX bytes:39994 (39.0 Kb)

この時点で通信ができない場合には経路情報がないということが考えられる. その際にはrouteコマンドを使って有線側ネットワークのdefault gwを設定する.

# route add -net default gw <IP address of default gateway>

なおブリッジには本来IPアドレスは必要ないので(HUBと考えてもらえばよい), 学習が終わり,通信ができるようになった時点でIPアドレスを白紙にしてしまった (はく奪).これを行った後でも通信は正常にできていた(限られた環境/状況でしか 確認していないが...).操作は以下のようにした.

# ifconfig br0 0.0.0.0
# ifconfig 
br0       Link encap:Ethernet  HWaddr 00:VV:WW:XX:YY:ZZ
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:83 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 
          RX bytes:5274 (5.1 Kb)  TX bytes:0 (0.0 b)

eth0      Link encap:Ethernet  HWaddr 00:VV:WW:XX:YY:ZZ
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:2194 errors:0 dropped:0 overruns:0 frame:0
          TX packets:1499 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 
          RX bytes:1607215 (1.5 Mb)  TX bytes:243560 (237.8 Kb)

lo        Link encap:Local Loopback  
          inet addr:127.0.0.1  Mask:255.0.0.0
          UP LOOPBACK RUNNING  MTU:16436  Metric:1
          RX packets:81 errors:0 dropped:0 overruns:0 frame:0
          TX packets:81 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 
          RX bytes:4939 (4.8 Kb)  TX bytes:4939 (4.8 Kb)

wlan0     Link encap:Ethernet  HWaddr 00:VV:WW:XX:YY:ZZ
          UP BROADCAST RUNNING  MTU:1500  Metric:1
          RX packets:1575 errors:0 dropped:4 overruns:0 frame:0
          TX packets:2239 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 
          RX bytes:228950 (223.5 Kb)  TX bytes:1680598 (1.6 Mb)


さてここまでの設定でブリッジによる無線LANアクセスポイントが出来上がった.
ただしここまでの設定では,このアクセスポイントを使う無線LANのクライアントには 有線側ネットワークで使えるIPアドレスを静的に割り当てなければならないという 問題が残る.さて,ここでどうやってIPアドレスを割り当てるか... またNATにする という選択もあるが... それは課題のままで...

参考にしたWeb


Presented by Netaro the web | Since 2002