16
2016

Raspberry Pi 3の有線LAN⇔無線LANブリッジ化

CATEGORYPC
Raspberry Pi 3自宅鯖のこれまで全然活用してなかった無線LAN機能を使って有線LAN⇔無線LANブリッジを構築してみましたというお話&設定方法メモ。
→ 2016/10/20追記、後述のMACアドレスの問題発覚のため自宅鯖では一旦無効化。このページは一応動作するものの参考までに。。。

発端は、新しくUSB無線LANアダプターを買ったら、無線LANルーターとの相性問題?なのかトラブルが頻発したため、試せるアクセスポイント (AP) が欲しいなと思ったこと。

台所片隅のサーバーラックもどき
台所の片隅のルーターとRaspberry Pi 3

今の自宅はワンルーム的な1Kだが、配線引き込みの都合上、玄関側にルーター (PR-500KI) があり、そこからLANケーブルがキッチンの隅や冷蔵庫の裏を通って部屋の反対側のデスクトップPCに延びている。
当然ながらケーブルは撤去したいと思っており、先週900円ぐらいで売ってた格安のアダプター (WN-G150UMK) を買って無線化完!…とやったところ、繋がらない&繋がっても頻繁に切れるという問題が発生。
そういやRaspberry Pi 3も無線LAN使えるよな?これでAPとか作って相性問題か調査できないかな?と調べて設定してみた。
で、無事できたしネットも調子よさそうなので、以下手順とか書いておく。


まず、今回参考にさせて頂いたのはこの辺のページ。感謝。
次に、Raspberry Pi 3のブリッジ化後のネットワーク構成図を示しておく。今回は元々あるルーターの補助として使うので、無線LANルーターではなくブリッジ…別の言い方だとイーサネットコンバーターとか無線LAN/有線LANコンバーター(?)にする。なので、DHCPサーバーにはしない。ググるとDHCPサーバー使う例も出てくるので、ルーターにする場合はそちらを参照で。
Raspberry Pi 3のIPアドレスも、Pi3側には固定IPで設定しないで、ルータのDHCP設定にMACアドレス指定して払出IP固定して、動的に設定させる(一元管理のため)。

Raspberry Pi 3ブリッジ化後の自宅ネットワーク構成

OSはRaspbian。まずapt-getで、ブリッジを構成するための bridge-utils とAPになるための hostapd をインストールする。

次に /etc/network/interfaceswlan0(無線LANのI/F)の wpa-conf を↓みたいにコメントアウトするか消して、クライアントとしての無線LANを無効化する。
(使ってなかったらいらない?使ってたからやった。)
source-directory /etc/network/interfaces.d

auto lo
iface lo inet loopback

iface eth0 inet manual

allow-hotplug wlan0
iface wlan0 inet manual
#wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf

allow-hotplug wlan1
iface wlan1 inet manual
wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf

次に hostapd の設定ファイル /etc/hostapd/hostapd.conf をこんな感じに作成する。hostapd.conf の設定の意味はこちらを参考にした。これでWPA2オンリーで11g/nになってるはず。
普通の家庭なら他は、SSIDとパスフレーズ、それに使用チャンネルだけ気にすれば大丈夫かなと思う。
interface=wlan0
bridge=br0
driver=nl80211
ssid=ここにSSID
country_code=JP
ieee80211d=1
hw_mode=g
channel=13
auth_algs=1
ieee80211n=1
wpa=2
wpa_passphrase=ここにパスフレーズ
wpa_key_mgmt=WPA-PSK
wpa_pairwise=CCMP
rsn_pairwise=CCMP

次いで hostapd をサービスとして起動させるために、/etc/default/hostapd に今作った設定ファイルを指定する。
DAEMON_CONF="/etc/hostapd/hostapd.conf"

最後に、IPフォワードを有効にするコマンドと、ブリッジを作成するコマンドをOS起動時に毎回実行する必要があるので、/etc/rc.local に↓みたいに echo から dhclient までの行を追加する。
wlan0 については hostapd 起動時に追加されるので不要みたい。むしろ足したらエラーになった。)
#!/bin/sh -e
_IP=$(hostname -I) || true
if [ "$_IP" ]; then
printf "My IP address is %s\n" "$_IP"
fi

echo 1 > /proc/sys/net/ipv4/ip_forward

brctl addbr br0
brctl addif br0 eth0
dhclient br0

exit 0

設定はこれだけ。後は再起動すれば普通にブリッジとして動作するという。便利な世の中になったもんだ(感動
ただ、何点か注意点と変な現象に遭遇したので、書いておく。
  • ネットワーク設定を変更するので、何かミスってると繋がらなくなる可能性あり。
    SSHオンリーだと詰むので注意。
  • (起動順の関係から?)この手順だとブリッジのMACアドレスは wlan0 のものになる。
    eth0 のつもりで設定していると、IPが変わってしまうので注意。

    bridge_hw?とかの設定を入れないと、MACアドレスは変わってしまう模様。
  • 設定後、何故かブリッジ側APから繋いだ場合だけ、SSHが切れるという問題が発生。
    どうも起きないときもあれば再発するときもあったりで…謎。これだけはいまだ不便(><

以上こんなところ。分かってしまえば割と簡単だけど、分かるまでがちょっと面倒くさかった。
まだ数日しか使ってないけど、現状は最後の問題を除けば落ち着いているし、やっぱり相性問題だったのか繋がらない不具合も解消したしで一応めでたしめでたし。ということで。


PS. ネットワーク構成図はdraw.ioというサイトで作成。初めて使ったけど、インストール不要だし、なにこれめっちゃ便利。

2016/10/18追記、(どっちのルータでも同じなのでラズパイのせいじゃないと思うけど)PC立ち上げ直後とか無線LANがうまく繋がらないことがある(インターネットなしとか言われる)ので、有線に戻した…繋がったら安定してたのに。結局子機が駄目な子でFA?がふっ(吐血

2016/10/20追記、この設定だけだとMACアドレスがeth0とwlan0どっちになるか運っぽいことが判明。bridge_hwという設定があるみたいなのだけど、いまいちやり方が分かんなかったので、一旦AP運用停止。そもそも動機が既に消滅してるからねorz
スポンサーサイト

Tag: Linux

0 Comments

Leave a comment