Armadillo-IoT(G3)を無線LANルーターのように動かす方法です。
ここでは、dnsmasqのDHCPサーバーとDNSキャッシュの機能を使って実現します。
補足)
Armadillo-IoT(G3)は、複数のディストリビューションにに対応しています。
本ブログでは、Debian GNU/Linux 9 (stretch) の方法になります。
Debian GNU/Linux 10 (buster)の方法については、下記を参考ください。
Armadillo-IoT(G3):無線LANルーターのように動かす(dnsmasqで実現:buster版)
ネットワーク構成
本手順は、下記構成でネットワーク端末からインターネットにアクセスすることを想定した例です。
ネットワーク端末--(無線LAN)--Armadillo-IoT(G3)--(3G/LTE)--インターネット
補足1)
Armadillo-IoT(G3)の無線LANはアクセスポイントモードで動作します。
ネットワーク端末からは、下記SSIDとパスフレーズで接続します。
SSID:testssid
パスフレーズ:testpassphrase
補足2)
下記手順では、ネットワーク端末の無線LANのIPアドレスは、DHCPサーバーから自動取得する設定であることを想定しています。
Armadillo-IoT(G3)のDHCPサーバーからネットワーク端末のIPアドレス(※)を自動的に与えるようになっています。
※)192.168.100.100~192.168.100.254
1. 必要なパッケージのインストール
Armadillo-IoT(G3)をインターネット接続可能なネットワークに接続して、
下記コマンドで必要なパッケージをインストールしておきます。
root@armadillo:~# apt-get update
root@armadillo:~# apt-get install dnsmasq hostapd
上記の手順で、インターネット接続可能なネットワークに有線LANを使った場合は、
パッケージのインストール後、有線LANケーブルの接続を外します。
(下記の手順にて、インターネット接続可能なネットワークが3G/LTEと有線LANの2系統になる場合は考慮してないため。)
2. 3G/LTEの設定
下記コマンドで3G/LTEの設定をします。(※)
root@armadillo:~# nmcli connection add type gsm ifname [ネットワークデバイス名] apn [APN] user [ユーザー名] password [パスワード]
※)下記の箇所を読み替えて実行してください。
[ネットワークデバイス名] → Armadillo-IoT(G3 M1モデル)の場合は、ttyUSB2
[APN] → 使用しているSIMのAPN
[ユーザー名] → 使用しているSIMのユーザー名
[パスワード] → 使用しているSIMのパスワード
3. 無線LANの設定
3.1. NetworkManagerの管理対象から無線LANを外す
/etc/NetworkManager/NetworkManager.confのファイル末尾に下記の記述を追加します。
[keyfile]
unmanaged-devices=interface-name:wlan0
NetworkManagerをリスタートします。
root@armadillo:~# service NetworkManager restart
3.2. hostapd(アクセスポイントモード)の設定
/etc/hostapd/hostapd.confを下記の内容で作成します。
interface=wlan0
driver=nl80211
ssid=testssid
hw_mode=g
channel=10
ieee80211n=1
wpa=2
wpa_passphrase=testpassphrase
wpa_key_mgmt=WPA-PSK
rsn_pairwise=CCMP
/etc/default/hostapdの末尾に下記の記述を追加します。
DAEMON_CONF="/etc/hostapd/hostapd.conf"
カーネルの起動時にhostapdの設定を有効にするようにします。
root@armadillo:~# update-rc.d hostapd enable
4. dnsmasq(DHCPサーバー、DNSキャッシュ)の設定
4.1. /etc/dnsmasq.confの変更
/etc/dnsmasq.confの変更点
ファイル末尾に下記の記述を追加します。
listen-address=127.0.0.1, 192.168.100.1
interface=wlan0
dhcp-range=192.168.100.100, 192.168.100.254, 12h
5. 再起動
再起動します。
root@armadillo:~# reboot
上記までの手順は、再起動以降は不要になります。
6. 無線LANをアクセスポイントモードで起動
下記コマンドで、無線LANを再起動します。
補足)下記では、Armadillo-IoT(G3)の無線LANのIPアドレスを192.168.100.1に設定しています。
root@armadillo:~# ip link set wlan0 down
root@armadillo:~# ip addr flush dev wlan0
root@armadillo:~# ip link set wlan0 up
root@armadillo:~# ip addr add 192.168.100.1/24 dev wlan0
アクセスポイントモードを起動します。
root@armadillo:~# service hostapd start
7.iptableを設定
下記コマンドでiptableを設定します。
(下記例では、SSH(22番ポート)、SSL(443番ポート)、DNS(53番ポート)を許可しています。用途に応じて設定します。)
root@armadillo:~# iptables -t filter -F
root@armadillo:~# iptables -A INPUT -i ppp0 -j DROP
root@armadillo:~# iptables -A INPUT -i lo -j ACCEPT
root@armadillo:~# iptables -A OUTPUT -o lo -j ACCEPT
root@armadillo:~# iptables -I INPUT -i ppp0 -p icmp -j ACCEPT
root@armadillo:~# iptables -I INPUT -i ppp0 -p tcp --dport 22 -j ACCEPT
root@armadillo:~# iptables -I INPUT -i ppp0 -p tcp --dport 443 -j ACCEPT
root@armadillo:~# iptables -I INPUT -i ppp0 -p udp --sport 53 -j ACCEPT
root@armadillo:~# iptables -I INPUT -i ppp0 -p tcp --dport 53 -j ACCEPT
8.ポートフォワードに設定
下記コマンドでポートフォワードに設定します。
root@armadillo:~# echo 1 > /proc/sys/net/ipv4/ip_forward
root@armadillo:~# iptables -t nat -A POSTROUTING -o ppp0 -j MASQUERADE
9. nameserverの追加
下記コマンドでnameserverを追加します。
root@armadillo:~# echo "nameserver 127.0.0.1" > /etc/resolv.conf.head
dnsmasqを再起動します。
root@armadillo:~# systemctl restart dnsmasq.service
以上の設定後、下記のような構成で、ネットワーク端末からインターネットに接続できます。
ネットワーク端末--(無線LAN)--Armadillo-IoT(G3)--(3G/LTE)--インターネット
補足1)
Armadillo-IoT(G3)の無線LANはアクセスポイントモードで動作します。
ネットワーク端末からは、下記SSIDとパスフレーズで接続します。
SSID:testssid
パスフレーズ:testpassphrase
補足2)
上記手順では、ネットワーク端末の無線LANのIPアドレスは、DHCPサーバーから自動取得する設定であることを想定しています。
Armadillo-IoT(G3)のDHCPサーバーからネットワーク端末のIPアドレス(※)を自動的に与えるようになっています。
※)192.168.100.100~192.168.100.254