USB接続による逆テザリング(?)
つまりUSBテザリングを使ってPC経由でネットに繋ぐというもの。逆USBテザリングとでも言えば良いのか?
某所で話題になってたので検証してみたが、とりあえずうまくいった。
条件とか
条件
検証環境
制限事項
- dhcpdの切り方がわかんねー
作業フロー
やったこと
USBテザリングの接続
仕様は USB Ethernet/RNDIS の名称で標準化されてるそうです。詳細はこの辺。
利用するドライバ等はOSや機種によるので割愛しますが、以前、Xperia acro と Windows XP の組み合わせを例に、少しだけ説明しています。
仮想NICによるネット接続
- PCの仮想NIC経由でネット接続できるようにごにょごにょする
Windows PC ならインターネット接続共有とか、その他のOSならルーティングするなりブリッジするなり好きにして下さい。
(今回はAndroidのDHCPDの切り方がよく分からなかったので、自宅のネットワーク等へ悪影響が出ないように、インターネット接続共有を利用しました。)
Androidの設定変更と修正
- Android端末のshellにrootで入ってアドレス固定、標準経路をPC経由のネット接続に向ける
busyboxでifconfigを実行すると、こんな具合で仮想インターフェースが見えるはず。
# busybox ifconfig usb0 Link encap:Ethernet HWaddr 9A:98:4B:**:**:** inet addr:192.168.42.129 Bcast:192.168.42.255 Mask:255.255.255.0 inet6 addr: fe80::9898:4b**:****:****/64 Scope:Link UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:6944 errors:0 dropped:0 overruns:0 frame:0 TX packets:3485 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:736017 (718.7 KiB) TX bytes:3533822 (3.3 MiB)
もし usb0 の部分(PC側から直接見えるインターフェース)の名称が異なっているようなら、適宜読み替えること。
アドレス固定は
# ifconfig 192.168.137.2 netmask 255.255.255.0
みたいな感じでおk。もちろん、アドレスはインターネット接続共有だとかブリッジ先だとかに合わせて変更する。
標準の経路情報は、
# busybox route busybox route Kernel IP routing table Destination Gateway Genmask Flags Metric Ref Use Iface 192.168.137.0 * 255.255.255.0 U 0 0 0 usb0 10.0.0.0 * 255.0.0.0 U 0 0 0 rmnet0 default 10.197.11.118 0.0.0.0 UG 0 0 0 rmnet0
とかで確認できる。rmnet0は3G(LTEも同じ?)接続。
# busybox route del default
でrmnet0への経路を消した上で
# busybox route add default gateway 192.168.137.1
とか入れてPC側に経路を向けてやると良い。