Apple TVのデバッグ
4 つのプラットフォームの中でApple TVが最も手強いのですが、その理由はChuteとは関係ありません。tvOSにはブラウザも共有シートもファイルブラウザも無く、デバイス上から証明書をインストールする方法も無く、手元にあるのはキーボードではなくリモコンです。Chute tvOSはそのそれぞれに、インターフェースを別の場所へ移すことで答えています — スマートフォンやMacのブラウザ、QRコード、Dashboardのウィンドウ。
そのためこのガイドは他の 2 つとかたちが違います。ほとんどすべてがテレビの外で起こります。
1. 設定をテレビに送り込む
リモコンで設定を編集するのは誰も二度とやりたくない作業なので、別の場所で書いて送り込みます。Apple TVの 設定を追加... には 3 つの経路があります:
- Wi-FiまたはChute iOSでファイルをアップロード — テレビがローカルのHTTPリスナーを開き、URLとQRコードを表示します。任意のブラウザでそのURLを開いてファイルをアップロードするか、Chute iOSでコードを読み取ります。
chute://tvURLスキームを使えば、スマートフォンのアプリで同じインポート画面を直接開けます。 - URLからダウンロード — テレビ自身が設定を取得します。ファイルがテレビから到達できる場所にあるなら、3 つの中で最も入力が少なくて済みます。
- 空の設定 — 空のものをデバイス上で編集します。
アップロードの経路では、テレビともう一方のデバイスが同じWi-Fiにいる必要があり、リスナーはその画面が開いている間だけ存在します — 画面を離れたりデバイスをロックしたりすると転送は中断します。
2. 実際に使う 2 つのリスナーをオンにする
どちらも既定ではオフで、少なくとも一方が無ければApple TVはデバッグのしようがありません。どちらも無料です — このプラットフォームのコントロールパネルでライセンスの対象になるのはローカルプロキシサーバーの行とトラフィックレコーダーであって、これらではありません。
HTTPコントロールAPI + Webコンソール — つまりWebコンソール。ボディ、HARの書き出し、診断はそこにあります:
[General]
external-http-controller = 0.0.0.0:9090
external-http-secret = your-own-token
external-http-ui = true
127.0.0.1 ではなく 0.0.0.0 にバインドしてください。ループバックにバインドされたコンソールは他のデバイスから開けませんし、テレビにはそれをローカルで開くブラウザもありません。ループバック以外へのバインドには明示的な external-http-secret が必要で、無ければコントローラーは起動を拒否します。
外部コントローラーアクセス — Chute Dashboard が話すバイナリチャネルです。設定エディターで 外部コントローラー を開きます:
- 外部コントローラーアクセス をオンにします。
- ポート(ここでの既定は
6171)と、自分で決めた パスワード を設定します。空にはできません。 - Wi-Fiからのアクセスを許可 をオンにします。Apple TVではこれはスマートフォンのように任意ではありません — 代わりに使えるケーブル経路が無いため、オフのままではテレビの外から何も接続できません。
確認: コントロールパネルにHTTP APIポート とWebコンソールが オン と表示され、外部アクセスポート に設定したポートが出ます。出ないならトンネルは古い設定で動いています — 再起動してください。
3. 別のデバイスからコンソールを開く
コントロールパネルには、Webコンソールスイッチから数行下にWebコンソールアドレス の行があります。これを選ぶと:
- リスナーが他のデバイスから到達可能なら、テレビはQRコード を表示します。同じネットワークのスマートフォンで読み取るか、アドレスを任意のブラウザに入力してください。サインイン用のトークンは画面に表示されるのではなくコードの中を通るので、テレビの画面から16進数32文字を読み取る必要は誰にもありません。
- コントローラーがループバックにバインドされている場合、テレビはコードではなく説明を表示します — ステップ 2 を参照。
そこから先、コンソールはどのプラットフォームでも同じです: 接続(1 件ずつ展開して調べられ、ボディも見られます)、ルール(この実行で効いた書き換えの一覧)、診断(ping / DNS / 出口 / URLテストのプローブ)、ログ。
4. Chute Dashboardを接続する
MacでChute Dashboardを開き、リモートマシンに接続 を選びます: ホスト はApple TVのアドレス — コントロールパネルのローカルIPの行がそれです — で、ポートとパスワードはステップ 2 のものです。USBで接続 はiPhoneとAndroidデバイス用で、Apple TVにはネットワーク経由で届きます。
Dashboardがスマートフォンに対して行うことはここでも同じです — アクティブと最近の一覧、DNSとUDPのビュー、MitMツールのパネル、右クリックでのHARと curl の書き出し。
5. HTTPSの復号
このプラットフォームでは 2 点が異なり、どちらも意外に思われます。
CAをアプリからインストールできません。 tvOSにはSafariもプロファイルインストーラーも無いので、証明書はtvOSが証明書を受け入れる唯一の方法で届ける必要があります: MDM、またはApple Configurator。ホストリストを編集する画面で、アプリ自身がそう表示します。しかもアプリはCAの生成もインポートもエクスポートもできません: CAはChute Macで作成し、同じ ca-p12 と ca-passphrase をテレビの設定に入れ、証明書 — Chute Macの 証明書をエクスポート で .pem として書き出せます — をそのどちらかの経路でデバイスに届けてください。
コントロールパネルにMitMのスイッチがありません。 iOSとmacOSにはありますが、tvOSにはありません。復号は次のいずれかでオンにします:
- 設定 —
[MITM]のenable = true。再起動後も残る恒久的な方法はこれです。 - コンソール、またはChute Dashboardのツールバーのスイッチ。
PUT /api/features/mitmに{"enabled": true}。
後ろの 3 つは動作中のエンジンにだけ作用し、次の再起動で忘れられます。hostname のリストは設定ファイルから読まれますが、コンソールからもDashboardからもその場で編集できます。どの方法でオンにしても、Apple TVでの復号にはiPhoneと同じくライセンスが必要です: ライセンスが無ければエンジンは何も復号しません。
[MITM]
enable = true
hostname = api.example.com, *.example.net
6. 記録と、結果をデバイスの外へ出す方法
コントロールパネルの トラフィックキャプチャ がトラフィックレコーダー — replica 設定 — で、tvOSのコントロールパネルでライセンスが要る 3 つの行の 1 つです(残りの 2 つはローカルプロキシサーバー)。これが無くても接続はルール、ポリシー、タイミング付きで現れます。単にペイロードが無いだけです。
そしてここからがこのプラットフォーム固有の部分です: Apple TVにはファイルを置く場所がありません。 共有シートもファイルアプリも無いので、書き出しはすべてHTTP経由になります:
- HAR — コンソールの接続ページのHARをエクスポート。ダウンロードはブラウザを動かしているマシンに落ちます。
- ランタイム診断バンドル — コンソールの診断ページの 診断バンドルをダウンロード。
- オフライン診断バンドル — トンネルが動いていないときに、設定 → オフライン診断バンドル。テレビがアーカイブを作ってQRコードを表示します。リンクはその画面が開いている間だけ有効です。
7. テレビ自身が答えられること
別のデバイスがまったく要らない問いもあります。設定 → 診断 の下:
- ダッシュボード — 実行中のセッション: その トンネル、DNS、統計。接続を 1 件選ぶと詳細パネルが開き、基本(日時、状態、切断理由、継続時間)、ポリシー(一致したルールとそれが選んだポリシー)、ノード(ローカル、サーバー、リモート、ホスト)、トラフィック、タイミング(プロキシ準備、DNS解決、ルール、リモート準備、総アクティブ時間)、そして効いた書き換えが表示されます。リクエストとレスポンスのボディはありません — それにはコンソールかChute Dashboardが必要です。
- セッション — 過去の実行。それぞれに トンネル、同じ詳細パネル、そして ログ があります。ログ画面の上部には重大度フィルター(すべて / 通知以上 / 警告以上 / 致命的)があるので、リモコンだけで実行を警告まで絞り込めます。実行中のセッションはここでは開けません — それは ダッシュボード の役目です — そのログはコンソールで読みます。
- ネットワーク診断、プロキシ診断、ルートテーブル — デバイスから見た到達性、リスナー、経路。
コントロールパネルにはDNSキャッシュを消去 もあり、トンネルを再起動せずに [Host] のマッピングを試し直す最速の方法です。
本ページは英語版からの翻訳です。内容に相違がある場合は、英語版が優先されます。