自宅サーバを Android タブレットの docomo SIM 経由でインターネットに接続する。インターネット側からの自宅サーバへの接続は docomo がグローバル IP アドレスを割り当ててくれないため不可能。
現在,自宅のインターネット環境は,ADSL 回線のタイミングがドンピシャといかなかったため (NTT 局内の回線撤去と開通が同日で行われないため),不通となっている。そこで,今しかできない接続方法を試すことにした。それは,自宅サーバを Android タブレットの SIM 経由でインターネットに接続するというものである。
実際に行ってみたところ,自宅からインターネットへの接続は可能だったが,インターネット側から自宅サーバへの接続は docomo がグローバル IP アドレスを SIM に割り当てていないため不可能だった。
Android タブレットは ASUS Fonepad ME371-GY08 で,これに BB.excite の格安 SIM を刺している (nlog(n): BB.excite SIM を購入したんだが)。
Linux サーバを USB ケーブルで Android タブレットに接続し,タブレットに入っている docomo SIM でインターネットに接続する。
各 IP アドレスは以下のようにして調べることができる。
Linux サーバでインターネット接続するには,まず Android タブレットを USB 接続して,Android の設定でインターネット共有をオンにする。すると,Linux ではネットワークデバイスとして自動認識してくれる。
デバイスが認識されていることが分かる。ここで表示されるデバイス名が usb0 だとすると,このインターフェースに IP アドレスを DHCP で割り当てる必要がある。DHCP サーバは Android タブレットである。dhclient コマンドが使える (Linuxとネットワークの接続をUSBテザリングで行う | sunaba [beta])。
Linux の USB インターフェースに 192.168.42.162 が割り当てられたことが分かる。MAC アドレスも表示されているがご愛嬌ということで。google.co.jp や yahoo.co.jp などに ping して応答があれば完了である。
Linux サーバ自身でインターネットにアクセスできるようになったら,次は配下にある PC もアクセスできるようにしたい。そこで Linux サーバに NAPT ルータの機能を持たせることにする (ネットワークアドレス変換 - Wikipedia)。WAN 側デバイスが usb0,LAN 側のデバイスは有線の eth0 とする。まず,Android タブレットの IP アドレスを確認しておく。上述の dhclient コマンドの出力で, DHCPACK from 192.168.42.129 となっていたらこれが Android の IP アドレスである。
まずはルーティングテーブルの設定である。普段は 192.168.0.1 をデフォルト・ゲートウェイとしているので,これを外してから Android に設定し直す。
次に,異なるネットワークインターフェース間での通信をできるようにする。/etc/sysconfig/network に FORWARD_IPV4=yes 以下の行を追加する。
設定を有効にするために,ネットワークのスクリプトを再起動する。
この設定が有効化されているかどうかは,/proc 内の値で確認することができる。
1 なら有効,0 なら無効である。もし有効になっていない場合は,上の /etc/sysconfig/network と設定が重複するが,/etc/sysctl.conf を編集し,net.ipv4.ip_forward = 1 に設定する。
設定を再読み込みして有効にする。
NAPT の Linux 実装は IP マスカレードなのでこれを指定する (linuxマシンのルータ化 その3 iptablesの設定(IPマスカレード) - ひよっこエンジニアの日記)。
Linux の有線側ネットワークにブロードバンドルータが接続されているので,ブロードバンドルータのデフォルト・ゲートウェイ設定も変更する必要がある (192.168.0.1 → 192.168.42.129)。
PC からインターネットに接続できれば完了である。
今度は逆にインターネット側から SIM を経由して自宅 Linux サーバにアクセスさせるための設定を試す。利用するのは Android アプリの Port Forwarder である。
Port Forwarder アプリを使うと,外部から内部へのポートマッピングが可能になる。Android で root をとっていないと 0〜1023 のポート番号を割り当てることができないが,root でなくてもそれより大きなポート番号であれば割り当て可能なので,試すのであれば十分である。Port Fowarder アプリの設定インターフェースは簡潔で分かりやすい。インターネット側のデバイスの選択とターゲット IP アドレス (内側の IP アドレス),マッピングするポート番号を設定すればよい (ポート転送ソフト「PortForwarder」について)。
デバイスとして rmnet0 を選択すると,100.76.71.44 となった。100.64.*.*/10 はシェアード IP アドレススペースと呼ばれるアドレスレンジで,サービスプロバイダ内で使用されるプライベート IP アドレスである (Geekなぺーじ:CGN用途のISP Shared Address - 100.64.0.0/10)。サブネットマスクは 10 なので,レンジとしては 100.64.0.0 〜 100.79.255.255 となる。
インターネット側から自宅 Linux サーバへのアクセスはできるのか? 結論は「できない」。これは,docomo がグローバル IP アドレスを割り当ててくれていないからである。
この設定をすることにより,遅いながらも自宅ネットワークからインターネットに接続することができるようになる。欠点としては Linux サーバ上で設定変更をいろいろしてしまうので,もとの ADSL 環境に戻したときにすぐに接続ができないことである (設定を戻さなければならない)。
Posted by n at 2015-11-03 20:31 | Edit | Comments (0) | Trackback(0)
Master Archive Index
Total Entry Count: 1957