LoginSignup
9

posted at

updated at

ラズパイ+4GPiでLTEルータを作る(Wi-Fi・有線LAN 両対応)

今回はラズパイ+4GPiを使用して、Wi-Fi端末・有線LAN端末の両方で使えるLTEルータを作ってみます。

概要図

用意するもの

準備

OSイメージ書き込み

今回は最新の4GPiのOSイメージ(4gpi-bullseye-lite-armhf-20221122.img.xz)を使用しました。
4GPiのOSイメージは公式のRaspberry Pi OSを元に作られたOSイメージで、必要なパッケージが含まれています。
OSイメージの書き込み方法については下の記事で紹介しています。

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

上の写真のような感じでラズパイの上に4GPiを接続します。
4GPiからGPIO経由でラズパイに電力供給されます。
ラズパイが起動したらログインします。

LTEルータ作成手順

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

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

pi@4gpiRT:~$ sudo nmcli con add type gsm ifname "*" con-name soracom apn soracom.io user sora password sora

接続に成功するとwwan0インターフェースにIPアドレスが自動で振られます。

pi@4gpiRT:~$ ip a show dev wwan0
4: wwan0: <POINTOPOINT,MULTICAST,NOARP,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UNKNOWN group default qlen 1000
    link/none
    inet 10.237.221.207/27 brd 10.237.221.223 scope global noprefixroute wwan0
       valid_lft forever preferred_lft forever

ラズパイをAP(アクセスポイント)化

NetworkManager1を使ってラズパイのwlan0インターフェースをWi-Fi APにします。

SSID/パスワードが "RPiAP" / "password" のAPを作成します。

pi@4gpiRT:~$ sudo nmcli c add type wifi ifname wlan0 autoconnect yes ssid RPiAP

(con-nameを指定しない場合は)wifi-wlan0という名前のコネクションが作成されます。

pi@4gpiRT:~$ nmcli c
NAME                UUID                                  TYPE      DEVICE
soracom             ad08caef-ca78-42ab-a9a4-a2ad74d38dd8  gsm       cdc-wdm0
wifi-wlan0          4d8418a7-43b1-4073-a70e-f3b07f16cb51  wifi      --
Wired connection 1  afb41213-5fc8-34d3-8790-70d3c1521ec9  ethernet  --

使用する帯域やパスワードを設定します。

pi@4gpiRT:~$ sudo nmcli c mod wifi-wlan0 802-11-wireless.mode ap 802-11-wireless.band bg
pi@4gpiRT:~$ sudo nmcli c mod wifi-wlan0 wifi-sec.key-mgmt wpa-psk wifi-sec.psk "password"

wlan0インターフェースのIPアドレスを固定にします。

sudo nmcli c mod wifi-wlan0 ipv4.addresses 10.10.0.1/24 ipv4.method manual
pi@4gpiRT:~$ sudo nmcli c up wifi-wlan0
pi@4gpiRT:~$ ip a show dev wlan0
3: wlan0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether b8:27:eb:ae:d9:35 brd ff:ff:ff:ff:ff:ff
    inet 10.10.0.1/24 brd 10.10.0.255 scope global noprefixroute wlan0
       valid_lft forever preferred_lft forever
    inet6 fe80::d85a:ebe3:ff19:bc48/64 scope link noprefixroute
       valid_lft forever preferred_lft forever

ラズパイをDHCPサーバ化

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

pi@4gpiRT:~$ sudo apt install dnsmasq

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

/etc/dnsmasq.conf
#ファイル末尾に追記

interface=wlan0
dhcp-range=10.10.0.2,10.10.0.20,255.255.255.0,24h

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

pi@4gpiRT:~$ 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 10.10.0.0/24 -o wwan0 -j MASQUERADE
COMMIT

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

pi@4gpiRT:~$ sudo ufw reload

スマホでWi-Fi接続確認

Wi-Fi端末からLTE回線経由でインターネットに接続できるようになりました。

有線LAN端末もLTE回線経由でインターネット接続できるようにする

仮想ブリッジ作成

Linux bridge(br0)を作成します。
Linux bridgeはL2スイッチのように動作します。

pi@4gpiRT:~$ sudo nmcli c add ifname br0 type bridge

同時にbridge-br0という名前のコネクションが生成されます。

pi@4gpiRT:~$ nmcli c
NAME                UUID                                  TYPE      DEVICE
bridge-br0          ece60180-ea1f-46a3-978d-87b4886b4d4e  bridge    br0
soracom             ad08caef-ca78-42ab-a9a4-a2ad74d38dd8  gsm       cdc-wdm0
wifi-wlan0          e7a96011-2bd7-4570-9712-8dbb25b17324  wifi      wlan0
Wired connection 1  afb41213-5fc8-34d3-8790-70d3c1521ec9  ethernet  --

eth0を仮想ブリッジに接続します。

pi@4gpiRT:~$ sudo nmcli c add ifname eth0 type bridge-slave master bridge-br0

仮想ブリッジのIPアドレス固定します。

pi@4gpiRT:~$ sudo nmcli c mod bridge-br0 ipv4.addresses 10.20.0.1/24 ipv4.method manual

仮想ブリッジにDHCPサーバを設定

Wi-Fiの時と同様にDHCPサーバを設定します。

/etc/dnsmasq.conf
#ファイル末尾に追記

interface=br0
dhcp-range=10.20.0.2,10.20.0.20,255.255.255.0,24h

IPマスカレード設定

IPマスカレードの設定を追記します。

/etc/ufw/before.rules
# ファイル末尾に追記
# NAT Table rules
*nat
:POSTROUTING ACCEPT [0:0]
-F
-A POSTROUTING -s 10.10.0.0/24 -o wwan0 -j MASQUERADE
-A POSTROUTING -s 10.20.0.0/24 -o wwan0 -j MASQUERADE  # 追記部分
COMMIT

以上の設定により、ラズパイに接続した有線LAN端末がLTE回線経由でインターネット接続できるようになります。

(補足)上の方法で接続がうまくいかないとき

MSSクランプの設定を行うことで解消する場合があります。

・/etc/ufw/before.rules の末尾に以下を追記する。

/etc/ufw/before.rules
# MANGLE Table rules
*mangle
-F
-A FORWARD -o wwan0 -p tcp --tcp-flags SYN,RST SYN -j TCPMSS
--clamp-mss-to-pmtu
COMMIT
  1. 4GPiのOSイメージはNetworkManagerがインストール済です。

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

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
What you can do with signing up
9