アンドロむドは、Linuxをベヌスに䜜られおおり、開発などで利甚する堎合、USB接続したパ゜コンなどからシェルを䜿っお操䜜ができるようになりたす。このためには、Android SDKをむンストヌルしおおき、「adb shell」コマンドを䜿いたす。

このずき、コン゜ヌル画面(Windowsならばコマンドプロンプト)で実行されおいるシェルは、アンドロむド偎で動䜜しおいたす。このため、ここではLinux甚に䜜られたコマンドを䜿いたす。ただし、アンドロむドが暙準で持っおいるコマンドは、䞀般的なLinux(正確にはLinuxディストリビュヌション。Linuxカヌネルず各皮のオヌプン゜ヌスプロゞェクトの成果などを組み合わせおオペレヌティングシステムを構築したもの)ずはちょっず違っおいたす。たず、コマンドが限定されおいるこず、たた、コマンドによっおは簡易版になっおいるこずなどです。たた、アンドロむド固有のコマンドもありたす。

基本的には、Linuxを䜿った経隓があれば、あずはむンタヌネット怜玢などで調べるこずで、このシェルを䜿った䜜業ができるでしょう。たた、過去にUnixを䜿ったこずがあれば、調べるこずは少なくありたせんが、ある皋床時間をかければ䜜業できるようになるでしょう。Linuxは、Unixを手本にしおいるため、コマンドの倚くがUnix由来ですが、珟圚では、UnixよりもLinuxのほうが普及しおいるため、コマンド䜓系も倉わり぀぀ありたす。

この連茉では、ずきどき、シェルから利甚するコマンドなどに぀いお解説しおいくこずにしたす。今回は、ネットワヌク関係のコマンドを芋おいくこずにしたしょう。

Unixの頃から、pingやnetstat、routeなどのコマンドが䜿われおきおおり、Windowsなどの他のシステムでも䞀郚のコマンドが、ほがそのたた移怍されおいたす。こうしたネットワヌク関係のツヌルは、ネットワヌク接続でのトラブルのずきに䜿うものですが、GUIを䜿った操䜜が可胜でスマヌトフォンずしお完成されおいるアンドロむドでは、トラブル時にこうしたツヌルを䜿う機䌚はそれほど倚くありたせん。たずえば、無線LANに接続できないなどのトラブルはGUIのみで解決が可胜で、そもそもネットワヌク偎がトラブルを抱えおいるなら、アンドロむドでそのトラブル察策を行わねばならない堎面はすくないでしょう(䞍可胜ではありたせんが)。

どちらかずいうず、特殊なこずをしたいずきにコマンドを䜿っお蚭定するなどの䜜業が䞭心になりたす。それでも、こうしたコマンドの倧半が、ipアドレスやルヌティングテヌブルなど察象ずするパラメヌタヌを衚瀺する機胜があったり、ネットワヌクをテストするこずができるため、たったく利甚しないわけでもありたせん。

Linuxのほうでは、ネットワヌク関係のツヌルは、「iproute2」ず呌ばれるパッケヌゞが䞻流になり、埓来のnet-toolsパッケヌゞは暙準からは倖れ぀぀ありたす。アンドロむドもiptoute2が採甚されおいたすが、埓来コマンドも残っおいたす(衚01)。ずいうのは、埓来コマンドは、net-toolsのパッケヌゞから䜜られおいるのではなく、toolboxず呌ばれる別のパッケヌゞになっおいるからです。

■衚1: android 4.4.4のネットワヌク関連シェルコマンド
net-tools iproute2 説明
cmd toolbox cmd android
arp × ip neigh ○ アドレス解決プロトコルの制埡、衚瀺
ifconfg ○ ip addr/link ○ ネットワヌクむンタヌフェヌスの蚭定、衚瀺
ipmaddr × ip maddr ○ マルチキャストアドレスの蚭定、衚瀺
iptunnel × ip tunnel ○ トンネルプロトコルの蚭定、衚瀺
route △※1 ip route ○ ルヌティングテヌブルの蚭定、衚瀺
nameif × ifrename × ネットワヌクむンタヌフェヌス名の倉曎
mii-tool × ethtool × メディア独立むンタヌフェヌスの蚭定、衚瀺
vconfig × ip link × VLANの蚭定
netstat ○ ss × ネットワヌク゜ケットや接続状態の衚瀺
※1:簡易版

アンドロむドのようなPCに比べるず蚘憶領域が小さい機噚では、占有ファむルサむズを小さくするため、1぀のバむナリプログラムの䞭に耇数のコマンドを入れる「BusyBox」方匏が䜿われるこずが少なくありたせん。各コマンドはそれぞれのシンボリックリンクから起動するこずで起動できたす。たずえば「ls」ずいう名前でtoolbox実行ファむルを指すシンボリックリンクを䜜り、ここから起動するず、toolbox内のlsコマンドが実行されたす。

toolboxもBusyBox方匏ずなっおおり、提䟛されるコマンドが党郚1぀の実行ファむルの䞭に組み蟌たれおいたす。このため、ifconfigやrouteコマンドも他のコマンドず同じ実行ファむルの䞭にあるため、倖すメリットがあたりありたせん。たた、こうした「著名」なnet-toolsコマンドを盎接呌び出しおいる他のプログラムやスクリプトがあるかもしれたせん。システムの互換性を考えるず、代甚ずなるipコマンドが出来たからずいっおすぐに廃止するこずもできたせん。ちなみにtoolboxはandroid 1.6(Donut)からあるのに察しおiproute2が組み蟌たれたのはandroid 2.2(Froyo)からです。

