本格的に使えるようにするために準備に入ります。
暗号化に必要になるということで、wpaをインストールしておきます。
/etc/hostapd$ sudo aptitude install wpasupplicant
また、ブリッジ化に必要ということで、 以下をインストールしました。
/etc/hostapd$ sudo aptitude install bridge-utils
interfacesとhostapd.confをいじっていますが、 どうするのが正しいのか良くわかっていません。適当に設定して、リブートした時に見えたメッセージは以下となりました。
WConfiguring network interfaces...Setting kernel variables ...done.
zd1211rw 1-1.1:1.0: firmware version 4725
zd1211rw 1-1.1:1.0: zd1211b chip 2019:5303 v4810 high 00-22-cf AL2230_RF pa0 ---N-
Error for wireless request "Set Mode" (8B06) :
SET failed on device wlan0 ; Invalid argument.
NET: Registered protocol family 10
ADDRCONF(NETDEV_UP): wlan0: link is not ready
Bridge firewalling registered
device eth0 entered promiscuous mode
ADDRCONF(NETDEV_UP): eth0: link is not ready
can't add wlan0 to bridge br0: Operation not supported
ADDRCONF(NETDEV_UP): br0: link is not ready
aiting for br0 to get ready (MAXWAIT is 32 seconds).
mv643xx_eth_port mv643xx_eth_port.0: eth0: link up, 100 Mb/s, full duplex, flow control disabled
ADDRCONF(NETDEV_CHANGE): eth0: link becomes ready
br0: port 1(eth0) entering forwarding state
br0: port 1(eth0) entering forwarding state
ADDRCONF(NETDEV_CHANGE): br0: link becomes ready
done.
ちゃんと設定されていない様子です。
.confファイルをhttp://aburagirio.cocolog-nifty.com/blog/2009/07/wn-wagcbh.html から頂きました。設定ファイル自体は1000行を超えるもので膨大ですが、コメントが多く、設定箇所は少ない様子です。
まだ全然わかっていませんが、WEPの設定をすると、接続側の画面上のリストに鍵のマークが付くようになりました。
それなりにできているようですが、でもネット接続には至らず、今一歩完了に近づかない状態です。
探してみると、http://wireless.kernel.org/en/users/Documentation/hostapd に設定内容について詳しく書かれていました。
ボンタさんにならって、ブリッジ化の実験をしてみます。
/etc/hostapd$ sudo brctl addbr br0
Bridge firewalling registered
/etc/hostapd$ sudo brctl addbr br0 eth0
device br0 already exists; can't create bridge with the same name
/etc/hostapd$ sudo addif br0 eth0
sudo: addif: command not found
/etc/hostapd$ sudo brctl addif br0 eth0
device eth0 entered promiscuous mode
/etc/hostapd$ sudo brctl addif br0 wlan0
device wlan0 entered promiscuous mode
/etc/hostapd$ sudo ifconfig eth0 0.0.0.0 up
ADDRCONF(NETDEV_UP): eth0: link is not ready
/etc/hostapd$ mv643xx_eth_port mv643xx_eth_port.0: eth0: link up, 100 Mb/s, full duplex, flow control disabled
ADDRCONF(NETDEV_CHANGE): eth0: link becomes ready
/etc/hostapd$ ^C
roadcast 10.0.0.255 upostapd$ sudo ifconfig br0 10.0.0.1 netmask 255.255.255.0 b
br0: port 2(wlan0) entering forwarding state
br0: port 1(eth0) entering forwarding state
/etc/hostapd$ sudo ifconfig
br0 Link encap:イーサネット ハードウェアアドレス 00:22:cf:**:**:**
inetアドレス:10.0.0.1 ブロードキャスト:10.0.0.255 マスク:255.255.255.0
inet6アドレス: fe80::222:cfff:fe36:bd01/64 範囲:リンク
UP BROADCAST RUNNING MULTICAST MTU:1500 メトリック:1
RXパケット:0 エラー:0 損失:0 オーバラン:0 フレーム:0
TXパケット:21 エラー:0 損失:0 オーバラン:0 キャリア:0
衝突(Collisions):0 TXキュー長:0
RXバイト:0 (0.0 B) TXバイト:2308 (2.2 KiB)
eth0 Link encap:イーサネット ハードウェアアドレス 00:50:43:**:**:**
inet6アドレス: fe80::250:43ff:fe01:5913/64 範囲:リンク
UP BROADCAST RUNNING MULTICAST MTU:1500 メトリック:1
RXパケット:1 エラー:0 損失:0 オーバラン:0 フレーム:0
TXパケット:27 エラー:0 損失:0 オーバラン:0 キャリア:0
衝突(Collisions):0 TXキュー長:1000
RXバイト:64 (64.0 B) TXバイト:2728 (2.6 KiB)
割り込み:11
lo Link encap:ローカルループバック
inetアドレス:127.0.0.1 マスク:255.0.0.0
inet6アドレス: ::1/128 範囲:ホスト
UP LOOPBACK RUNNING MTU:16436 メトリック:1
RXパケット:16 エラー:0 損失:0 オーバラン:0 フレーム:0
TXパケット:16 エラー:0 損失:0 オーバラン:0 キャリア:0
衝突(Collisions):0 TXキュー長:0
RXバイト:1040 (1.0 KiB) TXバイト:1040 (1.0 KiB)
wlan0 Link encap:イーサネット ハードウェアアドレス 00:22:cf:**:**:**
inet6アドレス: fe80::222:cfff:fe36:bd01/64 範囲:リンク
UP BROADCAST RUNNING MULTICAST MTU:1500 メトリック:1
RXパケット:0 エラー:0 損失:0 オーバラン:0 フレーム:0
TXパケット:78 エラー:0 損失:0 オーバラン:0 キャリア:0
衝突(Collisions):0 TXキュー長:1000
RXバイト:0 (0.0 B) TXバイト:11245 (10.9 KiB)
ちゃんとしていないようですが、何が悪いのかよくわかりませんね。
よいサイトを見つけました。
http://forumsdev.novell.com/novell/technial-help/wireless/410475-how-setup-access-point.html
ここにアクセスポイントのセットアップ方法について記載があります。
以下の3つの設定が必要とのこと
- hostapd
- APのクライアントのためのDHCPサーバ
- NAT(Network Address Translation)用のiptableルール
実は、紆余曲折しましたが、うまく行った方法を中心にまとめます。
1.Hostapd
これは、APが行うほとんどのこと(ビーコンの送信、認証など)を、デバイスドライバと一緒に処理するものだと書かれています。
hostapdは最新版をダウンロードするようにとか、compat-wireless codeをダウンロードするようにと記載あります。
どこかで、一度やったような気がしますが、カーネルのバージョンに合わせて、ダウンロードします。
ここからは、ここ http://linuxwireless.org/en/users/Download/stable/#compat-wireless_2.6.39_stable_releases に記載の通りに進めていきます。
展開します。
/media/mainUSB8G/wirelessLAN$ sudo tar -xf compat-wireless-2.6.39-1.tar.bz2
ビルドしてインストールします。
/media/mainUSB8G/wirelessLAN/compat-wireless-2.6.39-1$ sudo ./scripts/driver-select zd1211rw
/media/mainUSB8G/wirelessLAN/compat-wireless-2.6.39-1$ sudo make
/media/mainUSB8G/wirelessLAN/compat-wireless-2.6.39-1$ sudo make install
特に何も問題なく、インストール完了しました。
この時、最後のメッセージに注意しましょうと書かれていました。
Now run:
sudo make unload to unload all: wireless, bluetooth and ethernet modules
sudo make wlunload to unload wireless modules
sudo make btunload to unload bluetooth modules
Run sudo modprobe driver-name to load your desired driver.
If unsure reboot.
この後に実行すべきことが書かれているのですね。
/media/mainUSB8G/wirelessLAN/compat-wireless-2.6.39-1$ sudo make unload
/media/mainUSB8G/wirelessLAN/compat-wireless-2.6.39-1$ sudo modprobe -l zd1211rw
これが簡単にできたのも、きちんとカーネルソースがあるからでしょう。
hostapdの設定は、hostapd.confというファイルに記載します。
重要だと思われる設定は以下となると思います。
interface=wlan0
driver=nl80211
hw_mode=g
channel=1
ssid=test ←−−−−お好きな名称で
auth_algs=3
wep_default_key=1
wep_key1="12345"
wpa=3
wpa_passphrase=testtest ←8文字以上63文字以下
wpa_key_mgmt=WPA-PSK WPA-EAP
wpa_pairwise=TKIP CCMP
auth_algs以降は、お好みで設定したらよいかと思います。ここは、これから勉強です。
/etc/hostapdの下に格納しておけば、良いと思われます。
2. DHCPD
参考にしているサイトでは、openSUSE に入っている標準のdhcpdパッケージがうまく動いているということが記載されていました。
openSUSEって何?と思って調べたところ、Linuxのディストリビューションの1つということ。でも私はDebianです。
試行錯誤しましたが、dhcp3-serverをインストールしました。(最初、hdcpをインストールしようとしたら、自動的にudhcpdが選択されインストールされましたが、うまく使えませんでした)
ここhttp://d.hatena.ne.jp/hoge-maru/20110326/1301155960 にならって、dhcp3-serverをインストールします。
/etc$ sudo aptitude install dhcp3-server
以下の新規パッケージがインストールされます:
dhcp3-server isc-dhcp-server
設定は、/etc/dhcp/dhcpd.confファイルを修正していきます。
元記事では、以下のようにすればよいとのこと。
option domain-name-servers 192.168.1.1;
default-lease-time 600;
max-lease-time 7200;
ddns-update-style none; ddns-updates off;
subnet 192.168.0.0 netmask 255.255.255.0 {
range 192.168.0.200 192.168.0.229;
option subnet-mask 255.255.255.0;
option broadcast-address 192.168.0.255;
option routers 192.168.0.1;
}
これを参考に、DNSの設定の所と、サブネットアドレスの部分をデフォルトのファイルから変更しました。
option domain-name-servers 192.168.1.1;
subnet 10.0.0.0 netmask 255.255.255.0 {
range 10.0.0.32 10.0.0.254;
option routers 10.0.0.1;
}
3. iptablesで、NAT(Network Address Translation) rules
説明が書かれているだけで、よく理解できていません。
恐らく、iptablesによって、NAT(IPマスカレード)、つまり、無線LANで接続している機器のIPアドレスをインタネットに接続させる設定を行うのでしょう。
ルールは、次項のスクリプトを参照のこと。
4. アクセスポイントをスタート・ストップさせるためのスクリプト
さて、いよいよ、アクセスポイントとして動作させるスクリプトの設定です。
まず、適当なファイル名で、コピーします。accesspointというファイル名にしました。
変更箇所ですが、以下となります。
- プログラム(iptables、hostapd)の格納場所は、実際の格納場所を指すように変更
- INT_ADDR=10.0.0.1
- killprocというのが、Debianにはないようなので、killallに変更 (4ヶ所)
- $DHCPD -cf /etc/dhcp/dhcpd.conf $NET_INT 設定ファイル位置の違い
- $HOSTAPD -B /etc/hostapd/hostapd.conf 同上
準備が整いましたので、いよいよこのスクリプトを起動します。
/etc$
sudo ./accesspoint start
Starting AP mode for wlan0 at address 10.0.0.1
hostapd: no process found
dhcpd: no process found
touch: cannot touch `/var/lib/dhcp/db/dhcpd.leases': そのようなファイルやディレクトリはあ りません
Internet Systems Consortium DHCP Server 4.1.1-P1
Copyright 2004-2010 Internet Systems Consortium.
All rights reserved.
For info, please visit
https://www.isc.org/software/dhcp/
Wrote 1 leases to leases file.
Listening on LPF/wlan0/00:22:cf:**:**:**/10.0.0.0/24
Sending on LPF/wlan0/00:22:cf:**:**:**/10.0.0.0/24
Sending on Socket/fallback/fallback-net
Configuration file: /etc/hostapd/hostapd.conf
Using interface wlan0 with hwaddr 00:22:cf:**:**:** and ssid 'test'
まだ、ワーニングメッセージが出ていますが、この状態で、PalmTXでは、インタネットへのアクセスができるようになりました。
時間は掛かりましたが、何とか無線LANアクセスポイント化に成功ということで、今日はここまで。
まだ、上記ワーニングの回避やら、ノートPCではうまくつながらないとか、研究中です。