「SIMカード+4GPi」でラズパイをモバイルWiFiルーターにする


モバイルWiFiルーターとは?

小型で軽量な通信端末のことであり、一例を挙げるとポケットWiFiです。

本記事は「4GPi+SIMカード+ラズベリーパイ」でモバイルWiFiルーターとして
データ通信する手順を紹介します。

4GPiとは?

4GPi(フォージーパイ)は、ラズベリーパイ専用に開発された4G(LTE)通信モジュールです。

以下サイトで4GPiの使用例を紹介しております。
・ メカトラックス様公式サイト(受託開発・製造)
・ Stretch 版 4GPi のイメージから Buster へのアップグレード~4GPiを使うメリット~

必要な物

◎ ラズベリーパイ用4G(LTE)通信モジュール「4GPi」
◎ ACアダプタ(12V 2A) 
◎ 標準SIM(私の場合は"NanoSIM" + "標準SIMへの変換アダプタ"で対応)
◎ ラズパイ
◎ パソコン
◎ MicroSDカード

取り付け手順・機器の画像・補足事項はStretch 版 4GPi のイメージから Buster へのアップグレード~必要な物~で紹介しておりますのでそちらを参照ください!

「SIMカード+4GPi」でラズパイをモバイルWiFiルーターにする

下準備

OSのダウンロード

4GPiインストール済のbuster版イメージをダウンロードします。

OSイメージをMicroSDカードへ書き込み

今回は有名な書き込みソフト「Etcher」を使用しました。
書き込み手順はこちらのサイトを参照

パソコンからssh接続

ブラウザの表示をコピペしたいので、パソコンからssh接続します。
もちろんラズパイ直接入力でも問題ありません。

ssh pi@IPアドレス

のちの手順でwlan0をアクセスポイントとして使用するためラズパイは有線LANでつなぐことをお勧めします。
有線LANの場合、IPアドレスはifconfigコマンドで表示されるeth0のinetを入力してください。

ラズパイのパッケージを更新

sudo apt-get update
sudo apt-get upgrade

SIMカード情報を登録

項目 Y!Moblieの場合
APN plus.acs.jp
ユーザー ym
パスワード ym

Y!Moblieの場合は

sudo nmcli con add type gsm ifname "*" con-name ymobile apn plus.acs.jp user ym password ym

接続できているかifconfigコマンドで確認します。

ifconfig wwan0

inetにIPアドレスが表示されていればokです。

wlan0を静的IPにする

アクセスポイントにするにはワイヤレスポートに割り当てられた静的IPアドレスが必要となります。

まずは設定ファイルを変更します。

sudo vi /etc/dhcpcd.conf

dhcpcd.conf内でwlan0に静的IP(192.168.4.1)を設定します。
また、wpa_supplicantの設定ファイルを読み込まないようにします。

ファイルの最終行に以下の3行を追加してください。

interface wlan0
    static ip_address=192.168.4.1/24
    nohook wpa_supplicant

そして、変更した設定ファイルにて再起動します。

sudo service dhcpcd restart

DHCPサーバーの設定(IPアドレスの自動割り当て)

DHCP(Dynamic Host Configuration Protocol)を設定します。
DHCPとは「コンピュータがネットワークに接続する際に必要な設定情報を自動的に割り当てる仕組み」です。

まずはdnsmasqをインストールします。

sudo apt install dnsmasq

既存のファイルは使用しませんので、リネームして別ファイルとして保存しておきましょう。

sudo mv /etc/dnsmasq.conf /etc/dnsmasq.conf.orig

新しくファイルを新規作成します。

sudo vi /etc/dnsmasq.conf

中身に以下を2行を記載します。

interface=wlan0      
dhcp-range=192.168.4.2,192.168.4.20,255.255.255.0,24h

24時間のリース時間で、192.168.4.2から192.168.4.20のIPアドレスを提供します。

dnsmasqの更新された設定ファイルにて再起動します。

sudo service dnsmasq restart

起動状態をチェックします。

sudo systemctl status dnsmasq

以下のように「Active:」の後にactive(runnnig)と記載されていればokです。

Active: active (running) since Mon 2019-09-16 16:27:48 JST; 2min 8s ago

ラズパイをアクセスポイントにする

アクセスポイントを設定するパッケージ「hostapd」をインストールします。

sudo apt-get install hostapd

設定ファイルを新規作成します。

sudo vi /etc/hostapd/hostapd.conf

次に、以下内容を記載します。
「ssid」と「wpa_passphrase」は好きな値を設定してください。

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

「ssid」がWiFi接続の際に表示される名称でパスワードが「wpa_passphrase」です。

次にこの構成ファイルの場所をシステムに伝える必要があります。

sudo vi /etc/default/hostapd
DAEMON_CONF="/etc/hostapd/hostapd.conf"

起動するファイル名は、先ほどの設定ファイル「hostapd.conf」のフルパスを入力します。

hostapdを以下手順で起動します。

sudo systemctl unmask hostapd
sudo systemctl enable hostapd
sudo systemctl start hostapd

起動状態をチェックします。

sudo systemctl status hostapd

以下のように「Active:」の後にactive(runnnig)と記載されていればokです。

Active: active (running) since Mon 2019-09-16 16:27:48 JST; 2min 8s ago

wlan0にアクセスした端末をSIMカードと通信する設定

sysctl.confを編集します。

sudo vi /etc/sysctl.conf

以下のコメントアウトを外します。

net.ipv4.ip_forward=1

wwan0のマスカレードを追加します。

sudo iptables -t nat -A  POSTROUTING -o wwan0 -j MASQUERADE

iptablesのルールを保存します。

sudo sh -c "iptables-save > /etc/iptables.ipv4.nat"

ブート時にこれらのルールをインストールします。


sudo vi /etc/rc.local

exit 0の上の行に次のコマンドを追加します。

iptables-restore < /etc/iptables.ipv4.nat

ラズパイを再起動します。

sudo reboot

ここで有線LANを抜きましょう。
私の場合、有線LANが接続されたままだと「RPiHotSpot」に接続できますが、
Webサイトを読み込むことができませんでした。(干渉?)

スマホでWiFiとして設定できるか確認しましょう。

以上で設定完了です。

おまけ(スピードチェック)

スマートフォン内にSIMカードを挿入してデータ通信した場合は19.0Mbps、
4GPiからスマートフォンにWiFiとしてデータ通信した場合は12.0Mbpsでした。

スマートフォンから直接SIMを読み込むほうが少し早かったです。
4GPiの速度はパラボラアンテナを作ると少しは上がるかもしれません。

参考サイト