同じWi-Fiにいるはずのプリンターが印刷先に出てこない。Apple TVにAirPlayできない。Chromecastの一覧に自宅のテレビがない。こうした症状の多くは機器の故障ではなく、機器が流している「ここにいます」という広告がiPhoneまで届いていないことで起きる。届かない原因は3か所に分かれるので、順に潰す。
01 / HOW IT WORKSBonjourは「広告」で見つける仕組み
Bonjour(mDNS/DNS-SD)では、探す側がサービスの種類をmDNSで問い合わせ、対応機器が自分の名前と接続情報を応答する。機器が自発的に「ここにいます」と知らせを流すこともある。宛先は 224.0.0.251(IPv6では FF02::FB)、UDPの 5353 番、名前の末尾は .local。この宛先はリンクローカルのマルチキャストで、通常は同じLANの中にだけ届き、一般のルーターは別のサブネットへ転送しない。だから通常のルーターを1つ挟んだ向こう側の機器は、正常でも見えない(mDNSリフレクターなどを設定したネットワークは例外)。
種類ごとに決まった名前があり、AirPrintのプリンターは _ipp._tcp、AirPlayは _airplay._tcp、Google Castは _googlecast._tcp を名乗る。テレビやスピーカーのメーカーが使うUPnP(SSDP)は別の仕組みで、宛先 239.255.255.250 のUDP 1900 番に「誰かいますか」(M-SEARCH)と問いかけ、機器からの返事(通常は問いかけ元へのユニキャスト)を集める。機器側が自発的にNOTIFYを流す動作もある。
| 探したい機器 | Sockettaで選ぶ種別 | 補足 |
|---|---|---|
| AirPrint対応プリンター | _ipp._tcp / _printer._tcp | 前者がAirPrintの本体、後者は旧来のLPD印刷 |
| Apple TV・HomePod・AirPlay対応スピーカー | _airplay._tcp / _raop._tcp | _raopは主にAirPlayの音声出力、_airplayはAirPlayの発見用。両方を広告する機器もある |
| Chromecast・Google Cast対応テレビ | _googlecast._tcp | Google Cast built-in対応のAndroid TV/Google TVも同じ |
| Mac・NASのファイル共有 | _smb._tcp / _afpovertcp._tcp / _nfs._tcp | NASはSMBで出ることが多い |
| 管理画面を持つ機器全般 | _http._tcp / _https._tcp | ルーター、NAS、カメラ、一部のスマート家電 |
| Spotify Connect対応スピーカー | _spotify-connect._tcp | — |
| MQTTブローカー(自作IoT) | _mqtt._tcp | Sockettaは _ssh._tcp・_ftp._tcp を含め15種類に対応 |
HomeKitアクセサリが名乗る _hap._tcp はこの15種類に含まれていないため、Sockettaでは直接は探せない。後述のLANスキャンや _http._tcp で見つかる機器もあるが、HTTPの管理画面を持たない機器やBluetooth/Thread経由の機器は見つからないことがあり、すべてのHomeKitアクセサリを確かめられるわけではない。
02 / CHECKLIST3段のチェックリスト
- 同じSSIDにつないでいる。ゲスト用のSSIDではない。設定 › Wi-Fi で接続中の名前を見る。ゲスト用は本体のネットワークと切り離されているのが普通。同じSSIDでも、VLANや端末分離の設定で通信できない構成はある。
- アプリに「ローカルネットワーク」の許可がある。設定 › プライバシーとセキュリティ › ローカルネットワーク で、プリンターやテレビを探すアプリとSockettaがオンになっているか。この許可がないアプリは、機器が正常でも一覧に出せない。
- VPNを切っている。構成によっては家の中への通信が通らない。切って再検索し、見えるようになれば原因はVPN。
- プライバシーセパレーター/ネットワーク分離機能がオフ。無線の端末同士の通信を遮る設定で、機種により「プライバシーセパレーター」「ネットワーク分離」「AP隔離」と呼ばれる。オンにすると無線端末同士、機種によっては無線端末とLAN機器の通信が制限され、発見や接続に失敗する。遮る範囲は機種による。
- 二重ルーターになっていない。ONU一体型のホームゲートウェイの下に自前のルーターをルーターモードでつなぐと二重ルーターになり、ホームゲートウェイ側に有線でつないだプリンターとWi-Fiの端末は別のサブネットに分かれる。片方をブリッジ(アクセスポイント)モードにする。
- 中継機・メッシュがルーターモードで動いていない。中継機がルーターとして動くと、上と同じ二重ルーターになる。
- マルチキャストを落とす設定がない。IGMPスヌーピングやマルチキャスト制御を持つスイッチ・アクセスポイントで、mDNSの広告だけが落ちることがある。
- 電源が入っていて、スリープから復帰している。省電力でWi-Fiを切るプリンターは、操作パネルに触れるまで広告を流さないことがある。
- 有線と無線で別のネットワークになっていない。機器とiPhoneのIPアドレスにそれぞれサブネットマスクを当て、ネットワークアドレスが一致するかを見る。家庭で一般的な
255.255.255.0(/24)に限り、先頭3つの数字が同じなら同じネットワーク(サブネットの読み方)。 - 機器の設定でBonjour(AirPrint)が有効。プリンターの設定画面にBonjourのオン/オフがある機種がある。
- IPアドレスが169.254で始まっていない。IPv4のリンクローカルアドレスで、家庭ではDHCPから通常のアドレスをもらえなかったときに付くことが多い。再接続や再起動で直らなければ、ルーターのDHCP機能と配線・Wi-Fi接続を確認する。
03 / VERDICT「いない」のか「届かない」のかを分ける
Sockettaでは2つの見方を組み合わせられる。ScannerタブのModeを mDNS にして種別を選び Browse すると、届いた広告の名前が並ぶ(名前を選ぶとアドレスとポートを解決する)。Modeを LAN にして走らせると、TCPで応答した機器のIPアドレスが並ぶ(手順)。この2つの結果を組み合わせると、原因の候補を絞り込める。走査ポート、ファイアウォール、スリープ、mDNSリフレクターなどでも結果は変わるので、一意に確定するものではない。
| LANスキャン | mDNSブラウズ | 判定 | 見る場所 |
|---|---|---|---|
| 応答あり | 広告あり | 機器は見えている | 探しているアプリ側の許可(Group A の2つ目)、そのアプリが探す種別、プロトコルの互換性、認証・ペアリングの状態。 |
| 応答あり | 広告なし | TCPは届くが、その種別の広告がない | Group B の分離機能・マルチキャスト設定、または機器がmDNS非対応・機能オフ・その種別を広告していない(Group C の3つ目、種別の選び直し)。 |
| 応答なし | 広告あり | mDNSでは見えている | 通常は同じリンク上にいるが、mDNSリフレクター経由で別サブネットのサービスが見えている場合もある。走査ポートに応答しないこと自体は異常ではない。解決したアドレスとポートへ、そのサービスに対応するアプリでつなぐ。 |
| 応答なし | 広告なし | 電源オフ・別ネットワーク・その他 | 電源オフや別ネットワークのほか、mDNS非対応、種別違い、ファイアウォール、スリープ、走査ポート違い、IPv6のみの構成も考えられる。Group C の1つ目・2つ目、Group B の二重ルーター、Wi-FiタブのInfoのサブネットマスクとルーターを見る。 |
UPnPで探す機器(テレビやレコーダー、一部のスピーカー)は、Modeを UPnP にすると5秒間の問いかけで返事のあった機器の名前・メーカー・型番が並ぶ。こちらは問いかけを4回送って返事を待つ方式なので、機器がスリープ中だと返事がない。UPnPの検索はPro機能で、無料でも3回まで試せる。
mDNSのブラウズは一度に1種類ずつ。名前を選ぶとSockettaはそのサービスの待ち受けポートへTCP接続を張り、つながった先のアドレスとポートを表示する。DNS-SDの解決そのものはmDNSのSRV・A・AAAAレコードで行われ、TCP接続は解決の要件ではない。この方式のため、接続を受け付けない機器では名前は出てもアドレスが出ない。UPnPの問いかけは
239.255.255.250:1900 宛てに最初の1回と0.5秒間隔の再送3回の計4回送り、5秒で締め切る。いずれも自分が管理するネットワークで使う。種別を選んで、広告が届くかを見る
ScannerタブのmDNSモードで15種類のサービスをブラウズ。届いた名前を選ぶとアドレスとポートまで表示。LANスキャンで機器の応答も同時に確認。
App Store からダウンロード無料ダウンロード・アカウント不要・計測データは端末内に保存。スキャンは自分が管理するネットワークに限る。