Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
5
Help us understand the problem. What is going on with this article?
@ieking

ラズパイ+4GPiでWi-Fiルータを作ってリモートワークしています

こんにちは。メカトラックス@iekingです。

事の発端

私は最近遠方からメカトラックスに入社したのですが、引っ越しが入社日に間に合わなかったため旧居でリモートワークしています。ところが先日のある朝、使っていたレンタルWi-Fiが速度制限にかかり(固定回線は先月の契約更新のタイミングで解約した)、仕事がままならない状況に陥りました。会社に相談してその日は急遽近所のコワーキングスペースを利用したのですが、それだと情報漏洩のリスクが気になるよねーという話になり、再度レンタルWi-Fiを調達するかーと考えていたところ、こんな提案をされました。

「会社に余っているSIMカードがあるから送ります。ラズパイ+4GPiでWi-Fiルータ作れば自宅から好きな端末でインターネット接続できます。」

な、なるほどね。その手がありましたか。なるほどね

かくしてWi-FiルータDIYプロジェクトが始動しました。

目次

用意したもの
うまくいかなかった:hostapd+NetworkManager
うまくいった手順
 - ①前準備
 - ②ラズパイを4G(LTE)回線でインターネットに接続
 - ③ラズパイをアクセスポイント化
 - ④ラズパイをDHCPサーバ化
 - ⑤ラズパイをルータ化
まとめ

用意したもの

  • 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変換アダプタ(コンソール接続用。HDMI対応モニタとキーボードでも可。)

うまくいかなかった:hostapd+NetworkManager

ラズパイを使ったWi-Fiルータ作成方法については過去の4GPiのブログでもご紹介していますし、検索すればたくさん情報がでてきます。hostapd(アクセスポイント機能)を使った事例が多いです。

しかしいざやってみると、私の環境ではhostapdとNetworkManager1を一緒に動かすとアクセスポイントが不安定になり、うまくいきませんでした(調べると似たようなトラブルがちらほらありました)。

そこで今回はこの問題を回避するため、
hostapdを使用せず、NetworkManagerの機能でアクセスポイント化を試みました。

↓↓↓

うまくいきました。やったー

「よかったですね。ということで、ブログ記事を1本書いてもらえますか?:innocent:

へ?

ということで、今これを書いています。

うまくいった手順

①前準備

- 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
  • パスワード: password1129

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

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 "password1129"

- 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接続確認

できました。

まとめ

hostapdを使わずにNetworkManagerの機能だけでラズパイをアクセスポイント化することができました。ラズパイでアクセスポイントを作りたい方はぜひお試しください。リモートワークでお困りの方もぜひ。


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

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

5
Help us understand the problem. What is going on with this article?
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ieking
mechatrax
メカトラックスはハードウエアの開発/製造を行う会社です。 これらに関連する電子回路/組込ソフト/センサー/機構など 幅広い技術分野に於いて、豊富な実績を有しています。 特に近年は、業務用途でのラズベリーパイ活用に関して、 各種機能拡張モジュールの開発・製造やこれらを組み合わせた プロトタイピング、小ロット製造等にも注力しています。

Comments

No comments
Sign up for free and join this conversation.
Sign Up
If you already have a Qiita account Login
5
Help us understand the problem. What is going on with this article?