Raspberry Piをルーター化してみた
遠隔地にある設備を操作したいという案件があるため、Raspberry PiにLTEドングルを接続して、遠隔地からWi-Fi+LANで接続された設備を遠隔操作するためのルーターを実現してみたいと思います。システム構成は以下のとおりです。

Raspberry Piをルーター化する作業を行い、その作業をまとめました。LTE回線はソラコムで、RasbperryPiにOnyx LTE USBドングル SC-QGLC4-C1を挿入してルーターを実現します。
VPNサーバーはAWS上に構築済なので、今回の説明には含んでいません。
Raspberry Piのセットアップ
Raspberry PiのOSは公式のダウンロードサイトの中段あたりにある「Raspberry Pi OS Lite」をダウンロードしました。
電源を起動したら環境設定をします。
sudo raspi-config
一旦、Wi-Fi、キーボード、SSHの有効化などの設定を行います。

- System Options -> Wireless LANで一旦、Wi-Fi経由でインターネットに接続をします。
- Interface Option -> SSHで、SSHを有効にします。
- Localisation Options -> TimezonでタイムゾーンをTokyoに設定します。
- Localisation Options -> WLAN CountryでWi-Fiの使用場所をJPに設定します。
一度再起動します。
sudo reboot
再起動したらソフトウエアのアップデートを行い、再び再起動します。
sudo apt-get update
sudo apt-get upgrade
sudo reboot
再起動後はsudo apt-get update
でエラーが発生するようになってしまいましたが、このコマンドで復旧できます。
sudo apt-get update --allow-releaseinfo-change
LTE回線でインターネットに接続する
Soracomのホームページに詳細が記載されていますのでこちらを参照してください。
LTE回線で接続ができたら、Wi-FiをOFFにしてインターネット接続ができるか確認をします。
pingの応答があればOKです
pi@raspberrypi:~ $ sudo ifconfig wlan0 down
pi@raspberrypi:~ $ ping 8.8.8.8
PING 8.8.8.8 (8.8.8.8) 56(84) bytes of data.
64 bytes from 8.8.8.8: icmp_seq=1 ttl=117 time=311 ms
64 bytes from 8.8.8.8: icmp_seq=2 ttl=117 time=300 ms
Rasbperry Piをルーター化する
必要なソフトウエアのインストール
sudo apt-get install dnsmasq
sudo apt-get install iptables
sudo apt-get install hostapd
IPアドレスを固定してルーターの設定をする
/etc/dhcpcd.conf
のファイルを開き、それぞれ、有線LANのIPアドレス(eth0)、Wi-Fiのアドレス(wlan0)を固定にします。
interface eth0
static ip_address=192.168.10.1/24
interface wlan0
static ip_address=192.168.11.1/24
nohook wpa_supplicant
/etc/dnsmasq.conf
のファイルを開き、接続したデバイスに割り当てるIPアドレスを指定します。eth0とwlan0それぞれ個別にアドレスを割り当てるように記述します。
dhcp-range=tag:eth0,192.168.10.2,192.168.10.127,24h
dhcp-range=tag:wlan0,192.168.11.2,192.168.11.127,24h
dhcp-option=tag:eth0,option:router,192.168.10.1
dhcp-option=tag:wlan0,option:router,192.168.11.1
/etc/hostapd/hostapd.conf
にWi-Fiがルーターとして動作するための設定を行います。[SSID]と[PASSPHRASE]にはWi-FiのSSID(アクセスポイント名)とパスフレーズを指定します。
interface=wlan0
country_code=JP
driver=nl80211
ssid=[SSID]
hw_mode=g
channel=6
wmm_enabled=0
macaddr_acl=0
auth_algs=1
ignore_broadcast_ssid=0
wpa=2
wpa_passphrase=[PASSPHRASE]
wpa_key_mgmt=WPA-PSK
wpa_pairwise=TKIP
rsn_pairwise=CCMP
/etc/default/hostapd
のファイルを開いてhostapdの設定ファイルを指定します
DAEMON_CONF="/etc/hostapd/hostapd.conf"
/etc/sysctl.conf
のファイルを開いてIPフォワードを有効化する設定を有効にします。
dhcpcdの起動
rfkill unblock wifi
sudo systemctl restart dhcpcd
dnsmasqの起動とdaemon化
sudo systemctl start dnsmasq
sudo systemctl enable dnsmasq
hostapdの起動とdaemon化
sudo systemctl unmask hostapd
sudo systemctl enable hostapd
sudo systemctl start hostapd
ルーティング設定
eth0とeth0で接続されたネットワークをwwan0に転送するように設定します。
sudo iptables -A FORWARD -i wlan0 -o wwan0 -j ACCEPT
sudo iptables -A FORWARD -i eth0 -o wwan0 -j ACCEPT
sudo iptables -t nat -A POSTROUTING -o wwan0 -j MASQUERADE
再起動して動作していれば作業完了です
sudo reboot