(本サイトは、アフィリエイト広告を利用しています)

Fing – ネットワーク上の機器を探す!あきれるほど便利なネットワーク解析アプリ

2020年6月11日ネットワーク

 

こんにちは!

 

格安Web監視カメラ SV3Cの設定を変更しようと思ったら、久しぶりにさわったため、操作の仕方を忘れて冷や汗ものだった、しずかなかずしです。

 

ホームネットワークで、IoTガジェットを使い倒してますか??

そして、ホームネットワークというと何を思い浮かべるでしょう?

 

最近は、自宅に光回線(FTTH)があって、WiFi ルータを設定するケースが増えています。下図は 総務省のデータよりグラフ化したもので、光回線アクセスの契約者数です。見事な右肩上がりですね。このような世帯は、WiFiルータを設置し、スマホからWiFi経由でインターネットに接続している場合がほとんどでしょう。

なにしろ、スマートフォンの普及率は2017年時点で既に7割を越えます。同居している家族がいれば、家の中にスマホが2台や3台あって、1台のWiFiルータに複数のスマホがつながっている、というご家庭も多いに違いありません。

 

そういったご家庭は、知らず知らずのうちに「ホームネットワーク」を構築していると言えるのですが、それと知らずに使っている、という方も多いのではないでしょうか。

 

FTTHアクセスサービスの契約者数(総務省のデータよりグラフ化)
FTTHアクセスサービスの契約者数(総務省のデータよりグラフ化)

 

そんな、「ホームネットワーク」ですが、家の中にネットワーク接続機器が増えてくると、こんなことが起こります。

 

はて、あの機器のIPのアドレスは?わからないな??何番だっけ?

 

などと困ることって、よくありますよね?

 

「そんなこと気にしたことありません!」

 

という方。幸せです。今後も気にせずにインターネットを満喫しましょうー。

 

気になる方。きっと私と同じ感覚です。

今日の記事はそんなあなたに送る、「ホームネットワークあるある」を解決してくれる、すごいスマホアプリ “Fing"のご紹介です。

 

ホームネットワークあるある

我が家はホームネットワークに、たくさんの機器がつながっており、WiFiルーターを経由して光回線(FTTH)でインターネットに接続しています。そんなたくさんの機器がつながる場合の「ホームネットワークあるある」と言えば、ネットワーク上の機器が見つけられないという問題です。

 

リビングのパソコンから、書斎にあるネットワークプリンターに印刷しようと思ったけどIPアドレス何番だっけ?ということが起こります。ネットワークプリンターなら書斎まで行って小さな液晶の設定画面を見れば、DHCPで割り当てられたIPアドレスが表示されているかも知れません。

 

でも、セキュリティ・カメラなどのように設定画面が物理的にない機器もあります。そんな時は、セキュリティ・カメラのIPアドレスを知らないと、カメラが持つWebベースの設定画面を開きたくても開けない、なんてことが起こります。

 

ちなみに、IPアドレスやポート番号がわからない、詳しく知りたい、という方は「家」アナロジーで判りやすく説明する記事を書いていますので、こちらをご覧ください。

 

機器のアドレスを調べる原始的な方法

そもそも、なんで自分のホームネットワークにつないだ機器なのに、自分でIPアドレスがわからなくなってしまうのでしょう??

 

それは、DHCP(Dynamic Host Configuration Protocol)と呼ばれるプロトコルによって、機器にIPアドレスが自動で振られるからです。通常、ホームネットワークでは、DHCPのサーバーとなるのは、WiFiルーター(ホームルーター)です。

ということは、WiFiルーターの管理画面をみると、DCHPサーバーの割り当てたアドレスと、相手機器の情報が表示される可能性があります。ここは、ルーターの管理画面の仕様によります。全く表示機能を持たないルーターもあります。

 

わが家のホームルーターは、NTTフレッツ光の光ルーター「PR-S300SE」です。

このルーターの管理画面では、「DHCPv4サーバ払い出し状況」というページがあります。

ここに以下のように、ホームネットワークにつながる機器に対して、ルーターが割り当てたIPアドレスの一覧を得ることができます。

PR-S300SE-DHCP払い出し状況
PR-S300SE-DHCP払い出し状況

このルーターの場合は、機器のMACアドレスを表示しています。(上図で、赤く塗りつぶしている領域)

MACアドレスは、機器固有のアドレスです。ネットワーク機器製造者が製造した機器に固有のIDを振って出荷します。ですので、MACアドレスの中には機器を特定する番号が含まれます。

 

世の中には、MACアドレスから製造者を特定してくれるサービス(UIC)があります。こういったものを使うと、IPアドレスが割り当てられた機器が、例えば、MACアドレスがApple製とわかったら、「あ、192.168.1.11は奥さまのiPhoneだな!」という事がわかる、という訳です。

 

ただし、このような一覧を表示するのは、先程も言ったようにルーターの仕様によります。例えば、TP-linkのルータ(Archer C50 設定画面のエミュレーター)では(頑張って?)機器の名前を表示してくれたりします。これだと一発で、機器に対するIPアドレスがわかるので便利ですね。

 

 

