fn-knock 経由で fnOS アプリを使う
fnOS アプリに設定する接続先は、fn-knock の公開構成と一致させる必要があります。Web 認証へのリダイレクト、Cookie、パスキーをアプリが直接処理できるかどうかは、クライアントのバージョンとネットワーク実装によって異なります。スマートフォンのブラウザーにあるセッションが、ネイティブアプリへ自動的に共有されるとは限りません。設定後はブラウザーで開けることだけでなく、アプリで実際にログインし、ファイルやメディアを操作して検証してください。
接続方法は 2 通りあります。
| 構成 | アプリに入力するアドレス | fn-knock の役割 |
|---|---|---|
| サブドメインゲートウェイまたはトンネル経由のサブドメイン | https://nas.example.com など、fnOS サービス用 Host | アプリの各リクエストに Host ルーティングとアクセスポリシーを適用 |
| 直接接続の認可 | fnOS 本来の公開アドレスとポート | 先にブラウザーでログインし、fn-knock が送信元 IP に対して元のポートを一時開放 |
サブドメインゲートウェイまたはトンネル経由のサブドメインマッピング
nas.example.com など、fnOS 用のサービス Host を作成し、Target に fnOS サービスの LAN 内アドレスを指定します。認証用 Host と fnOS 用 Host は、どちらも同じゲートウェイへ向けます。
- スマートフォンのブラウザーで fnOS 用 Host を開き、未ログイン時に認証用 Host へ移動することを確認して、ログインを完了します。
- アプリに
https://nas.example.com、または実際の外部ポートを含む完全なアドレスを入力します。 - アプリ内で fnOS アカウントへログインし、ディレクトリ、アップロード、ダウンロード、メディア、長時間接続をテストします。
- fn-knock のリクエストログで、アプリからのリクエストの Host、クライアント IP、認証結果、アップストリームの Target を確認します。
アプリがブラウザーの Cookie を再利用しない場合、「ログインを必須にする」を有効にした Host では、Web 認証へのリダイレクトが繰り返されることがあります。それを理由にサービス用 Host を認証なしで公開しないでください。まず、アプリがシステムブラウザーを使う認証や Cookie の永続化に対応しているか確認します。互換性がない場合は、管理された直接接続の認可を使うか、ネットワーク層で VPN または固定された信頼済み送信元だけに公開してください。
サブドメイン構成では、ゲートウェイを経由しない 5666 などの元の公開ポートをアプリへ入力しないでください。認証、セッション、送信元 IP の判定を迂回してしまいます。
直接接続モード
直接接続モードではゲートウェイ入口で認証を済ませた後、現在のグローバル IP に対して元のポートへのアクセスを許可します。この動的なポート認可を利用できるのは、fnOS ネイティブ FPK と、ホストのファイアウォール管理に対応する OpenWrt だけです。Docker、汎用 Linux、Synology DSM 7 SPK、Windows では利用できません。
システム設定 → モードで直接接続モード(非推奨)を選び、ローカルからの復旧経路を残します。システム設定 → セッションで、ログイン後の IP 許可を「セッションに連動」または必要な有効期間に設定します。- スマートフォンのブラウザーからゲートウェイ入口へアクセスし、ログインします。
- 現在のモバイル回線の出口 IP が IP 許可リストに表示されていることを確認します。
- アプリに fnOS サービス本来の公開アドレスとポートを入力し、実際の機能をテストします。
ネットワークの切り替えでグローバル IP が変わっても、アプリから元のポートへの接続だけでは許可を更新できません。ブラウザーでゲートウェイ入口を開き直してから、アプリへ戻ってテストしてください。
サービススコープを制限したログイン認証情報では、IP の自動許可は作成されません。直接接続が必要な場合は、スコープ制限のない認証情報を使うか、管理者が現在の送信元を手動で追加してください。モバイル回線に対して広すぎる CIDR を登録しないでください。
トラブルシューティング
| 症状 | 確認する項目 |
|---|---|
| アプリから接続できない | アプリのアドレスが実際に公開した Host と一致しているか、DNS / 証明書、トンネルまたは公開入口 |
| ブラウザーでは開けるが、アプリでは開けない | アプリがブラウザーの Cookie を共有するか、認証リダイレクトを処理できるか、HTTPS 証明書への対応、アドレス形式 |
| アプリでログインを繰り返し求められる | リクエストログの認証結果。アプリが Cookie を保持するか。認証レスポンスがキャッシュされていないか |
| ネットワークを変えると使えない | セッション、クライアント IP、直接接続モードの IP 許可リスト。必要に応じて再ログイン |
| 画面表示がおかしい、またはログインを繰り返す | Cookie ドメイン、認証用 Host、実クライアント IP、アップストリームプロキシのキャッシュ |
| 直接接続でログインしてもポートへ到達できない | IP 許可ポリシー、認証情報のサービススコープ、現在の出口 IP、fnOS サービスの待受状態、ファイアウォールの同期 |
モバイル回線でテストするときは Wi-Fi を切り、ネットワークを切り替えた後はアプリで新しい接続を作成してください。テスト後は、不要になった自動または手動の IP 許可が残っていないか確認します。
