回線は、ServersMan SIM 3G 100 (月額490円SIM)を使います。
通信端末は、RPi界隈においては D02HWがよく使われるようですが、
今回は、docomoのFOMA-USBデータ通信カード L-02Aを使います。安く入手できたので。
【2013/08/08 追記】9月より、ServersMan SIMもXiのMVNO回線 (即ち、LTE)へ移行となるようです。Xi用のデータ通信カードが利用可能となります。)
Raspberry Pi (Model B) + L-02A |
実用的なサーバを求めているわけではなく、あくまで遊びです(笑)
速度/レイテンシはともかく、動的グローバルIPアドレスが割り当てられるので、一応サーバにも使えます。
(※ DTIはそのような利用目的を推奨していませんし、私もあくまで実験であり推奨しません。自己責任でお願いします。)
【2013/08/08 追記, 2014/04/05 編集】
ServersMan SIM 100がLTEに対応し、ServersMan SIM LTE 100へ移行されることとなりました。
これに伴い、グローバルIPアドレスの提供がなくなり、
プライベートIPアドレスのみとなりましたので基本的にWebサーバなどとしては使えなくなります。
(ngrokなどを使う方法はありますが。)
まずは、WindowsのPCに、SIMカードを取り付けた状態のL-02Aを接続して、一旦、設定を行なっておきます。
docomoの接続ツールをインストールします。
接続設定は、Serversman SIMのものを使い、実際に一旦接続してください。
尚、このように一旦設定を行なっておかないと、後から Linux上に接続してponする際、問答無用に"NO CARRIER"でエラーになってしまいました。
次に、Raspberry Piを起動して...
コンソールで apt-getを用いて、"pppconfig"と"eject"をインストールします。
$ sudo apt-get install pppconfig eject
続いて、L-02Aを、Raspberry PiのUSBポートに接続します。
ここで、lsusb コマンドを実行...。
$ lsusb ~~~ Bus 001 Device 007: ID 1004:610c LG Electronics, Inc.というように、認識されていることがわかります。
ところで、L-02Aは、ゼロインストール機能があるので・・・
接続直後はCD-ROMドライブとして認識される仕様になっています.
$ ls /dev/sr* -la brw--rw---T+ 1 root cdrom 11, 0 xxx xx xx:xx /dev/sr0これですね。CD-ROMになっています。
これをEjectすることで、本来のデータカードとして認識されるはず...。
が!しかし...このままejectしても、実際にはうまく行きません。
モデムを/dev/ttyUSB*として認識してほしいところなのですが、
/dev/ttyACM*として認識されてしまいます。
こちらのページによると...。
Ejectを行ったあと、cdc_acmドライバの読み込みが行われるらしいのですが、L-02Aは情報がないため、その読み込みに失敗するそうです。
ですから、対策としてcdc_acmドライバが読み込まれないように設定しておきます。
$ sudo vi /etc/modprobe.d/cdc_acm-blacklist.conf blacklist cdc_acm
さらに、udevでttyUSB*として認識してもらうための設定をします。
(引用元: http://slashdot.jp/journal/491733/ubuntu-9.04-%E3%81%A7-docomo-L-02A-%E3%82%92%E4%BD%BF%E3%81%86 (ありがとうございます!))
$ sudo vi /etc/udev/rules.d/99-foma_l-02a.rules # for FOMA L-02A # USB Storage (Zero Installation) KERNEL=="sr[0-9]*", ENV{ID_VENDOR_ID}=="1004", ENV{ID_MODEL_ID}=="610c", RUN+="/usr/bin/eject /dev/$kernel" # USB Modem (ttyUSB) SUBSYSTEM=="usb", ATTR{idVendor}=="1004", ATTR{idProduct}=="6109", RUN+="/sbin/modprobe usbserial vendor=0x$attr{idVendor} product=0x$attr{idProduct}"</del>これでL-02Aを接続しなおしてみると...。
$ ls /dev/ttyUSB* -la crw-rw---T 1 root dialout 188, 0 xxx xx xxxx /dev/ttyUSB0 crw-rw---T 1 root dialout 188, 1 xxx xx xxxx /dev/ttyUSB1 crw-rw---T 1 root dialout 188, 2 xxx xx xxxx /dev/ttyUSB2認識されましたね( ´∀`)b!
続いて、接続設定をします。
pppconfigを実行すると、テキストベースのGUIが表示されます。
$ sudo pppconfig
まずは、[Create]を選択。 尚、都合によりスクリーンショットはターミナルからSSH接続したものですw |
- Provider name:
ponするときの名前になりますので、適当に入力します。
ここでは、"serversman_sim100"としました。 - Number: "*99***1#"
- Authentication Method: "CHAP"
- User:
"user@3gd.ynmbl.net"→ "user@dream.jp" (LTEへの移行にともない変更) - Password:
"3gd"→ "dti" - Speed: "115200"
- Com: "/dev/ttyUSB0"
- DNS:"Static"を選び、適当にGoogle Public DNSでも登録しておきますw
("Dynamic"を選んでも良いはずなのですが、何故かうまくいかなかったので・・・。) - Primary: 8.8.8.8
- Secondary: 8.8.4.4
あとは、ponコマンドで接続するだけです。 (ちなみに切断するときは、poffコマンド。)
$ sudo pon serversman_sim100これで接続されます。
尚、接続中は、L-02Aのランプ(下側)が青色に点灯します。
接続できているか、確認してみましょう。
$ ifconfig -a ppp0 Link encap:Point-to-Point Protocol inet addr:xx.xx.xx.xx P-t-P:10.64.64.64 Mask:255.255.255.255 UP POINTOPOINT RUNNING NOARP MULTICAST MTU:1500 Metric:1 RX packets:xxxxx errors:x dropped:0 overruns:0 frame:0 TX packets:xxxxx errors:x dropped:0 overruns:0 carrier:0 collisions:x txqueuelen:x RX bytes:xxxxxx (xxx.x KiB) TX bytes:xxxxxx (xxx.x KiB)
グローバルIPアドレスが割り当てられている事が確認できます。
pingも通るようならOKですね。
...おっとw サーバにしてみよう!ということでしたね ( ゚д゚)!
とりあえず、ファイアウォールの設定を。
いつも通りにiptableを直接使ってもいいのですが、Raspbianですし、手軽にufwで。
これで、他のPCのブラウザから、L-02Aに割り当てられたグローバルIPアドレスにアクセスすることで、Raspberry Pi上のHTTPサーバにアクセスができます!
歴としたWebサーバの完成です∩( ・ω・)∩!w
もちろん...このIPアドレスは変動しますので、一般的な自宅サーバなどと同様に、DDNS (MyDNS.jpなど)のお世話になると良いかと思います。
また、DDNSへのIPアドレス登録には、DiCEを使わせてもらってもいいのですが、今回はもっと簡単に、”数分ごとにIPアドレスの変動をチェックしてDDNSにIPアドレス登録を行う”ようなスクリプトを書きました。
あとは切断された時に自動接続するスクリプトを書いてcrontabに入れておくとか...。
perlでゴリゴリしてみるとか、Webカメラをつないでネットワークカメラ代わりにしてみるとか、何かおもしろいセンサーをつけてみるとか...
(Raspberry Piは普通にLinuxですので大概何でもできてしまいます。夢が膨らみますね(>ω<)♪ww)
※ 最後になりましたが、前もって当然のことながら、SSH等は別途必要に応じて適切に設定しておいてください。(パスワードログインを無効化して公開鍵認証にするとか、ポート変更をするとか....その他諸々。)
pingも通るようならOKですね。
$ ping google.comさらに、自動接続できるようにしておきます。
$ sudo gpasswd -a pi dip
$ vi /etc/local.d ~~~~ pon serversman_sim100 exit 0;接続は以上です。
...おっとw サーバにしてみよう!ということでしたね ( ゚д゚)!
とりあえず、ファイアウォールの設定を。
いつも通りにiptableを直接使ってもいいのですが、Raspbianですし、手軽にufwで。
$ sudo ufw default DENY $ sudo ufw allow 80/tcp $ sudo ufw enableあとは、nginxをインストールしてお茶を濁しておきます(笑)
$ sudo apt-get install nginx $ sudo service nginx start
あとは切断された時に自動接続するスクリプトを書いてcrontabに入れておくとか...。
perlでゴリゴリしてみるとか、Webカメラをつないでネットワークカメラ代わりにしてみるとか、何かおもしろいセンサーをつけてみるとか...
(Raspberry Piは普通にLinuxですので大概何でもできてしまいます。夢が膨らみますね(>ω<)♪ww)
※ 最後になりましたが、前もって当然のことながら、SSH等は別途必要に応じて適切に設定しておいてください。(パスワードログインを無効化して公開鍵認証にするとか、ポート変更をするとか....その他諸々。)
ServersMan LTE 100 に強制交換のユーザーは2015年までの間はグローバルアドレスを無料で使わせていただけるらしいですぞ!!
返信削除でも、DtiHP上のどこから申し込むのか現在探し中なのであります^^;
ありがとうございます。
削除そうですね・・・。
先日、私の元にも、LTE対応のSIMカードが届きましたが、グローバルIPアドレスまわりのことは何か書かれていませんでした。とりあえず様子見ですね(^^;)
おしい
返信削除タイトルに「DTIsim」の文字を
入れれば検索しやすかったのに
貴重な情報ありがとうございます。
私もこの記事と全くほぼ同じ環境を持っており、
返信削除この記事を参考にし、L-02Aのデータ通信を試みました。APNはwillcomcore3G(a.willcomcore.jp)です。
L-02Aの端末は緑から接続した青色に代わり、ifconfigを見てもppp0にグローバルIPアドレスが振られていることが確認できました。
ですが、外部からpingを打ったり、ファイアウォール等を全て切ってsshの接続を試みても、接続できませんでした。
再度ifconfigを見たら、errorsとtxqueuelenの数値が増え続けるだけでした。
何か心当たりのある部分がありましたら、ご助言頂けませんでしょうか。
よろしくお願いします。