一方、IPアドレスだけを表示してMACアドレスを表示しないようなルーターの場合には、もっと困ります

その場合はどうするのでしょう?

例えば、事前に機器に「Webブラウザで表示できる管理画面があることがわかっている」場合においては、

http://192.168.1.x/

みたいなアドレスを、一覧にある全てのIPアドレスに対してパソコンのブラウザからアクセスしてみて、当該ページが開けるかどうか一つ一つ調べる、という方法が考えられます。

 

とても原始的でアナログですね。

機器が増えるとかなり大変な作業です。

 

 

ちなみに、DHCPの仕組みは詳しく書かれた記事「【図解】初心者にも分かるDHCPの仕組み (シーケンス、UDPを使う理由、実装例、設定例)」が参考になります。

 

 

機器のアドレスを調べるちょっと進んだやり方

意外と大変な機器のIPアドレス探し。

技術的にはさまざまな検出の工夫があり、一般にネットワーク上で特定の機器を探すことを「Discovery(ディスカバリ)」と呼んだりします。

 

例えば、IoT機器の代表格であるHueスマート電球では、「ブリッジ」と呼ばれる機器のIPアドレスを探す仕組みが色々と用意されていてます。

 

詳しくは、こちらの記事をご覧ください↓

 

この記事にあるように、技術的にはDiscoveryを行う方法がいくつか存在します。

 

UPnP(Universal Plug and Play) という使用に基づき、SSDP(simple service discovery protocol)と呼ばれるプロトコルを使って検出する方法。

 

または、機器が定期的にクラウドの特定サーバーに自分のIPアドレスを通知しておき、知りたいクライアントが、特定サーバーにアクセスして検出する方法(Hueでは、N-UPnPと呼んでいる)。

 

mDNS (multicast DNS) と呼ばれるプロトコルを使う方法、などいくつかの仕組み・プロトコルを使ってなんとか、ホームネットワーク上で機器を探そうという訳なのです。

 

ただし、結局機器が上記のような仕組みをサポートしているかどうかによってIPアドレスを見つけられるかどうかが決まってしまいます。簡単に言うと、例えば、SSDPのプロトコルの呼び出しに答えない(SSDPをサポートしていない)機器はIPアドレスを知ることができない、ということなのです。

 

 

あきれるほど便利なFing登場!

そんな庶民の悩みを解決してくれるすごいアプリにめぐり逢いました。

それが、Fing(フィング)です。

 

Fing - Google Play storeより
Fing – Google Play store より

ホームネットワークにつながるスマホにこのアプリをインストール。

スキャンボタンを押すと数秒の後に、ホームネットワークにつながる全ての機器の一覧を表示してくれます。

しかも、Tabletや、Television、プリンターの名前、スマホの名前なども一覧で表示、全ての機器の名前とIPアドレスがセットで手元に簡単に入手できる、という訳です。

 

なんて簡単なんでしょう!

 

Fing - スクリーンショット(機器一覧)
Fing – スクリーンショット(機器一覧)

 

機器を選んで詳細画面に進むと、さらに詳しい情報が得られます。

そして、その機器が開いているポートを確認できます。いわゆる「ポートスキャン」ですね。

 

Fing - 機器の詳細画面
Fing – 機器の詳細画面

上記の例は、Brotherのプリンターの画面です。

 

この画面で、「開いているポートをみつける」(赤丸を付けたボタン)を押すと、ポートスキャンが始まり、下図の通り。

プリンターが開いている待受ポート(サーバーのポート番号)が一覧表示されます。

 

Fing - ポート番号一覧
Fing – ポート番号一覧

 

Fingのポートスキャンの動作とは?

上記のポート番号一覧をみると、ポート番号が対応しているプロトコルまで表示しています(ftp, https, lpd,…など)。これは、何か機器とデータのやり取りをした結果を解析しているのでしょうか??

Fingのポートスキャンの動作が気になって、思わず調べてみました。

 

nodejsのちょうどいいTCPのサーバープログラムがあったので、試してみます。

ホームネットワークに接続されているUbuntuのパソコン上でtcp-server.jsというファイルに上記のサイトのサーバープログラムをコピペして動かします。

 

結果はご覧の通り。

 

nodejs の TCPサーバーでポートスキャンを待つ
nodejs の TCPサーバーでポートスキャンを待つ

 

つまり、7002ポートにアクセスして、すぐ切る、という動作ですね。

データのやり取りがあれば、別な表示が出るはずですが、それがないので、「ポートを開いて閉じる」という単純動作を機器の全てのポートに対して実行している、という感じです。

ですので、表示されているプロトコルは、いわゆる、「Well-known port(ウェルノウンポート)」などのプロトコルを表示しているだけのようです。

 

すこしマニアックな確認でした。

 

 

 

ちなみに、ポート番号について理解を深めたい方は、「家」アナロジーで説明した以下の以前の投稿記事を参考にしてみて下さい。

 

 

ホームネットワーク機器色々…