2019/10/19 イムシムSIMを購入して、剥き出しの固定IPアドレスを手に入れる方法について追記
2019/10/13 routeの問題解決方について追加
2019/10/10 楽天の格安SIMで動かさせたことを追記
2019/10/01 初版
1.背景
- ラズパイを自動車に乗せて、位置情報を送付させる実験が必要になった
- ラズベリーパイ用4G(LTE)通信モジュール「4GPi」を購入して、設営をすることになった
2.目的
- 後になって、「作り方」を必ず忘れるので、今のうちにメモを残しておく
- ちなみに自分用のメモである
- 他人が理解できるかどうかは、スコープ外
3.前提
4.購入するものは3つある
- ラズベリーパイ用4G(LTE)通信モジュール「4GPi」
- 12V / 2Aの電源
- これ、「4GPi」に付いてこないので注意のこと
- 発注では間に合わなかったので、あわてて、秋葉原まで走ったぞ
- ケーブル口径(内径2.1mm)に気をつけること。2A以上ならどれでもいい
- 通信SIM
5.準備する工具
6.構築手順
- (Step.1) 組み立てる
- 電源、USB、Etherを全部外して、ラズパイのボードだけにする
- 4GPiのボードを登載する
- 柱を4本立てて、GPIOインターフェースを差し込む
- 通信SIMを差し込む
- 配線する
4GPiに給電すれば、ラズパイへの給電は不要になることに注意
SSHが使えるのであれば、HDMI,KB,Mouseは不要
- (Step.2)電源を入れる
- (Step.3)ソフトウェアのインストールする
- 参考資料
- この手順書が、以外なところにあるので注意のこと
- とても役に立ったページがこちら
- 以下、江端がやったこと「だけ」を記載する
- 1.1 リポジトリの追加
- 1.2 パッケージのインストール
- sudo apt install 4gpi-utils 4gpi-net-mods 4gpi-networkmanager
- 3. インターフェースが作られているかの確認
- >ls /dev/cdc-wdm
- >ls /dev/tty4GPI
- >ls /dev/modem
- (Step.4)通信SIM情報の読み込み(SIMを変更する時は、ここから始める)
- SIMについてくる、APN設定の用紙を睨みながら、設定情報を書き込む
- sudo nmcli con add type gsm ifname "*" con-name 「接続名」 apn 「APN」 user 「ユーザー」 password 「パスワード」
- 「接続名」には任意の文字列を入力してください。
- 「APN」、「ユーザー」、「パスワード」の項目は使用する SIM の設定を入力してください。
- ~ sudo nmcli con add type gsm ifname "*" con-name dismobile apn am.plat.net user asm@asm password asm
- 以前の情報が残っている時には、上手く繋がらない場合がある
- この場合は、次の処理をする
- >nmcli con
- gsm-3gpi-dis bc08c9b1-ad95-4428-8b86-f9c2d03856c0 gsm cdc-wdm0
- ipsim.net 08ed3b52-973f-47cb-844b-42589655c60a gsm --
- ipsim.net 1083eed3-9beb-45fe-a8f8-67b31dd23c65 gsm --
- ipsim.net 40bdff2d-d4a7-4275-bdfd-56f2da54a383 gsm --
- この一番上の設定を消すには、こうする
- >nmcli connection delete gsm-3gpi-dis
- Connection 'gsm-3gpi-dis' (bc08c9b1-ad95-4428-8b86-f9c2d03856c0) successfully deleted.
- 消した後、青LEDの点滅が開始する
- (Step.5)稼動確認
- $ 4gpi-nm-helper show default all
- $ nmcli con
- NAME UUID TYPE DEVICE
- dismobile c5fd2035-8fb5-43da-b7ba-0a163a00f290 gsm cdc-wdm0
- 有線接続 1 9c8e0841-2a7b-360d-a2a2-9f824858881a ethernet eth0
- $ nmcli dev status
- DEVICE TYPE STATE CONNECTION
- eth0 ethernet 接続済み 有線接続 1
- cdc-wdm0 gsm 接続済み dismobile
- lo loopback 管理無し --
- wlan0 wifi 管理無し --
- wlan1 wifi 管理無し --
- $ ifconfig
- wwan0: flags=4305<UP,POINTOPOINT,RUNNING,NOARP,MULTICAST> mtu 1500
- inet 111.59.135.93 netmask 255.255.255.248 destination 111.59.135.93
- unspec 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00 txqueuelen 1000 (不明なネット)
- RX packets 0 bytes 0 (0.0 B)
- RX errors 0 dropped 0 overruns 0 frame 0
- TX packets 402 bytes 70886 (69.2 KiB)
- TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
- $ netstat -nr
- カーネルIP経路テーブル
- 受信先サイト ゲートウェイ ネットマスク フラグ MSS Window irtt インタ フェース
- 0.0.0.0 192.168.0.1 0.0.0.0 UG 0 0 0 eth0
- 0.0.0.0 192.168.100.1 0.0.0.0 UG 0 0 0 wlan1
- 0.0.0.0 192.168.101.1 0.0.0.0 UG 0 0 0 wlan0
- 0.0.0.0 111.59.135.94 0.0.0.0 UG 0 0 0 wwan0
- 10.58.134.88 0.0.0.0 255.255.255.248 U 0 0 0 wwan0
- 192.168.0.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0
- 192.168.100.0 0.0.0.0 255.255.255.0 U 0 0 0 wlan1
- 192.168.101.0 0.0.0.0 255.255.255.0 U 0 0 0 wlan0
7.通信テスト
- 前提
- まず、セキュリティをスカスカにして、通信ができることを確認する
- その後で、セキュリティを組み込んでいく
- 参考文献
- (Step.1)ufw(uncomplicated firewall)のインストール
- $ sudo apt-get install ufw
- ファイアウォールを無効にする
- 全ての通信を許可する
現状通信に成功していない
- が、多分、もうちょっとで動くだろう
- ルーティングで問題が発生している様子
確実に動かす方法
~ ラズパイに無線LANサーバ(wlan0)と無線LANクライアント(wla1)を併設する方法
- この前提で色々やったこと
- まず何もしない状況
- /etc/resolve.conf
- =====
- # Generated by resolvconf
- nameserver 192.168.101.1
- nameserver 210.157.200.22
- nameserver 210.157.200.23
- =====
- $ route -n
- Kernel IP routing table
- Destination Gateway Genmask Flags Metric Ref Use Iface
- 0.0.0.0 192.168.101.1 0.0.0.0 UG 303 0 0 wlan0
- 0.0.0.0 100.110.245.53 0.0.0.0 UG 700 0 0 wwan0
- 100.110.245.48 0.0.0.0 255.255.255.248 U 700 0 0 wwan0
- 192.168.101.0 0.0.0.0 255.255.255.0 U 303 0 0 wlan0
- WLAN1を無効にしてみた
- "sudo iwconfig wlan0 txpower off"
- その後の状況
- /etc/resolve.conf
- =====
- # Generated by resolvconf
- nameserver 210.157.200.22
- nameserver 210.157.200.23
- =====
- $ route -n
- Kernel IP routing table
- Destination Gateway Genmask Flags Metric Ref Use Iface
- 0.0.0.0 100.110.245.53 0.0.0.0 UG 700 0 0 wwan0
- 100.110.245.48 0.0.0.0 255.255.255.248 U 700 0 0 wwan0
- ~ ラズパイに無線LANサーバ(wlan0)と無線LANクライアント(wla1)を併設する方法
- 具体的には、「wlan1の代わりに4GPiを使う」というイメージ
- /etc/udev/rules.d/70-persistent-net.rules
- /etc/dhcpcd.conf
- 下の2行をコメントアウト
- interface wlan0
- static ip_address=192.168.101.1/24
- #static routers=192.168.101.1
- #static domain_name_servers=192.168.101.1
- /etc/dhcp/dhcpd.conf
- /etc/hostapd/hostapd.conf
- /etc/network/interfaces.d/wlan1
- /etc/wpa_supplicant/wpa_supplicant_wlan1.conf
- この結果、こうなった
- $ route -n
- Kernel IP routing table
- Destination Gateway Genmask Flags Metric Ref Use Iface
- 0.0.0.0 100.110.245.53 0.0.0.0 UG 700 0 0 wwan0
- 100.110.245.48 0.0.0.0 255.255.255.248 U 700 0 0 wwan0
- 192.168.101.0 0.0.0.0 255.255.255.0 U 303 0 0 wlan0
- /etc/resolve.conf
- =====
- # Generated by resolvconf
- nameserver 210.157.200.22
- nameserver 210.157.200.23
- =====
- rc1で接続して、ssh 192.168.101.1 で接続できた
- 普通にラズパイから、Web等が使える
他のSIMカードでも動いたよ
- あまり使わなくなった「楽天の格安データSIM(月額500円くらい)」のスマホのSIMカード使えるか試してみた
- 動いた
-
- NANO-SIMを通常のSIMとして使えるようにソケットに入れた
- SIM情報を記載された紙を探し出す
- 通信SIM情報の読み込み((Step.4)と同じ)
- sudo nmcli con add type gsm ifname "*" con-name rakuten apn rmobile.jp user rm password 0000
- ping google.com 等で通信を確認する
wlan0(無線LAN) ←→wwan0(4GPi) で何もかもパケットを通す、セキュリティ無視の強制接続方法
- /etc/sysctl.conf
- net.ipv.ip_forward=1 のコメント(#)を消せば、フォワードが有効になる
- 上記の他では、こんな手もあるみたい
- >sudo echo -n 1 > /proc/sys/net/ipv4/ip_forward
- ここで一回 sudo rebootする
- ここからは手動で入力する
- >sudo iptables -xnvL
- >sudo iptables -F
- >sudo iptables -X
- >sudo iptables -P INPUT ACCEPT
- >sudo iptables -P OUTPUT ACCEPT
- >sudo iptables -P FORWARD ACCEPT
- >sudo iptables -t nat -A POSTROUTING -o wwan0 -j MASQUERADE
- iptables が起動時に設定されるようにする
- >sudo apt-get install iptables-persistent
- インストール時に現在のiptablesをipv4,ipv6ともに保存するか聞かれるので、「YES」で押下
- ここで再度sudo rebootする
- テストの仕方
- ノートPCのアクセスポイントに"rd1"を選ぶ
- ノートPCから,chromoやらffftpで転送できることを確認する
残りの課題
- ラズパイに逆にリモートからアクセスする方法
- 参考文献
- 結論:金で解決しました
- softether構築・運用するコストより、月々990円を払うことにしました
- とても役に立ったページがこちら
- イプシムSIMカードなら、インターネット剥き出しのIPアドレスが貰える
- >ifconfig
- wwan0: flags=4305<UP,POINTOPOINT,RUNNING,NOARP,MULTICAST> mtu 1500
- inet 211.157.175.147 netmask 255.255.255.252 destination 211.157.175.147
- unspec 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00 txqueuelen 1000 (UNSPEC)
- RX packets 447 bytes 72345 (70.6 KiB)
- RX errors 0 dropped 0 overruns 0 frame 0
- TX packets 352 bytes 44734 (43.6 KiB)
- TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
- これで、遠くにいるラズパイへのSSHによるログインが可能となった