LoginSignup
3
8

More than 5 years have passed since last update.

古いスマホをWi-Fiルータにする方法

Last updated at Posted at 2017-04-01

Wi-Fiルータの調子がおかしくなって使えなくなり、急遽、古いスマホをWi-Fiルータに仕立てたので、その方法を書いておきます。

今回目指したもの

今回目指したものは以下のようなネットワークです。

 | 光ケーブル
 |
[ONU/HGW]
 |
 | LANケーブル
 |
[Ubuntu] (IPフォワーディング)
 |
 | USBケーブル
 |
[古いスマホ] (USBリバーステザリング、Wi-Fiテザリング、IPフォワーディング)
 |
 | Wi-Fi
 |
[無線接続機器]

今回は、IPアドレスに192.168.99.0/24を使うこととします。

Ubuntu側の設定

ADBの導入

ADBは、AndroidをUbuntu側から操作するために必要となります。公式パッケージに存在しているため、以下によりインストール可能です。
sudo apt install android-tools-adb

IPフォワーディングの設定

まずは、IPフォワーディングが出来るようにファイアーウォールを緩めなければなりません。そのため、/etc/default/ufwを開き、DEFAULT_FORWARD_POLICY="DROP"からDEFAULT_FORWARD_POLICY="ACCEPT"へと変更します。その後、sudo ufw disable && sudo ufw enableにより、ファイアーウォール設定を再読み込みします。

次に、IPフォワーディングを設定します。ここでは取りあえず、IP Masqueradeを使うことにします。

sudo -s
echo 1 > /proc/sys/net/ipv4/ip_forward
iptables -F -t nat
iptables -t nat -A POSTROUTING -o eth1 -j MASQUERADE

古いスマホ側の設定

「開発者向けオプション」の有効化

「開発者向けオプション」の有効化は、PCからUSB経由でAndroid端末を操作するために必要となります。方法については、あちこちに書かれているため割愛。

root化

スマートフォンで細かなネットワークの設定を行うためにはroot権限が必要となります。そのため、古いスマホはroot権限を取っておく必要があります。なお、一時rootだけでも十分なため、既存ファイルの上書きは不要です。

多くの古い端末 (日本の機種を含む) では、get_essential_address、install_backdoor及びrun_root_shellを使ってrootを取るのが手軽でしょう。方法については、あちこちに書かれているため割愛。

USBリバーステザリングの有効化

adb shellに入り、run_root_shellを行ってルートシェルに入り、以下を実行して、USBをRNDISモードにし、ネットワークの設定を行う必要があります。

setprop sys.usb.config rndis,adb
setprop net.dns1 8.8.8.8
ifconfig rndis0 192.168.99.1 netmask 255.255.255.0 up
ip route add default via 192.168.99.254 dev rndis0 onlink

IPフォワーディングの設定

古いスマホ側でもIPフォワーディングが必要となります。adb shellに入り、run_root_shellを行ってルートシェルに入り、以下を実行して、IPフォワーディングを設定します。

echo 1 > /proc/sys/net/ipv4/ip_forward
iptables -F -t nat
iptables -t nat -A POSTROUTING -o rndis0 -j MASQUERADE
iptables -P FORWARD ACCEPT

Wi-Fiテザリングの設定

Androidの設定より、Androidの標準機能を使ってWi-Fiテザリングを有効にします。なお、この時点では古いスマホのアクセスポイントに繋いでも、インターネットに繋がりません。

再度Ubuntu側の設定

最後にUbuntu側でゲートウェイのIPアドレスを設定します。

sudo -s
ifconfig usb0 192.168.99.254 netmask 255.255.255.0

なお、こちらではUSB接続が不安定なためかIPが安定しないため、以下のようなハックを使っています。より良い方法募集中。

while [ true ] ; do ifconfig usb0 192.168.99.254 netmask 255.255.255.0 ; sleep 1 ; done

終わりに

時間がかかると思われたroot化はすんなりと行き (開発者のfi01さん感謝!)、ネットワーク周り (特にNetwork Manager関係) はいつもの通り手間取ってしまいましたが、なんとか動かすことが出来て良かったです。

なお、今のところ実用レベルにはなっていますが、繋ぎとしての利用しか考えていないため、2段NAPTなどの微妙な点を放置しているので注意してください。本格的に使うのであれば、スマートフォンにMicro-USB/有線LAN変換アダプタを繋いでフォワーディングを一段減らすと良いかと思います (充電はドックから。速度は100Mbpsに落ちるはず)。

3
8
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
8