最短翌日発送!高速大容量のモバイルWi-Fiルーターの詳細はこちら
ガジェット全般

Raspberry Piで車載用のモバイルWi-Fiルーターを自作してみた

ラズパイで自作したモバイルWi-Fiルーター ガジェット全般

車載用のモバイルWi-Fiルーターをラズパイで自作したので、その作り方をまとめておきました。

今まで複数のモバイルWi-Fiルーターやホームルーターを車載してきましたが、どれもこれも今一つで。最終的にドラレコとして運用しているラズパイにUSBモデムを刺して、モバイルWi-Fiルーターとしても運用することにしました。

私のように既にラズパイを車載しているなら+3,000円程度で自作することが可能なので、Wi-Fi環境を整えたいなら新たにモバイルWi-Fiルーターを購入するよりも安価で済ませられておすすめです。

スポンサーリンク
スポンサーリンク

車載用のモバイルWi-Fiルーターをラズパイで自作するメリット

車載用のモバイルWi-Fiルーターをラズパイで自作するメリットは主に3つあります。

電源のON/OFFを車のエンジンと連動させられる

バッテリーを内蔵している一般的なモバイルWi-Fiルーターは、外部電源と繋いでも自動的に起動することはありません。

しかしラズパイはUSBで給電するだけで自動的に起動するので、電源のON/OFFを車のエンジンと連動させることができます。

車に乗るたびに電源ボタンを押す必要がなく、ラズパイで自作したモバイルWi-Fiルーターのほうが使い勝手が良いです。

Wi-Fiを搭載したUSB型データ通信端末を購入するよりも低価格で作れる

PIX-MT100やSi-L10のように、バッテリーを内蔵せずUSBで給電するだけで起動するUSB型データ通信端末も存在しますが、これらの機種は実勢価格が1万円を超えます。

市販品としては特に高過ぎるということはありませんが、中古のUSBモデムならイオシスでL-03Dあたりが3,000円程度で手に入りますし、ラズパイも安価なRaspberry Pi Zero WHなら2,000円程度で購入可能です。まあRaspberry Pi ZeroだとOTGケーブルが必要なので総費用は6,000円ほどでしょうか。

上位モデルのRaspberry Pi 3Bや3B+、4Bだと5,000円を超えてきますが、それでも市販品を購入するよりも安く済ませられるでしょう。

ちなみにカメラモジュールを搭載すればドライブレコーダーとしても使えます。ドラレコの作り方については以下の記事を参照してください。

Raspberry Pi Zeroで簡易ドライブレコーダーを自作する
Raspberry Pi Zero WHで簡易的なドライブレコーダーを自作してみました。 ドラレコは既製品でも安価なものなら1万円以下で手に入ります。しかしそんなに頻繁に運転するわけでもないですし、特別ドラレコが欲しいというわけではな...

WiMAX 2+のL01s/L02などホームルーターよりもコンパクト

中古という選択肢がアリなら、WiMAX 2+向けのホームルーター端末が安価で手に入りますし、コンセントから給電する必要があるものの電源をエンジンと連動させることも可能です。

ただホームルーター端末は無駄に大きくて場所を取るんですよね。本体だけでなく、ACアダプターも無駄に大きくて邪魔だったりしますし、さらにコンセントが搭載されていない車種ならインバーターも必要になります。

ラズパイならホームルーターのどの機種よりも小さいですし、電源も普通のUSBケーブルで済むのでこちらのほうが車載しやすいです。

ラズパイでモバイルWi-Fiルーターを作る方法

ラズパイにDHCPサーバーを設定する方法はいくつかありますが、私はdnsmasqを採用しました。

isc-dhcp-serverを採用している解説記事を多く見かけますが、こちらはどうも古いやり方のようで記事もかなり昔に書かれているものが多いです。

特にデメリットもないですし、isc-dhcp-serverよりもdnsmasqを使用することをおすすめします。

使用した物や環境について

