格安SIM(MVNO)とRaspberry Pi(ラズベリーパイ)でモバイルルータを作った 〜初期設定から完成まで〜
最近ジワジワ人気になってきた格安SIM(MVNO)とRaspberry Pi(ラズベリーパイ)。
今回はこの2つを使ってモバイルルータを作ってみたいと思います。
格安SIM(MVNO)とは?
格安SIM(MVNO)は非常に低価格でモバイル通信できます。 安いものだと月額500円以下のプランもあります。 非常に低価格なのですが、格安SIM(MVNO)を使うためには殆どの場合ドコモ端末かSIMフリー端末が必要となります。
Raspberry Pi(ラズベリーパイ)とは?
Raspberry Pi(ラズベリーパイ)とは手のひらサイズの超小型コンピュータで電子工作やプログラミング等に使えます。 価格も非常に安く、5000円ほどで手に入ります。
用意するもの
・Raspberry Pi Model B+(4266円)
- 出版社/メーカー: raspberrypi.org
- メディア: エレクトロニクス
- この商品を含むブログ (2件) を見る
・L-02C (4500円)
【白ロム】ドコモ L-02C Xi対応USBデータカード レッド
- 出版社/メーカー: LG電子
- メディア: エレクトロニクス
- クリック: 2回
- この商品を含むブログ (1件) を見る
・DMM mobile (最安プラン 660円)
今回は手持ちの格安SIM(MVNO)のDMM mobileを使用しました。
・無線LANアダプタ (713円)
BUFFALO 無線LAN子機 コンパクトモデル 11n技術・11g/b対応 WLI-UC-GNM
- 出版社/メーカー: バッファロー
- 発売日: 2010/06/25
- メディア: Personal Computers
- 購入: 44人 クリック: 226回
- この商品を含むブログ (29件) を見る
・8GB microSDカード (824円)
【Amazon.co.jp限定】Transcend microSDHCカード 8GB Class10 (無期限保証) TS8GUSDHC10E (FFP)
- 出版社/メーカー: トランセンド・ジャパン
- メディア: Personal Computers
- この商品を含むブログを見る
以前のRaspberry Pi(ラズベリーパイ)はSDカードでしたが最新のモデルはmicroSDカードなのでご注意を。
・軽いモバイルバッテリー
cheero Power Plus DANBOARD version -plate- 4200mAh 超薄型 モバイルバッテリー
- 出版社/メーカー: cheero
- メディア: エレクトロニクス
- この商品を含むブログ (2件) を見る
・有線LANケーブル (583円)
ELECOM LANケーブル CAT6 Gigabit やわらか 爪折れ防止 0.5m ブラック 【PlayStation 4 対応】 LD-GPYT/BK05
- 出版社/メーカー: エレコム
- 発売日: 2013/01/18
- メディア: Personal Computers
- この商品を含むブログを見る
RaspberryPi(ラズベリーパイ)の初期設定
作業PCはMacを使用します。
まずmicroSDカードにOSイメージを焼きます。OSはせっかくなのでRaspbian(ラズビアン)を使います。
公式サイトからRASPBIANを選択しダウンロード、解凍します。今回は2015-05-05リリースのものを使用します。ダウンロードが終わったらSDカードをMacに接続します。
df -hでSDカードのディスク名をチェック
$ df -h Filesystem Size Used Avail Capacity iused ifree %iused Mounted on /dev/disk2s1 29Gi 2.3Mi 29Gi 1% 0 0 100% /Volumes/NO NAME
ディスク名は/dev/disk2s1でした。
diskutilでアンマウント
# diskutil unmountDisk /dev/disk2s1 Password: Unmount of all volumes on disk2 was successful
成功です。
ddコマンドでSDカードにOSイメージを書き込み
# dd if=2015-05-05-raspbian-wheezy.img of=/dev/disk2s1 bs=4m 781+1 records in 781+1 records out 3276800000 bytes transferred in 290.594687 secs (11276187 bytes/sec)
30分ほど時間がかかりました。これでSDカードにOSイメージが書き込まれました。
RaspberryPi(ラズベリーパイ)へ接続
SDカード、有線LANをRaspberryPi(ラズベリーパイ)へ接続したあと、microUSBポートに電源を差し込みます。
赤と緑のLEDが点灯し緑が点滅すれば成功です。
私は初めて接続した時、赤と緑のLEDが点灯したまま点滅しませんでした。焼きがうまく行っていなかったようで、再度焼き直したら起動できました。
使用しているルータにアクセスしてRaspberryPi(ラズベリーパイ)に割り振られているIPアドレスを確認。今回は192.168.11.13でした。
MacからSSHを使って接続してみます。usernameはpi, passwordはraspberryです。
$ ssh pi@192.168.11.13 The authenticity of host '192.168.11.13 (192.168.11.13)' can't be established. RSA key fingerprint is 0d:6e:e9:9d:25:28:2b:51:59:c0:34:0e:6b:78:01:82. Are you sure you want to continue connecting (yes/no)? yes Warning: Permanently added '192.168.11.13' (RSA) to the list of known hosts. pi@192.168.11.13's password: Linux raspberrypi 3.18.11+ #781 PREEMPT Tue Apr 21 18:02:18 BST 2015 armv6l The programs included with the Debian GNU/Linux system are free software; the exact distribution terms for each program are described in the individual files in /usr/share/doc/*/copyright. Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent permitted by applicable law. Last login: Fri May 22 05:04:12 2015
無事接続できました。
初期設定
今後はRaspberry Pi(ラズベリーパイ)上での作業となります。
# raspi-config
上記のコマンドを実行すると下記のような画面が表示されます。
ここで日本locale設定だけにします。
- Expand Filesystemを選択します。
- Internationalisation Options > Change Locale > ja_JP.UTF-8で日本語環境にします。
- Internationalisation Options > Change Timezone > Asia > Tokyoで日本時間にします。
パッケージ更新
パッケージ更新 # apt-get update # apt-get upgrade
Vimをインストール
ついでにみんな大好きVimをインストールしておきましょう。
# apt-get install vim # update-alternatives --set editor /usr/bin/vim.tiny
これでRaspberry Pi(ラズベリーパイ)の初期設定はひとまず完了です。
WiFiアクセスポイント機能有効化
Raspberry Pi(ラズベリーパイ)に無線LANアクセスポイントであるWLI-UC-GNMを差し込んでください。
Wi-Fiアクセスポイント機能を有効にするためにhostapdを導入します。
有線LANのeth0にDHCPでIPアドレスを割り当て、無線LANのwlan0に固定IPアドレスを割り当てます。
# vim /etc/network/interfaces auto lo iface lo inet loopback iface eth0 inet dhcp allow-hotplug wlan0 auto wlan0 iface wlan0 inet static address 192.168.100.1 network 192.168.100.0 netmask 255.255.255.0 gateway 192.168.11.1
次にhostapdをインストールします。
# apt-get install hostapd
ここでhostapdの設定を行いますが、使用するアダプタ(ドライバ)によって手順が変わってきます。
今回は「用意するもの」で挙げたWLI-UC-GNMを使った設定を行います。
lsmodして、ドライバを確認します。
# /sbin/lsmod
ドライバがmac80211ベースでした。 こちらは本家のhostapdがサポートしているのですが、apt-getでインストールされるものはバージョンが古いためhostapdを入れ替える必要があります。 公式サイトから最新のソースをダウンロード、コンパイルします。
$ cd /tmp $ wget http://w1.fi/releases/hostapd-2.0.tar.gz $ tar xvf hostapd-2.0.tar.gz
コンパイルに必要なライブラリをインストールします。
# apt-get install libnl-genl-3-dev libssl-dev
必要な設定を加えてコンパイルします。
$ cd hostapd-2.0/hostapd $ cp defconfig .config $ echo "CONFIG_LIBNL32=y" >> .config $ make # make install
hostapdの設定ファイルを修正。 ssid, channel, wpa_passphraseは適宜変更してください。
interface=wlan0 driver=nl80211 ssid=korokkeyasan hw_mode=g channel=6 macaddr_acl=0 auth_algs=1 ignore_broadcast_ssid=0 wpa=2 wpa_passphrase=korokkeyasan wpa_key_mgmt=WPA-PSK wpa_pairwise=TKIP rsn_pairwise=CCMP
hostapd起動のための設定をします。
DAEMON_CONFがコメントアウトされているので下記のように修正してください。
# vim /etc/default/hostapd DAEMON_CONF="/etc/hostapd/hostapd.conf"
WPASupplicantを無効にしておきます。一応適当なところにバックアップしておきます。
# mv /usr/share/dbus-1/system-services/fi.epitest.hostap.WPASupplicant.service /tmp
DHCPサーバの導入
IPアドレスを自動で割り振るDHCPサーバを導入していきます。
# apt-get install isc-dhcp-server
設定ファイルを編集します。(設定した部分だけ抜粋)
# vim /etc/dhcp/dhcpd.conf #コメントアウト #option domain-name "example.org"; #option domain-name-servers ns1.example.org, ns2.example.org; #アンコメント # 正当な DHCP サーバーであることの宣言 authoritative; # ネットワークアドレスとサブネットマスク指定 subnet 192.168.100.0 netmask 255.255.255.0 { # 貸し出すIPアドレスの範囲指定 range 192.168.100.10 192.168.100.50; # ブロードキャストアドレス指定 option broadcast-address 192.168.100.255; # デフォルト貸出期間 default-lease-time 600; # 最大貸出期間 max-lease-time 7200; # ゲートウェイアドレス指定 option routers 192.168.100.1; # ドメイン名指定 option domain-name "local"; # ネームサーバーのホスト名 (Google) option domain-name-servers 8.8.8.8, 8.8.4.4; }
DHCPサーバの起動設定をします。
# vim /etc/default/isc-dhcp-server INTERFACES="wlan0"
先ほど設定したhostapdをデーモンとして起動するようにしたいので下記のように設定します。
# service hostapd start
また起動時にhostapdを起動させたいので下記のように設定します。
# update-rc.d hostapd enable
DHCPサーバを起動します。
# service isc-dhcp-server start
また起動時にDHCPサーバを起動させたいので下記のように設定します。
# update-rc.d isc-dhcp-server enable
これで自動でIPアドレスが割り振られるようになりました。
IPマスカレードの設定
カーネルの機能なので、ここでは特に何かインストールする必要はありません。
# vim /etc/sysctl.conf # アンコメント net.ipv4.ip_forward=1
一度再起動してこの設定を有効にします。
# reboot
再起動が終わったら再度SSH接続してください。 IPテーブルの設定でIPマスカレードを有効にします。
# iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
これで有線LAN接続状態でクライアントが無線でインターネットに接続出来るようになりました!
LTEネットワーク接続
いよいよ有線LANで接続ではなくLTEネットワークでの接続設定をしていきます。 予めL-02CをRaspberry Pi(ラズベリーパイ)に挿入しておいてください。
# apt-get install wvdial # apt-get install eject
wvdialはダイアルアップ接続用ソフトなのですがejectはCD/DVD-ROMドライブをEjectするためのコマンド。 なぜか今回使用するL-02CはRaspberry Pi(ラズベリーパイ)につなぐとCD-ROMドライブとして認識され、Ejectしないと使えないという謎仕様。だから安いんですけどね。。
# eject sr0
確認します。
$ lsusb
L-02Cが一覧に出てくればOKです。
次に使用するSIMの設定を行っていきます。今回はDMM mobile(IIJmio系)を想定しています。
# vim /etc/wvdial.conf [Dialer Defaults] Init1 = ATZ Init2 = AT+CGDCONT=1,"IP","iijmio.jp" Init3 = ATQ0 V1 E1 S0=0 &C1 &D2 +FCLASS=0 Dial Attempts = 3 Stupid Mode = 1 Modem Type = Analog Modem Dial Command = ATD Stupid Mode = yes Baud = 460800 New PPPD = yes APN = iijmio.jp Modem = /dev/ttyUSB2 ISDN = 0 Phone = *99***1# Password = iij Username = mio@iij Carrier Check = no
Phoneは"99*1#"でも"99#"でも可能です。 いよいよ接続です。
# wvdial
PPP接続できました!! IPマスカレードの設定をします。
# iptables -t nat -A POSTROUTING -o ppp0 -j MASQUERADE
起動時にPPP接続できるようにします。
# vim /etc/init.d/wvdialloop.sh #!/bin/bash LOG='/var/log/wvdial' eject /dev/sr0 ( while : ; do wvdial 2>&1 sleep 15 done ) 2>&1 > ${LOG} < /dev/null &
# chmod +x /etc/init.d/wvdialloop.sh # update-rc.d wvdialloop.sh defaults
rc.localにIPマスカレードの設定を追加します。
# vim /etc/rc.local # exit 0 の前に追加 iptables -t nat -A POSTROUTING -o ppp0 -j MASQUERADE
これで電源を入れたらLTEネットワークに接続されモバイルルータとして機能するようになりました!!
その他
初期設定のままSSH接続していましたが、ちゃんと運用するのであればパスワードを変更するなり鍵を設定するなりしてセキュリティを高めてください。
また結構熱を持つのでRaspberry Pi(ラズベリーパイ)のケースを買ったほうが良いかもしれません。
Raspberry Pi ラズベリー・パイ 超小型パソコン Pi Model B+ / Pi 2 Model B 専用ケ-ス(Clear)
- 出版社/メーカー: Raspberry Pi
- メディア: エレクトロニクス
- この商品を含むブログを見る
まとめ
モバイルネットワークにつながると夢が広がりますね。とはいっても実はドコモ系MVNOはグローバルIPアドレスが割り振られないようで、遠隔操作やWEBサーバとして使うのは難しいようです。。ngrokを使うといけそうな気もするので次回挑戦してみたいと思います。
参考にしたサイト
・http://qiita.com/makoto_kw/items/393e098f214f81449c9f
・http://sideb.hatenablog.com/entry/mvno_kakuyasu_sim_raspberry_pi_lte_3g_mobile_router