自宅には Buffalo の無線 LAN ルーターがあって,それをアクセスポイント (以降 AP) として使っているのですが,とある理由でもう 1 つ別の AP を置こうということになり,丁度余っていた Raspberry Pi を AP に仕立てる事にしました.
同じ内容を扱うブログエントリは検索すると多数出てきますので,これは単なる個人用メモ代わりに近いです.検索で出てくる多くの内容は無線 LAN 側にアドレスを割り当てて iptables で NAT するパターンが多いですが,自宅だと既に NAT がかかっている事が多く,さらに NAT する意味がウチで使う限りはあまり感じられないので,単なるブリッジとして設定してみました.
USB 無線 LAN 子機
選択した無線 LAN 子機は Buffalo の WLI-UC-GNM2T というものでした.これだと AP として使うソフトの hostapd が対応している模様なので (WLI-UC-GNM2 というパッケージだけ違うモデルもあります.WLI-UC-GNM は似てるけど使ってるチップが違う模様)
Raspberry Pi 側の準備
- 普通に Raspbian をインストールします
- 追加でパッケージをインストールします
$ sudo apt-get install bridge-utils hostapd
- /etc/network/interfaces の設定
auto lo iface lo inet loopback
iface eth0 inet manual
allow-hotplug wlan0 iface wlan0 inet manual
auto br0 iface br0 inet dhcp bridge_ports eth0- ブリッジ br0 を作成し,DHCP でアドレスを取得します.eth0, wlan0 を manual にして,eth0 を br0 にアタッチします.wlan0 は後ほど hostapd で br0 にアタッチする設定をします
hostapd の設定
パッケージに含まれない設定ファイルを /etc/hostapd/hostapd.conf に作成します.あまり意味分かってません.サンプルファイルを元に設定しました.
bridge=br0
で br0 にアタッチしていますwmm_*
という設定は検索して出てくる設定例にはないことが多いですが,ないと問題が起きるという事が書いてある所もあったのでサンプルのものそのままで設定しました- WPA2 の所はこんな感じで良いのかなあと.
# interface interface=wlan0 bridge=br0 # driver driver=nl80211 # logger logger_syslog=-1 logger_syslog_level=2 logger_stdout=-1 logger_stdout_level=2 # files dump_file=/tmp/hostapd.dump ctrl_interface=/var/run/hostapd ctrl_interface_group=0 ##### IEEE 802.11 related configuration ####################################### ssid=黄巾のLAN country_code=JP ieee80211d=1 hw_mode=g channel=1 beacon_int=100 dtim_period=2 max_num_sta=255 rts_threshold=2347 fragm_threshold=2346 macaddr_acl=0 #accept_mac_file=/etc/hostapd.accept #deny_mac_file=/etc/hostapd.deny auth_algs=3 ignore_broadcast_ssid=0 wmm_enabled=1 # Low priority / AC_BK = background wmm_ac_bk_cwmin=4 wmm_ac_bk_cwmax=10 wmm_ac_bk_aifs=7 wmm_ac_bk_txop_limit=0 wmm_ac_bk_acm=0 # Normal priority / AC_BE = best effort wmm_ac_be_aifs=3 wmm_ac_be_cwmin=4 wmm_ac_be_cwmax=10 wmm_ac_be_txop_limit=0 wmm_ac_be_acm=0 # High priority / AC_VI = video wmm_ac_vi_aifs=2 wmm_ac_vi_cwmin=3 wmm_ac_vi_cwmax=4 wmm_ac_vi_txop_limit=94 wmm_ac_vi_acm=0 # Highest priority / AC_VO = voice wmm_ac_vo_aifs=2 wmm_ac_vo_cwmin=2 wmm_ac_vo_cwmax=3 wmm_ac_vo_txop_limit=47 wmm_ac_vo_acm=0 wpa=2 wpa_passphrase=hogehoge wpa_key_mgmt=WPA-PSK wpa_pairwise=CCMP
サービスを起動させると
root@raspberrypi:/etc/cron.d# brctl show bridge name bridge id STP enabled interfaces br0 8000.b0c74546d440 no eth0 wlan0
こんな感じで br0 にアタッチされてます.Android 4.1, iOS 7, Mac OS 10.9 で接続できました.