Raspberry Pi 3BにRaspberry Pi OSをインストールして実装してみましたが、どうもWi-Fi周りがシビアのようで、既にWi-Fi接続の設定などを行っている状態だとDHCPサーバーが正常に起動しなかったり、アクセスポイントとしてさえ動作しなかったりすることがあります。

原因をしっかり調べて対処すれば実装可能だとは思いますが、かなり骨が折れるかもしれません。

上手くいかない場合はWi-Fi周りの設定をリセットするか、OSをクリーンインストールした状態で試してみてください。

ラズパイにUSBモデムの設定をする

最初にラズパイにUSBモデムを接続して、モバイルネットワークで通信可能な状態にしておきましょう。

設定方法についてはこちらの記事を参照してください。

Raspberry PiでUSBモデムのL-03Fを使用してLTEで通信する方法
車内でWi-Fiを利用するために当初はモバイルWi-FiルーターのFS030Wを車載してみましたが、電源がなかなかエンジンと連動してくれず。自動起動に失敗することが多いので、他の方法をいろいろと模索していたのですが。 ホームルーターの...

dhcpcdの設定

ここから先についてはITmediaの記事を参考にさせていただきました。大筋はこの記事の通りに設定すればOKです。

ラズパイを無線LANルーター化する 〜アクセスポイント編〜
家庭内で無線LANルータを使っている人は多いかと思います。今回はそのルーター機能をラズパイに持たせて、ラズパイを使った無線LANルーターの構築方法についてご紹介します。

ただこれだけだと上手くいかない部分があったり、改善したほうが良いと思われる部分もいくつかあったので、私が実際に行った設定を一通りまとめておきました。

まずDHCPサーバーとして払い出すIPアドレスなどの設定を行うために、dhcpcdの中身を編集します。

systemctlコマンドでdhcpcdを停止させましょう。

$ sudo systemctl stop dhcpcd

次にnanoなどのエディタを起動して/etc/dhcpcd.confを編集します。

$ sudo nano /etc/dhcpcd.conf

エディタを起動したら、アドレス空間を設定するために下記の2行を追記しましょう。

interface wlan0
static ip_address=192.168.2.1/24

アドレス空間は192.168.10.1/24や192.168.100.1/24などでも構いませんが、自宅のLANなど既存のアドレス空間と重複しないようにだけ注意してください。

編集が完了したらdhcpcdを再起動します。

$ sudo systemctl restart dhcpcd

hostapdの設定

dhcpcdの編集が完了したら、次はhostapdをインストールしてアクセスポイントとして使用するために必要な設定を行います。

$ sudo apt install hostapd

インストールが完了したらhostapdの設定を行っていきましょう。

hostapd.confを作成する

nanoなどのエディタで下記のディレクトリにhostapd.confを作成してください。

$ sudo nano /etc/hostapd/hostapd.conf

中身は以下の内容をコピペして必要な箇所だけ修正してもらえればOKです。

interface=wlan0
driver=nl80211
hw_mode=g
channel=1
macaddr_acl=0
ignore_broadcast_ssid=0
auth_algs=1
ieee80211ac=0
wmm_enabled=1
ieee80211d=1
country_code=JP
ieee80211h=1
local_pwr_constraint=3
spectrum_mgmt_required=1
wpa=2
wpa_key_mgmt=WPA-PSK
ssid=xxxxxxxx
wpa_passphrase=xxxxxxxx

hw_modeでは使用する無線LAN規格をIEEE 802.11gに指定しています。IEEE 802.11aを使用できる環境ならaという選択肢もありますが、車載するなら屋外では5GHz帯を利用できないのでgにしておきましょう。

channelは何でも良い気がします。使用する場所が固定されている混雑していないチャンネルに固定すべきですが車載するなら以下略。

macaddr_aclはMACアドレスによるフィルタリング、ignore_broadcast_ssidはステルスSSIDの設定ですが、これらはセキュリティ的に無意味だったりむしろ逆効果の場合さえあるので通常はOFFで良いでしょう。

