Armadillo-IoT(G3)を無線LANルーターのように動かす方法です。
ここでは、dnsmasqのDHCPサーバーとDNSキャッシュの機能を使って実現します。
補足)
Armadillo-IoT(G3)は、複数のディストリビューションに対応しています。
本ブログでは、Debian GNU/Linux 10 (buster) の方法になります。
Debian GNU/Linux 9 (stretch)の方法については、下記を参考ください。
Armadillo-IoT(G3):無線LANルーターのように動かす(dnsmasqで実現)
ネットワーク構成
本手順は、下記構成でネットワーク端末からインターネットにアクセスすることを想定した例です。
ネットワーク端末--(無線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:~# systemctl unmask hostapd.service 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 restart
7.nftablesを設定
下記コマンドでnftablesを起動します。
root@armadillo:~# systemctl start nftables.service
下記のようなnftables設定コマンドを実行するファイル(set_nftables)を作成します。
(下記例では、SSH(22番ポート)、SSL(443番ポート)、DNS(53番ポート)を許可しています。用途に応じて設定します。)
set_nftablesファイルの内容
nft add table ip filter nft flush table ip filter nft add chain ip filter input { type filter hook input priority 0 \; } nft add chain ip filter output { type filter hook output priority 0 \; } nft add rule ip filter input tcp dport 80 drop nft add rule ip filter input iifname "lo" counter accept nft add rule ip filter output oifname "lo" counter accept nft insert rule ip filter input iifname "ppp0" ip protocol icmp counter accept nft insert rule ip filter input iifname "ppp0" tcp dport 22 counter accept nft insert rule ip filter input iifname "ppp0" tcp dport 443 counter accept nft insert rule ip filter input iifname "ppp0" udp sport 53 counter accept nft insert rule ip filter input iifname "ppp0" tcp dport 53 counter accept nft add table ip nat nft add chain ip nat postrouting { type nat hook postrouting priority 0 \; } nft add rule ip nat postrouting oifname "ppp0" counter masquerade
上記のset_nftablesに実行権限をつけて、実行します。
root@armadillo:~# chmod +x set_nftables root@armadillo:~# ./set_nftables
以上により、nftablesが設定されます。
8.ポートフォワードに設定
下記コマンドでポートフォワードに設定します。
root@armadillo:~# echo 1 > /proc/sys/net/ipv4/ip_forward
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