ラズパイ+4GPiでLTEモバイルルータを作る


今回はラズパイ+4GPiでLTEモバイルルータを作ってみます。

用意したもの

  • Raspberry Pi 3 Model B (または Raspberry Pi 4 Model B)
  • 4GPi(ラズパイ用4G LTE通信モジュール)
  • SIMカード(OCNモバイルONE)
  • ACアダプタ(Raspberry Pi+4GPiの電力供給用。12V2A。)
  • Micro SDカード
  • PC(Windows10)
  • UART-USB変換アダプタ(コンソール接続用)

LTEモバイルルータ作成手順

①前準備

- Raspberry Pi ImagerでSDカードにOSイメージを書き込み

今回は最新の4GPiのOSイメージ(4gpi-buster-lite-20210327.img)を使用しました。
Raspberry Pi Imagerの使い方については下の記事で紹介しています。

- ラズパイに4GPi(+SIMカード)を接続


こんな感じでラズパイの上に4GPiを積みます。
4GPiに電力供給するとピンヘッダ経由でラズパイにも電力供給されます。

- ラズパイ起動&ログイン

シリアルコンソールを使ってラズパイにログインします。4GPiのOSイメージは初期ログインパスワードが標準Raspberry Pi OSとは異なりますのでご注意ください(詳細はこちら)。

②ラズパイを4G(LTE)回線でインターネットに接続

コマンド一発で4G(LTE)通信ができるようになります(詳細はこちら)。

③ラズパイをアクセスポイント化

NetworkManager1を使ってラズパイをアクセスポイントにします。

そのためにまずWi-Fiのインターフェース(wlan0)をNetworkManagerで制御できるようにする必要があります。現状だと下のように"unmanaged"になっています。

pi@raspberrypi:~$ nmcli d | grep wlan0
wlan0     wifi      unmanaged  --

- dhcpcdを無効化

今回はNetworkManagerとの干渉を避けるためにdhcpcdを無効化します。

pi@raspberrypi:~$ sudo systemctl disable dhcpcd

- /etc/network/interfacesからwlan0の設定を削除

/etc/network/interfaces
# ..略

# コメントアウト
# allow-hotplug wlan0
# iface wlan0 inet manual
#     wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf

# ..略

OSを再起動して設定変更を反映します。

pi@raspberrypi:~$ sudo reboot

↓↓↓

pi@raspberrypi:~$ nmcli d | grep wlan0
wlan0     wifi      disconnected  --

wlan0の状態が"disconnected"に変わったことを確認します。

- アクセスポイント用のコネクションを作成

  • コネクション名: Hotspot
  • SSID: RPiAP
  • パスワード: password

とした場合のコマンド例です。

pi@raspberrypi:~$ sudo nmcli c add type wifi ifname wlan0 con-name Hotspot autoconnect yes ssid RPiAP
pi@raspberrypi:~$ sudo nmcli c mod Hotspot 802-11-wireless.mode ap 802-11-wireless.band bg
pi@raspberrypi:~$ sudo nmcli c mod Hotspot wifi-sec.key-mgmt wpa-psk wifi-sec.psk "password"

- wlan0に固定IPアドレスを設定

ここでは宅内LANのサブネットを192.168.2.0/24、ラズパイ(wlan0)のIPアドレスを192.168.2.1としました。

pi@raspberrypi:~$ sudo nmcli c mod Hotspot ipv4.addresses 192.168.2.1/24 ipv4.method manual
pi@raspberrypi:~$ sudo nmcli c up Hotspot

④ラズパイをDHCPサーバ化

- DHCPサーバ機能(dnsmasq)をインストール

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

pi@raspberrypi:~$ sudo apt install dnsmasq

dnsmasqの設定ファイルに設定を追記します。今回はIPアドレスの割り当て範囲を192.168.2.2~192.168.2.20、リース時間を24時間とします。

/etc/dnsmasq.conf
# ..略

interface=wlan0
dhcp-range=192.168.2.2,192.168.2.20,255.255.255.0,24h

dnsmasqを再起動して設定変更を反映します。

pi@raspberrypi:~$ sudo systemctl restart dnsmasq

⑤ラズパイをルータ化

ufw2を使って設定します。

- IPパケット転送設定

/etc/ufw/sysctl.confnet/ipv4/ip_forward=1のコメントを外します。

/etc/ufw/sysctl.conf
# ..略

net/ipv4/ip_forward=1

# ..略

/etc/default/ufwDEFAULT_FORWARD_POLICY"DROP"から"ACCEPT"に変更します。

/etc/default/ufw
# ..略

DEFAULT_FORWARD_POLICY="ACCEPT"

# ..略

- IPマスカレード(NAPT)設定

before.rulesにルールを追記します。

/etc/ufw/before.rules
# ..略

# NAT Table rules
*nat
:POSTROUTING ACCEPT [0:0]
-F
-A POSTROUTING -s 192.168.2.0/24 -o wwan0 -j MASQUERADE
COMMIT

- MSS クランプ設定

MSSを自動的に最適化する設定です。この設定は必ずしも必要ではありませんが、Path MTU Discoveryがうまく機能しない通信経路では特に有効です。

こちらの記事が詳しいです。

before.rulesにルールを追記します。

/etc/ufw/before.rules
# ..略

# MANGLE Table rules
*mangle
:FORWARD ACCEPT [0:0]
-F
-A FORWARD -p tcp --tcp-flags SYN,RST SYN -j TCPMSS --clamp-mss-to-pmtu
COMMIT

ufwの設定変更を反映します。

pi@raspberrypi:~$ sudo ufw reload

スマホでWi-Fi接続確認

できました。


  1. 4GPiのOSイメージはNetworkmanagerがインストール済です。 

  2. 4GPiのOSイメージはufwがインストール済です。