wpaは無線LANの暗号化規格、WPAのバージョンを指定します。記事ではWPA1とWPA2の両方を利用できるようにwpa=3と指定されていますが、脆弱なWPA1に対応させる意味はないのでwpa=2にすべきでしょう。

ssidとwpa_passphraseは任意の文字列を設定してもらえればOKです。

hostapdのデフォルト動作ファイルを設定する

次にデフォルトで用意されているファイルを編集して、先ほど作成したhostapd.confを指定します。

具体的にはエディタで以下のファイルを開いてください。

$ sudo nano /etc/default/hostapd

#DAEMON_CONF=””とコメントアウトされている行を探して、以下のように書き換えます。

DAEMON_CONF="/etc/hostapd/hostapd.conf"

hostapdが正常に動作しているか確認する

この時点でhostapdの設定は完了していますが、systemctlコマンドで確認してみると恐らく正常に動作していません。

hostapdが正常に動作していない場合は、以下のコマンドを順番に実行して再起動させてみましょう。拡張子は省略しても大丈夫です。

$ sudo systemctl unmask hostapd.service
$ sudo systemctl enable hostapd.service
$ sudo systemctl start hostapd.service

hostapdの調子が悪い場合は大抵これで解決します。

ポートフォワーディングを設定する

最後にポートフォワーディングを有効化するために/etc/sysctl.confを編集します。

$ sudo nano /etc/sysctl.conf

#net.ipv4.ip_forward=1とコメントアウトされている行を探して、先頭の#を削除しましょう。

この時点で既にラズパイに設定しているSSIDが見えるようになっているはずなのですが、何故かWi-Fiを飛ばしてくれないことがあります。

raspi-configでWi-Fi関係の設定を弄ってみようとすると、could not communicate with wpa_supplicantというメッセージが表示されたのでこれを頼りにググってみたところ、解決法が分かりました。

https://saitetu.net/entry/2018/05/01/010428

以下のようにエディタを起動して当該のファイルを編集します。

$ sudo nano /etc/network/interfaces

そして下のほうに以下の3行を追記してください。

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

編集した内容を保存したら、systemctlコマンドでwpa_supplicant.serviceを有効化します。

$ sudo systemctl enable wpa_supplicant.service

これでラズパイを再起動すると無事SSIDが見えるようになりました。

ただSSIDが見えるようになってもDHCPサーバーが存在しないので、普通にWi-Fi接続しようとしてもIPアドレスが払い出されず接続に失敗してしまいます。まあ手動で静的IPアドレスを設定してやれば繋がらないことはありませんが。

そこで次にdnsmasqをインストールしてDHCPサーバーを設定します。

dnsmasqを設定する

まずは以下のコマンドでdnsmasqをインストールしましょう。

$ sudo apt install dnsmasq

インストールが完了したら設定ファイルを編集するためにsystemctlコマンドでdnsmasqを停止させておきます。

$ sudo systemctl stop dnsmasq.service

dnsmasq.confを新しく作成する

設定ファイルはそのまま編集しても構いませんが、不要な記述が非常に多いのでITmediaの記事にならって新しく作成しましょう。デフォルトのファイルは名前を変更してバックアップとして取っておきます。

$ sudo mv /etc/dnsmasq.conf /etc/dnsmasq.conf.def

バックアップを取れたら新しく作り直してください。

$ sudo nano /etc/dnsmasq.conf
interface=wlan0
dhcp-range=192.168.2.2,192.168.2.100,255.255.255.0,24h

IPアドレスの範囲はdhcpcd.confの設定に合わせましょう。

IPマスカレードを設定する

次にIPマスカレードの設定を行いますが、今回はUSBモデムをWANとして使用するので、パケットが出ていくインターフェースとしてeth0ではなくppp0を指定します。

