2018年10月30日火曜日

【RaspberryPi】Wifiのアクセスポイントモード化とか

最近は8月とか9月とかよりマシですねー。
ようやっと仕事の方も一段落ついて、
RaspberryPiをちょっと触ったりできる…。

そんなこんなでちょっと間が空いちゃったんですけどね、
久しぶりにRaspberryPiです。

今回はずーっとハマってたアクセスポイント化についてのアレやコレや。





で、アクセスポイント化ってなんだよ?って感じですが、
アクセスポイント化ってのはルーターみたいな(?)感じにすることです。
(語彙力不足)



XLinkとか使用した人は分かるかもしれないですが、
そこから無線を発した状態にできて、携帯とかをつなぐことが出来るんですね。
PSPでモンハンやってた時はこのアドホックモードとかで
遠隔地にいる人と協力プレイ出来たりしましたね。(懐かしい)

んで、RaspberryPiでそれができると何がうれしいのかっていうと、
それはちょっとよくわかってないんですが、まあ、
Wifiルーターみたいなことが出来るのと、
有線LANが繋げないような場所でセンサー情報とかを携帯に送ったり(?)とかは
出来そうですね。出来そうじゃない?


そういったアクセスポイント化(以下AP化)の方法があることは分かっていたんですが、
これまで正しい方法が分かっておらず、上手くつながらなかったり、
AP化したらWifiの通常モードに戻せなくなったりとか、さんざんな状態でした。
今回ようやっとマシな方法が分かったのでまとめておきたいと思うわけです。


というわけで分かった方法を以下に書いていこうと思います。



1.RaspberryPiのアップデート

いつものですね。
インストールしたりするので初めにアップデートしておきます。

sudo apt-get update


2.hostapdのインストール

アクセスポイントを使用できるようにhostapdをインストールします。
ここでインストールした奴は正確には使わないのですが、
ひな形を使用するために一旦インストールします。


sudo apt-get install hostapd



3.固定IP化を行う

RaspberryPiのIPアドレスを固定化します。
「/etc/network/interfaces」以下のファイルを編集するんですが、
バージョンが新しくなって以前と少し扱いが変わったらしく、
他サイトでの方法でうまくいかず詰まりポイントになってました。

「etc/network/interfaces.d/hoge」を新規作成して、編集します。
赤文字のアドレスは任意に設定してください。

allow-hotplug wlan0
iface wlan0 inet static
address 192.168.X.Y
netmask 255.255.255.0


4.hostapdの設定を行う

インストールしたhostapdの設定ファイルを編集します。
ひな形のファイルがあるので、それを使用して設定を追記します。

cd /etc/hostapd
sudo cp /usr/share/doc/hostapd/examples/hostapd.conf.gz
sudo gzip -d hostapd.conf.gz

設定ファイル「hostapd.conf」を編集します。
アクセスポイントの設定を行います。
ssidはアクセスポイント名、passphraseはパスワードに相当します。
channelは他のWifi機器と干渉しないチャンネルを割り当てるといいらしいです。
(細かい設定が分かっていないのでそこは勉強中)

interface=wlan0
driver=nl80211
ssid=4009
hw_mode=g
channel=6
macaddr_acl=0
auth_algs=1
ignore_broadcast_ssid=0
wpa=2
wpa_passphrase=12345678
wpa_key_mgmt=WPA-PSK
wpa_pairwise=TKIP
rsn_pairwise=CCMP

何気に打ち間違いが多発して詰まりポイントと化す場所でした。
要注意。



4.hostapdの再インストールを行う

インストールしたhostapdなのですが、このバージョンは上手く動作しないらしいです。
(実際上手くいかなかった。v2.3のhostapdがRPiでうまく動作しないみたいです)

なので、最新版を外部から取得して再インストールします。

cd
wget https://w1.fi/releases/hostapd-2.6.tar.gz
tar zxvf hostapd-2.6.tar.gz


必要なパッケージをインストールしてmakeを実行します。

sudo apt-get install libnl-genl-3-dev libssl-dev
cd hostapd-2.6/hostapd
cp defconfig.config
echo CONFIG_LIBNL32=y >> .config
make

makeが終了したらコンパイルし、できたパッケージを既存のhostapdと差し替えます。

sudo mv /usr/sbin/hostapd /usr/sbin/hostapd_v2.3
sudo cp hostapd /usr/sbin



5.isc-dhcp-serverのインストールを行う

アクセスポイント化の際に、サーバーとして動作するよう
isc-dhcp-serverをインストールします。


sudo apt-get install isc-dhcp-server


6.DHCP設定の編集
「/etc/dhcp/dhcpcd.conf」を編集します。

以下の部分をコメントアウトします

#option domain-name ...
#option domain-name-servers ...


以下の部分のコメントを外し、有効にします。

authoritative


ファイルの末尾に追加します。
赤文字の部分は「network/interfaces.d/hoge」のIP固定化した時の設定と
対応する形にしないとダメみたいです。

ping-check true;
subnet 192.168.X.0 netmask 255.255.255.0 {
    option broadcast-address 192.168.X.255;
    range 192.168.X.A 192.168.X.B;
}


最後に「/etc/default/isc-dhcp-server」を編集します。

INTERFACESv4="wlan0"


ここまで設定が完了したらネットワークを再有効化します。

sudo ifconfig wlan0 down
sudo ifconfig wlan0 up



7.DHCPサーバーの起動

最後にDHCPサーバーを立ち上げます。
これでアクセスポイントモードで動作し、携帯等から接続できるようになります。
RaspberryPiが優先LANでネットワークに接続されていれば、
RaspberryPiとWifi接続した携帯でGoogle等を見ることが出来ると思います。
また、Tomcat等でRaspberryPi上に公開されているページがあれば
そのページを見ることもできると思います。


sudo /etc/init.d/isc-dhcp-server start
sudo /usr/sbin/hostapd /etc/hostapd/hostapd.conf



今日はここまで
結構設定する項目がたくさんあって、
どっかで間違えたりするとネットワークにつながらなくなったりするので大変です。
そういう時は冷静に設定を見直していかないといけないんだろうなあ。


0 件のコメント:

コメントを投稿