2009年12月24日木曜日

Mac OSX Snow Leopard + Android(HT-03A) = テザリング

テザリングとは

スマートフォンを他の携帯電話回線に接続できない機器(ノートパソコンなど)のモデムとして使用し、インターネットへ常時接続させることです。英語では「Tethering」と記述します。
これにより、例えばスマートフォンとノートPCをUSBやBluetoothに接続するだけで、ノートパソコンにおいてインターネットが利用できる環境を作ることができるのです。

今回はこのテザリングをやってみようと、最近購入したMac mini(Mac OSX Snow Leopard)とAndroid端末(HT-03A)を使い様々実験をし、接続を確認しました。

以下その手順をご説明いたします。
なお、私の以下の手順による不具合やパケット料金の高額請求については責任を負いません。

1. 「X Code Tools」をインストール
「X Code」は、Mac OSXのインストールDVDに同梱されております。

2. 「MacPorts」をインストール
「MacPorts」は以下のURLよりダウンロードして下さい。

ダウンロードURL:
http://www.macports.org/install.php

3. 環境変数の設定
ターミナルを起動し、以下のコマンドを入力して下さい。

「export MANPATH=/opt/local/man:$MANPATH」

Android SDKインストール時に、「.bash_profile」を作成した方は、上記のコマンドを「.bash_profile」に追記し、「source .bash_profile」というコマンドにより反映させて下さい。

4. adbコマンドにパスを通す
3同様の方法でAndroid SDKに同梱されている「adb」にパスを通します。Android SDKのインストールについては、
http://i-geek-apple.blogspot.com/2009/12/android-sdk20.html
を参照して下さい。

「export PATH=$PATH:/Developer/android-sdk-mac_86/tools/adb」

Android SDKインストール時に、「.bash_profile」を作成した方は、上記のコマンドを「.bash_profile」に追記し、「source .bash_profile」というコマンドにより反映させて下さい。

5. 「tuntaposx」のインストール
最初にインストールした「MacPorts」を使用し「tuntaposx」をインストールします。
ターミナルを起動し、「sudo port install tuntaposx」を実行して下さい。
インストールが終了したら、コンピュータを再起動します。
※上記の方法を利用すると正常に動かないことが判明しました。
ターミナルにおいて「ls /dev」を実行した際、tun0〜15、tap0〜15が無い場合、tuntaposxは正常にインストールされておりません。
以下のURLよりTUNTAP最新版をダウンロードしインストールを行って下さい。

ダウンロードURL:
http://tuntaposx.sourceforge.net/index.xhtml

6. 「openvpn2」のインストール
次に、「sudo port install openvpn2」を実行し「openvpn2」をインストールします。

7. 「azilink」のダウンロード

以下のダウンロードURLより「azilink」をダウンロードして下さい。

ダウンロードURL:
http://code.google.com/p/azilink/

ダウンロードしたzipファイルに含まれる「azilink.apk」についてはAndroid端末へインストールして下さい。この時、Android端末のアプリケーション設定において「提供元不明のアプリ」にチェックを入れてから行って下さい。

また同zipファイルに含まれる「azilink.ovpn」をテキストエディットで開き、以下のように記述し直して下さい。


dev tun0

remote 127.0.0.1 41927 tcp-client
proto tcp-client
ifconfig 192.168.56.2 192.168.56.1
route 0.0.0.0 128.0.0.0
route 128.0.0.0 128.0.0.0
#socket-flags TCP_NODELAY
#keepalive 10 30
#ping 10
dhcp-option DNS 192.168.56.1

記述し直したら保存し、任意のフォルダに配置して下さい。この配置場所へのパスは後ほどしようしますので、覚えておいて下さい。


8. 起動スクリプトの作成
以下の内容を記述したシェルスクリプトを作成します。拡張子は「.sh」として下さい。(今回は「azilink.sh」としました)

起動スクリプト:


#!/bin/bash

#set -x

CPATH=`pwd`

VPNCMD="openvpn2"
OPENVPN=`which $VPNCMD`
OPVN=/Developer/Tethering/azilink.ovpn
NS=192.168.56.1
TUN=tun0

init() {
    adb forward tcp:41927 tcp:41927
    wait 1
    $OPENVPN --config $OPVN --up "$0 up" --down "$0 down" &
}


up() {
    /usr/sbin/scutil <
open
d.init
get State:/Network/Interface/$TUN/IPv4
d.add InterfaceName $TUN
set State:/Network/Service/openvpn-$TUN/IPv4

d.init
d.add ServerAddresses * $NS
set State:/Network/Service/openvpn-$TUN/DNS
quit
EOF
}


down() {
    /usr/sbin/scutil <
open
remove State:/Network/Service/openvpn-$TUN/IPv4
remove State:/Network/Service/openvpn-$TUN/DNS
quit
EOF
}



stop() {
    set -x
    down
    killall -9 -c $VPNCMD
    adb kill-server
    set +x
}


case $1 in
    up   ) up ;;
    down ) down ;;
    stop ) stop ;;
    start) init ;;
esac





9行目に記述されたazilink.ovpnへのパスは先ほど覚えておいたパスを記述するようにして下さい。


9. azilink.shのパーミッション設定
ターミナルを開き、以下のスクリプトを実行して下さい。


「chmod 755 /Developer/Tethering/azilink.sh」


10. いよいよ起動
a) AndroidにおいてAzilinkを立ち上げます。「Service active」という箇所にチェックを入れ、「Waiting for connection」となることを確認して下さい。


b) MacとAndroidをUSBケーブルでつないで下さい。
ただしこの時、Androidの「アプリケーション設定→開発」において「USBデバッグ」にチェックを入れてから接続して下さい。


c) 「/Developer/Tethering/azilink.sh start」を実行し接続します。パスワードを要求されることがあるので、ローカルアカウントパスワードを入力して下さい。


以上でテザリングの方法は終了です。インターネットに接続できることを確認して下さい。
なおテザリングを終了させたい場合は、「/Developer/Tethering/azilink.sh stop」を実行して下さい。
途中で無線LANを立ち上げ、他のネットワークにつないだりなどの行為をした後、再度テザリングを行う場合は、一旦「/Developer/Tethering/azilink.sh stop」を実行してから再度スタートさせて下さい。

1 件のコメント:

フォロワー