「Android テザリング」の版間の差分
42行目: | 42行目: | ||
* 最後に、このインターフェースを使って[[ネットワーク設定#IP アドレスの設定|ネットワーク接続を設定]]します。例: |
* 最後に、このインターフェースを使って[[ネットワーク設定#IP アドレスの設定|ネットワーク接続を設定]]します。例: |
||
: {{bc|# dhcpcd enp0s20u3}} |
: {{bc|# dhcpcd enp0s20u3}} |
||
+ | |||
+ | ==== systemd-networkd と udev を使う ==== |
||
+ | |||
+ | [[systemd-networkd]] を使うことで接続した携帯をゲートウェイとして自動的に使うようにネットワークを設定できます。 |
||
+ | |||
+ | {{hc|/etc/udev/rules.d/90-android-tethering.rules|<nowiki> |
||
+ | # Execute pairing program when appropriate |
||
+ | ACTION=="add|remove", SUBSYSTEM=="net", ATTR{idVendor}=="18d1" ENV{ID_USB_DRIVER}=="rndis_host", SYMLINK+="android", RUN+="/usr/bin/systemctl restart systemd-networkd.service" |
||
+ | </nowiki>}} |
||
+ | |||
+ | {{ic|idVendor}} の値はあなたの使用している携帯に合わせて変更してください。''udevadm'' を使うことで確認できます: |
||
+ | |||
+ | $ udevadm info /sys/class/net/enp0s26u1u2 |
||
+ | |||
+ | そして適当な systemd-networkd ファイルを作成: |
||
+ | |||
+ | {{hc|/etc/systemd/network/enp0s26u1u2.network|<nowiki> |
||
+ | [Match] |
||
+ | Name=enp0s26u1u2 |
||
+ | |||
+ | [Network] |
||
+ | DHCP=ipv4 |
||
+ | </nowiki>}} |
||
==OpenVPN を使って USB テザリング== |
==OpenVPN を使って USB テザリング== |
||
110行目: | 133行目: | ||
{{bc|<nowiki>$ dbus-send --system --type=method_call --dest=org.bluez /org/bluez/hci0/dev_AA_BB_CC_DD_EE_FF org.bluez.Network1.Connect string:'nap'</nowiki>}} |
{{bc|<nowiki>$ dbus-send --system --type=method_call --dest=org.bluez /org/bluez/hci0/dev_AA_BB_CC_DD_EE_FF org.bluez.Network1.Connect string:'nap'</nowiki>}} |
||
− | これでネットワークインターフェース {{ic|bnep0}} が作成されます。最後に、このインターフェースで[[ |
+ | これでネットワークインターフェース {{ic|bnep0}} が作成されます。最後に、このインターフェースで[[ネットワーク設定#IP アドレスの設定|ネットワーク接続を設定]]してください。Android はデフォルトで DHCP を提供します。 |
==SOCKS プロクシを使ってテザリング== |
==SOCKS プロクシを使ってテザリング== |
2015年8月21日 (金) 16:49時点における版
テザリングとはスマートフォンのネットワーク接続を使って PC からインターネットにアクセスする手法です。Android Froyo (2.2) から USB テザリングと Wi-Fi アクセスポイントテザリングがネイティブでサポートされています。古いバージョンの Android OS でも、非公式の ROM にはこのオプションが有効になっているものが多く存在します。
目次
Wi-Fi アクセスポイント
Android スマートフォンを Wi-Fi アクセスポイントとして使う (3G を使用) ことは Froyo (Android 2.2) からデフォルトで root 化する必要なく出来るようになっています。加えて、この方法は USB による方法と違って、バッテリーを急速に消費し、著しい発熱をすることがあります。
参照: menu/wireless & networks/Internet tethering/Wi-Fi access point
USB テザリング
必要なツール
- スマートフォンの root 権限 (Android のバージョンが古い場合。Froyo (Android 2.2) 以降ではネイティブで可能です)
- スマートフォンから PC に接続するための USB 接続ケーブル
手順
- コンピュータをあらゆる無線・有線ネットワークから切断します
- USB ケーブルを使ってスマートフォンをコンピュータに接続します (USB 接続モード -- Phone Portal, メモリカードまたは充電のみ -- は重要ではありませんが、テザリング中に USB モードを変更することはできないので注意してください)
- スマートフォンからテザリングオプションを有効にします。通常は
Settings --> Wireless & Networks --> Internet tethering
(最近のバージョンではTethering & portable hotspot
) から有効にします。 - 次のコマンドを使って USB インターフェースがシステムによって認識されているか確認します:
$ ip link
- 以下のように
usb0
またはenp?s??u?
デバイスが表示されるはずです (ここでは enp0s20u3 デバイス):
# ip link
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT group default link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 2: enp4s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP mode DEFAULT group default qlen 1000 link/ether ##:##:##:##:##:## brd ff:ff:ff:ff:ff:ff 3: wlp2s0: <BROADCAST,MULTICAST> mtu 1500 qdisc mq state DOWN mode DEFAULT group default qlen 1000 link/ether ##:##:##:##:##:## brd ff:ff:ff:ff:ff:ff 5: enp0s20u3: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN mode DEFAULT group default qlen 1000 link/ether ##:##:##:##:##:## brd ff:ff:ff:ff:ff:ff
- 最後に、このインターフェースを使ってネットワーク接続を設定します。例:
# dhcpcd enp0s20u3
systemd-networkd と udev を使う
systemd-networkd を使うことで接続した携帯をゲートウェイとして自動的に使うようにネットワークを設定できます。
/etc/udev/rules.d/90-android-tethering.rules
# Execute pairing program when appropriate ACTION=="add|remove", SUBSYSTEM=="net", ATTR{idVendor}=="18d1" ENV{ID_USB_DRIVER}=="rndis_host", SYMLINK+="android", RUN+="/usr/bin/systemctl restart systemd-networkd.service"
idVendor
の値はあなたの使用している携帯に合わせて変更してください。udevadm を使うことで確認できます:
$ udevadm info /sys/class/net/enp0s26u1u2
そして適当な systemd-networkd ファイルを作成:
/etc/systemd/network/enp0s26u1u2.network
[Match] Name=enp0s26u1u2 [Network] DHCP=ipv4
OpenVPN を使って USB テザリング
この方法はどんな古いバージョンの Android でも使うことができ、スマートフォンの root 化や改造を必要としません (Android 2.2 以降でも使えますが、あまり意味はありません)。
ブラウザに変更をすることはありません。それどころか、全てのネットワークトラフィックはあらゆる PC アプリケーションにおいて透過的に処理されます (ICMP の ping は除く)。多少、スマートフォンの CPU を酷使することになります (パワフルな Acer Liquid でも 500 kBytes/sec のデータ通信をするには CPU を 50% 以上使うことになります)。
必要なツール
Arch では、openvpn パッケージをインストールする必要があります。また、Android SDK のインストールも必須です (AUR や ここ から取得できます)。スマートフォン側では、azilink アプリケーションが必要になります。コンピュータの OpenVPN と通信するための Java ベースの NAT です。
Arch Linux で携帯電話の接続を設定
Android SDK をインストールしたら、SDK に入っているツールを使うためにスマートフォンを udev で適切に設定してあなたの使用している Linux ユーザーに権限を与える必要があります。この設定を行わない場合、Android SDK を使用するのに root 権限が必要になりますが、root を使うのは推奨されていません。設定を行うために、スマートフォンから USB デバッグを有効にして (Settings -> Applications -> Development -> USB debugging)、USB ケーブルでスマートフォンと PC を接続し、lsusb
コマンドを実行してください。デバイスが記載されているはずです。Acer Liquid の場合の出力例:
Bus 001 Device 006: ID 0502:3202 Acer, Inc.
それから、以下のファイルを作成してください (ciri はあなたの Linux ユーザーの名前に、0502 はあなたのスマートフォンのベンダー ID に置き換えてください):
/etc/udev/rules.d/51-android.rules
SUBSYSTEM=="usb", ATTR(idVendor)=="0502", MODE="0666" OWNER="ciri"
変更を適用するために root で udevadm control restart
コマンドを実行します (もしくはコンピュータを再起動してください)。
Now run in your linux PC the adb shell
command from the Android SDK as plain (non root) user: you should get a unix prompt in your phone.
手順
Run the AziLink application in the phone and select "About" at the bottom to receive instructions, which basically are:
- You will have to enable USB debugging on the phone if it was not already enabled (usually in Settings -> Applications -> Development -> USB debugging).
- Connect the phone with the USB cable to the PC.
- Run AziLink and make sure that the Service active option at the top is checked.
- Run the following commands in your Linux PC:
$ adb forward tcp:41927 tcp:41927
# openvpn AziLink.ovpn
AziLink.ovpn
dev tun remote 127.0.0.1 41927 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 dhcp-option DNS 192.168.56.1
トラブルシューティング
DNS
resolv.conf の中身を以下のように手動で更新する必要があります:
/etc/resolv.conf
nameserver 192.168.56.1
NetworkManager
NetworkManager を使っている場合、OpenVPN を実行する前に停止させる必要があります。
Bluetooth でテザリング
Android (4.0 以降。前のバージョンでも出来ることあり) はアクセスポイントモードの Bluetooth パーソナルエリアネットワーク (PAN) に対応しています。
NetworkManager がこのアクションを実行できネットワークの初期化を処理します。詳しくはドキュメントを見て下さい。
もしくは: Bluetooth の記事の記述に従って、ペアリングをしてコンピュータと Android デバイスを接続できるようにしてから、次を実行 (デバイスのアドレス (AA_BB_CC_DD_EE_FF
) は置き換えて下さい):
$ dbus-send --system --type=method_call --dest=org.bluez /org/bluez/hci0/dev_AA_BB_CC_DD_EE_FF org.bluez.Network1.Connect string:'nap'
これでネットワークインターフェース bnep0
が作成されます。最後に、このインターフェースでネットワーク接続を設定してください。Android はデフォルトで DHCP を提供します。
SOCKS プロクシを使ってテザリング
このテザリング方法はスマートフォンから PC へのポートフォワーディングによって行います。ブラウジングだけに使うことができます。Firefox の場合、about:config
で network.proxy.socks_remote_dns
を true
に設定してください。
必要なツール
- AUR の android-sdkAUR と android-sdk-platform-toolsAUR、公式リポジトリの android-udev
- スマートフォンから PC に接続するための USB 接続ケーブル
- Tetherbot または Proxoid のどちらか
手順
Tetherbot
[1] の Using the Socks Proxy の指示に従って下さい。
Proxoid
[2] で説明されている手順に従って下さい。