Raspberry PIで無線AP+ルーターを作ってみた
(注)この記事は2015年1月1日に旧ブログに投稿したものです。今でも有効な内容かは不明・・・
2015年1発目の記事は「Raspberry PIで無線AP+ルーターを作ってみた」です。
訳あって毎年恒例の年越し新年会にラズパイを持って行くことになり、じゃあ折角なんで無線LANからでも使えるようにしておこうと思ったわけです。
というわけで大晦日にお買い物。
IEEE802.11n/g/b準拠 150Mbps(規格値)無線LANアダプター(超小型モデル)WN-G150UMシリーズ
ラズベリーパイに挿したら自動認識してくれました。
ネットワークの設定
WPAによる暗号化通信の設定をします。
wpa_passphrase [SSID] [Key]
コマンド実行結果
network={
ssid="[SSID]"
#psk="[Key]"
psk=*******************************
}
出力された文字列を基にして足りない項目を補完し、/etc/wpa_supplicant/wpa_supplicant.conf ファイルに追記します。
追記後のファイルはこんな感じ。
/etc/wpa_supplicant/wpa_supplicant.conf
ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
update_config=1
network={
ssid="****"
psk=*************
proto=RSN
key_mgmt=WPA-PSK
pairwise=CCMP
auth_alg=OPEN
}
ちなみに、/etc/network/interfaces ファイルの内容は以下の通り。
自動認識したときに勝手に追記してくれたようです。
X画面で色々いじったりしてからの内容なので、挿した直後とは違うかも。。。
/etc/network/interfaces
auto lo
iface lo inet loopback
iface eth0 inet dhcp
allow-hotplug wlan0
iface wlan0 inet manual
wpa-roam /etc/wpa_supplicant/wpa_supplicant.conf
iface default inet dhcp
最後に、ネットワークを再起動すれば、無線LANでアクセスができるようになりました。
sudo service networking restart
ちなみに、X画面上からも設定できます。
そっちのほうがはるかに楽。
無線APの作成
では、いよいよ無線APを作ります。
まず、hostapdをインストール
sudo apt-get install hostapd
設定ファイルのサンプルをコピーして、編集します。
sudo zcat /usr/share/doc/hostapd/examples/hostapd.conf.gz > /etc/hostapd/hostapd.conf
色々と沢山設定があるみたいですが、コメントがしっかり書いてあるので読めば何とかなりそうです。
とりあえず、自分は以下の行を編集(&アンコメント)しました。
/etc/hostapd/hostapd.conf
ssid=RaspberryPi
wpa=2
wpa_passphrase=**********
wpa_key_mgmt=WPA-PSK
rsn_pairwise=CCMP
デーモン起動時に設定ファイルを読み込むように、/etc/default/hostapd ファイルを編集します。
変更した行は以下の通り。
/etc/default/hostapd
DAEMON_CONF="/etc/hostapd/hostapd.conf"
まずは手動でhostapdを起動してみます。
sudo hostapd /etc/hostapd/hostapd.conf
Configuration file: /etc/hostapd/hostapd.conf nl80211: 'nl80211' generic netlink not found Failed to initialize driver 'nl80211' rmdir[ctrl_interface]: No such file or directory
うまく動きませんorz
困った時のネットで調べてみたら、どうやらドライバーが対応していないそうで。。。
“nl80211 not found”
という出力が出た場合、”driver=nl80211″は使えません。”driver=rtl871xdrv”を使いましょう。
というわけで、バイナリを差し替えます。
wget http://www.adafruit.com/downloads/adafruit_hostapd.zip
unzip adafruit_hostapd.zip
sudo mv /usr/sbin/hostapd /usr/sbin/hostapd.ORIG
sudo mv hostapd /usr/sbin
sudo chmod 755 /usr/sbin/hostapd
/etc/hostapd/hostapd.conf ファイルも修正します。
/etc/hostapd/hostapd.conf
driver=rtl871xdrv
もう一度起動。
sudo hostapd /etc/hostapd/hostapd.conf
無事に起動できました。
アンドロイド端末からもAP名がちゃんと表示されます。
DHCPサーバの作成
続いて、DHCPサーバーを作成します。
sudo apt-get install isc-dhcp-server
そしたら…
[FAIL] Starting ISC DHCP server: dhcpd[....] check syslog for diagnostics. ... failed!
failed!
いきなり起動しようとしてエラー吐きました。
まだ何も設定していないので当然っちゃ当然。
というわけで、設定ファイルを編集します。
変更したのは以下の通り。
/etc/dhcp/dhcpd.conf
#option domain-name "example.org"; #option domain-name-servers ns1.example.org, ns2.example.org;
(上記2行はコメントアウト)authoritative;
(上記1行はアンコメントアウト)subnet 192.168.2.0 netmask 255.255.255.0 { range 192.168.2.101 192.168.2.110; option broadcast-address 192.168.2.255; default-lease-time 600; max-lease-time 7200; option routers 192.168.2.1; option domain-name "local"; option domain-name-servers 8.8.8.8, 8.8.4.4; }
(上記を追加。アドレス等は適当に置き換えてください)
DHCPサーバに使用するインタフェース(今回の場合、無線LAN)を指定します。
/etc/default/isc-dhcp-server
INTERFACES="wlan0"
無線LANインタフェースに固定IPアドレスを割り当てます。
(もともと設定が書いてあった箇所はコメントアウト)
/etc/network/interfaces
auto lo
iface lo inet loopback
iface eth0 inet dhcp
allow-hotplug wlan0
#iface wlan0 inet manual
#wpa-roam /etc/wpa_supplicant/wpa_supplicant.conf
iface wlan0 inet static
address 192.168.2.1
netmask 255.255.255.0
iface default inet dhcp
以上で設定は完了です。
デモ
当日のデモはこんな感じでやってみました。