また記事ではrc.localを使用する方法が解説されていますが、systemdが採用されているラズパイにおいてはこちらを使用することが推奨されているので、私はsystemdで読み込むように設定しました。

当初はrc.localの部分をそのままsystemdに置き換えて、iptables-restoreコマンドを直接systemdで実行させようとしたのですが、このやり方だと高確率で自動起動に失敗します。ラズパイ起動直後はiptables-restoreがあるディレクトリへアクセスすることが保証されていないせいでしょうか?

そこで教科書通りにoptディレクトリにシェルスクリプトを作成して、これを実行するサービスファイルをsystemdに登録したところ、無事安定してIPマスカレードの設定を読み込ませることに成功しました。

まずはシェルスクリプトを作成します。

$ sudo nano /opt/ipmasquerade.sh
#!/bin/sh

iptables -t nat -A POSTROUTING -o ppp0 -j MASQUERADE

作成したスクリプトに実行権限を与えましょう。

$ sudo chmod 0755 /opt/ipmasquerade.sh

次にスクリプトを実行するためのサービスファイルを作成します。

$ sudo nano /etc/systemd/system/ipmasquerade.service
[Unit]
Description = IP MASQUERADE

[Service]
ExecStart = /opt/ipmasquerade.sh
Type = oneshot
RemainAfterExit = yes

[Install]
WantedBy = multi-user.target

サービスファイルを作成したら有効化しましょう。

$ sudo systemctl enable ipmasquerade.service

これでrc.localに頼らなくてもsystemdでIPマスカレードの設定を自動的に読み込めるはずです。

ラズパイを再起動させて、モバイルWi-Fiルーターとして機能しているか確かめてみてください。

まとめ

ラズパイとUSBモデムがあれば、モバイルWi-Fiルーターを自作することが可能です。

この自作モバイルWi-Fiルーターなら車のエンジンと連動して自動的に起動してくれますし、普通のWiMAX 2+やPocket WiFiを車載するよりも使い勝手が優れています。

特に自作ドラレコなどで既にラズパイで車載しているなら、たった数千円の追加費用でモバイルWi-Fiルーター化することが可能です。

わざわざ市販品を購入するよりも安価で済ませられるので、興味がある方にはぜひ自作をおすすめします。

スポンサーリンク
スポンサーリンク
Ameをフォローする
モバイルWi-Fiルーターが今すぐ必要な方におすすめのサービス
Y!mobile Pocket WiFi

Y!mobileのモバイルWi-Fiルーター、Pocket WiFiはワイモバイルオンラインストアから購入すれば最短翌日に発送されます。

WiMAX 2+のようなキャッシュバック特典はありませんが、Y!mobileのPocket WiFiには契約期間の縛りがないので、不要になったらいつでもすぐ無料で解約することが可能です。

またSoftBank 4Gで1Gbps級の高速通信に対応しているモバイルWi-Fiルーターが格安に手に入ります。通信速度を重視するなら狙い目です。

楽天モバイル

楽天モバイルの料金プランはRakuten UN-LIMIT 2.0の一択しかありませんが、Aterm MP02LNやAterm MR05LN RWといったモバイルWi-Fiルーターも提供されています。楽天回線エリアならデータ通信が使い放題ですし、生活圏が対象エリアに入っているなら有力な選択肢です。しかも今ならプラン料金が1年間無料になります。

端末については楽天モバイルから販売されている機種でなくても、SIMフリーのモバイルWi-Fiルーターなら使用可能なものがあります。

おすすめはFS030W。楽天回線エリアとパートナーエリアの両方に対応しているため広範囲のエリアで通信可能です。またWi-Fiを2.4GHz帯と5GHz帯で同時に利用することが可能なので、固定回線として使用するのに最適です。

申し込む際に楽天モバイルID【2020040810791】を入力すると楽天ポイントが2,000P貰えます。

ガジェライブ!

コメント

タイトルとURLをコピーしました