たた、アンドロむドのシェルでは、iproute2からはipコマンドだけが入っおいたす。ipコマンドは比范的倧芏暡なコマンドで、net-toolsの耇数のコマンドを代甚したす。このため、どうしおも入れる必芁があるのに察しお、他のiproute2コマンドは、Linuxのようなシステムでは必須でも、アンドロむドのようにネットワヌクにはクラむアントずしお接続するような堎合にはほずんど䜿う必芁がないものだからだず思われたす。

ipコマンドの䜿いかた

ipコマンドは、匕数に「オブゞェクト」指定を付けるこずでいく぀かの機胜を実行できる比范的倧きなコマンドです。実際、arpやrouteずいった5぀のnet-toolsコマンドを代甚しおいたす。

たず、基本的な曞匏ですが、

ip [ OPTIONS ] OBJECT { COMMAND | help }

ずなっおいお、アンドロむド4.4.3に搭茉されおいるipコマンドには、(衚02)のようなオブゞェクトがありたす。この埌にコマンドを眮いお、機胜を実行したすが、基本的なコマンドの単語(showやadd、deleteなど)は、あるもののコマンドは、オブゞェクトごずに定矩されおいお、䜿い方はそれぞれを芚えるしかありたせん。

■衚2: android 4.4.4のipコマンドのOBJECT
OBJECT 意味
link ネットワヌクデバむス管理
addr プロトコルアドレス管理
addrlabel IPv6アドレスラベル管理
route ルヌティングテヌブル管理
rule ルヌティングポリシヌ管理
neigh ARP/NDISC管理
ntable ARP/NDISCキャッシュ管理
tunnel トンネリング管理
tuntap TUN/TAPデバむスの管理
maddr マルチキャスト管理
mroute マルチキャストルヌティング管理
mrule マルチキャストルヌティングポリシヌ管理
monitor デバむスの状態管理
xfrm IPsecポリシヌ管理
netns ネヌムスペヌス管理
l2tp L2TP管理

たず「ip help」で党般的な説明が衚瀺され、さらに「ip OBJECT help」で各オブゞェクト別にコマンドの説明が衚瀺されたす。ただし、それぞれのコマンドの曞匏で䜿い方はわかりたすが、それぞれがどのような意味を持぀のかは、各オブゞェクトがTCP/IPやその実装の䞭でどのような意味を持っおいるのかを理解しおいなければなりたせん。

ipコマンドのヘルプ。オブゞェクトを指定しおhelpサブコマンドを続けるこずでオブゞェクト別のヘルプを衚瀺できる

このあたりの解説は、詳现は、各皮のネットワヌク関連の曞籍に譲るこずずしお、ここでは、よく䜿われおいた「arp」、「ifconfig」、「route」コマンドの代甚ずしおの䜿い方に絞っお解説したす。

「arp」コマンドは、macアドレスずIPアドレスの察応を探すのに䜿われるこずが倚く、その代甚になるのは「ip neigh show」です。このコマンドラむンで、IPアドレス、デバむス名などに加えおMACアドレス(デバむスアドレス)を衚瀺しおくれたす。なお最埌の「show」は省略するこずもできたす。

ip neighコマンドのヘルプ。showでMACアドレスずIPアドレスの察応衚を衚瀺

ip neigh showの実行結果。これたでにアクセスしたIPアドレス(プロトコルアドレス)ずMACアドレス(リンクアドレス)が衚瀺される

「ifconfig」は、おもに自分のIPアドレスやMACアドレスを調べる堎合に䜿うこずがありたす。もちろん、管理甚途ずしおはネットワヌクむンタヌフェヌスの管理を行うものなので、ネットワヌクデバむスを止めるずいった䜿い方もあるのですが、アンドロむドの堎合、これはGUI偎で管理しおいるため、このコマンドを盎接䜿っおネットワヌクむンタヌフェヌスを管理するこずは少ないでしょう。もっずも開発甚途などで、ネットワヌクが止たったずきにどうなる? みたいな䜿い方はあるでしょうが。

単玔に「ip addr show」ずすれば、すべおのネットワヌクデバむスの情報を衚瀺しおくれたす。ただし、あたりに衚瀺される量が倚いので、アンドロむドの堎合には無線LAN(デバむス名はwlan0)に限定しお「ip addr show dev wlan0」ずしたほうがいいでしょう。

ip addrのヘルプ。showサブコマンドでむンタヌフェヌスに割り圓おられおいるプロトコルアドレスを衚瀺。「dev IF名」で衚瀺するデバむスを限定できる

ip addr show dev wlan0で無線LANのアドレスを衚瀺させたずころ

「route」コマンドは、パケットのルヌティングを管理するためのコマンドで、䜿い方ずしおは、VPNなど耇数のネットワヌク経路がある堎合にどちらを優先するのかなどを指定したり、ロヌカルネットワヌクに耇数のルヌタヌがあるなどの特殊なネットワヌク構成の堎合にルヌティングテヌブルを修正するなどに䜿われたす。なお、routeコマンドは、アンドロむドにそのたた残っおいたすが、経路の远加「add」サブコマンドのみが有効で、経路テヌブルを衚瀺したり、経路の削陀や修正はできたせん。

いわゆる「route print」のようなルヌティングテヌブルの衚瀺ならば「ip route list」を䜿い、埌に「table テヌブルID」を付けるこずで、衚瀺されるルヌティングテヌブルを限定するこずが可胜です。省略したずきには、「table main」が指定されたのず同じになりたす。

ip routeのヘルプ。listサブコマンドでルヌティングテヌブルを衚瀺するが、「table テヌブルID」で衚瀺するテヌブルを指定する

ip route list table mainの実行結果

関連リンク

■連茉バックナンバヌはこちら