本文へ移動

元のポートへ直接アクセスする

外部から着信可能なグローバル IP があり、SSH、リモートデスクトップ、その他の TCP/UDP サービスへ元のポート番号のまま接続したい環境向けの構成です。利用者は先に fn-knock ゲートウェイで認証を済ませます。fn-knock は接続元のグローバル IP に対して、保護対象ポートを一時的に開放します。

  • ネットワーク構成:グローバル IP から直接接続
  • ルーティング方式:元の TCP/UDP ポート
  • アクセス方法:ログイン後に IP 許可を取得
  • 管理画面の場所:システム設定 → モード → 直接接続モード(非推奨)

直接接続モードは fn-knock によるホストファイアウォール管理に依存し、現在は標準 fnOS FPK だけで利用できます。Knock Lite、Docker、OpenWrt、汎用 Linux、macOS、Synology DSM 7 SPK、Windows では利用できません。

利用できる条件

直接接続を選ぶ前に、次の点を確認してください。

  • 管理画面に 直接接続モード(非推奨) が表示され、現在のデプロイ方式がホストのファイアウォール管理に対応している。
  • 機器に利用可能なグローバル IPv4 / IPv6 があるか、管理可能なポートフォワーディングを設定できる。
  • 保護したい対象が HTTP/HTTPS の Web サイトではなく、元のポートで待ち受けるサービスである。
  • 設定ミスでリモート接続できなくなっても、LAN 内またはコンソールからファイアウォールを復旧できる。

直接接続モードは NAT 越えのための機能ではありません。外部から着信できるグローバル IP がない場合は、NAT 越え:サブドメインルーティングを使用してください。Web サービスには、グローバル IP からの直接公開:サブドメインルーティングを優先します。

fn-knock が制御するのはネットワークの入口だけです。SSH、リモートデスクトップ、その他の上流サービスは、引き続き適切に更新し、権限を絞り、それぞれの認証機能を有効にしてください。

アクセスの流れ

  1. 利用者がインターネット側から fn-knock ゲートウェイを開きます。デフォルトポートは 7999 です。
  2. 利用者がログインを完了します。
  3. セッション設定と使用した認証情報で許可されていれば、fn-knock が現在の接続元グローバル IP を一時許可に登録します。自動許可できない場合は、管理者が手動で許可リストへ追加します。
  4. 利用者は同じ接続元 IP から、サービス本来のポートへ接続します。
  5. セッションまたは IP 許可の期限が切れると、その IP からサービスのポートへ接続できなくなります。

作業を始める前に

モードを切り替える前に、次の準備を済ませます。

  • 管理画面、ゲートウェイ入口、保護するポートを記録する。
  • TOTP、パスワード、パスキー、OIDC、LDAP のうち、少なくとも 1 つでログインできることを確認する。
  • 現在の動作モード、ルーティング、ファイアウォール設定をバックアップする。
  • 復旧経路として、LAN 内からのアクセスまたは機器のコンソールを確保する。

モードを切り替えるとファイアウォールルールも変更されます。唯一のリモート管理接続しかない状態で、初めて有効にしないでください。

1. 直接接続モードを有効にする

システム設定 → モード を開き、直接接続モード(非推奨) を選んで保存します。

有効化後は、次の状態になっている必要があります。

  • 想定しているインターネット側の入口から fn-knock のゲートウェイポートへ到達できる。
  • SSH やリモートデスクトップなどの保護対象ポートが、未許可の IP にはデフォルトで閉じている。
  • LAN 内、または明示的に残した管理元から設定を復旧できる。

切り替え直後に外部ネットワークから未ログイン状態で接続し、サービスのポートが確実に拒否されることを確認してください。

2. 認証用の入口を設定する

少なくとも 1 つのログイン方法を設定し、インターネット側から fn-knock ゲートウェイを開けるようにします。ドメインの例:

  • auth.example.com:7999
  • 外部ポート 443 をゲートウェイの 7999 へ転送する場合は https://auth.example.com

認証用の入口には HTTPS を使用し、認証情報やセッション情報を平文で送らないようにしてください。証明書の設定は TLS 証明書と HTTPSを参照してください。

3. ログイン後の IP 許可を設定する

システム設定 → セッション を開き、ログイン後の IP の扱いを設定します。

方式向いている用途
セッションに連動直接接続モードでの推奨設定。セッションが有効な間、対応する IP 許可も維持します
IP を自動的に許可しないブラウザーのログインセッションだけを使用します。元のポートへ接続するには、IP を手動で許可リストに追加する必要があります
カスタムIP を許可する時間を固定したい場合に使用します

直接接続モードが保護するのはネットワークポートです。IP の自動許可を無効にした場合、ブラウザーでログインに成功しても SSH やリモートデスクトップのポートは自動では開きません。

サービススコープが制限されたログイン認証情報では、IP の自動許可は作成されません。制限付き TOTP、それに紐づくパスキー / OIDC / LDAP、サービススコープを制限したユーザー名・パスワードのアカウントが該当します。これは、制限付きの認証情報が送信元 IP を介してアクセス範囲を広げないようにするためです。直接接続では、サービススコープを制限していない認証情報を使うか、現在のグローバル IP / CIDR を手動で追加してください。その後、外部ネットワークからポートを再検証します。

4. ドメイン、DDNS、証明書を設定する

動的に変わるグローバル IP には DDNS を使い、auth.example.com を更新できます。DNS には、実際にインターネット側から到達できるアドレスだけを公開してください。

認証用ドメインには、信頼された TLS 証明書を設定します。標準 fnOS FPK は受信条件を満たす場合に自動 HTTPS を利用できます。証明書とポートの条件は SSL 証明書を参照してください。

5. 外部ネットワークから検証する

スマートフォンのモバイル回線など、別の外部ネットワークからテストします。

  1. 未ログイン状態で保護対象ポートへ接続し、拒否またはタイムアウトすることを確認します。
  2. 認証用の入口を開き、ログインします。
  3. 同じネットワークから保護対象ポートへ再接続し、サービス本体の認証画面まで進めることを確認します。
  4. システム設定 → セッション または IP 許可リストで、現在の接続元 IP と有効期限を確認します。
  5. ログアウトするか許可の期限切れを待ち、ポートが再び閉じることを確認します。

SSH のテストでは確立済みの接続を使い回さず、新しい接続を作ってルールが反映されているか確認してください。

接続元 IP が変わる場合

モバイル回線、社内プロキシ、一部の家庭用回線では、接続元のグローバル IP が頻繁に変わることがあります。IP が変わっても、以前の許可は新しいアドレスへ自動では引き継がれません。認証用の入口を開き直してログインしてください。

接続元を厳密に制限する場合は、固定 IP または CIDR を手動で追加できます。モバイル回線に対して広すぎるネットワーク範囲を登録すると、公開範囲が必要以上に広がるため避けてください。

デプロイ方式ごとの制約

デプロイ方式直接接続説明
fnOS ネイティブ FPK対応ホストのファイアウォールを管理できます
OpenWrt パッケージ非対応fn-knock は OpenWrt のファイアウォールを管理せず、直接接続モードも表示しません
Linux サービス非対応ファイアウォールは管理者が管理し、fn-knock の動的な直接接続許可とは連携しません
Docker Compose非対応Docker コンテナからホストのファイアウォールを管理することはできません
macOS非対応iptables を呼び出さず、macOS のホストファイアウォールも変更しません
Synology DSM 7 SPK非対応パッケージは DSM ホストのファイアウォールを変更しません
Windows x86_64非対応インストーラーが作るアプリ単位のルールは直接接続用の IP 許可とは異なり、管理画面にもこのモードはありません

よくあるトラブル

症状最初に確認する項目
ログインできても元のポートへ到達できないログイン後の IP 許可方式、現在の接続元 IP、ポートフォワーディング
未ログインでもサービスのポートへ接続できるルーターまたはホストに、fn-knock を迂回して許可するルールが残っていないか
有効化後にリモート管理できなくなったローカル接続またはコンソールからファイアウォールと動作モードを復旧
IPv4 は制限できたが IPv6 が公開されたままIPv6 ファイアウォールに制限が反映されているか、AAAA レコードが別の入口を指していないか
IP 許可がすぐ無効になるセッションの有効期間が短すぎないか、接続元 IP が変わっていないか
ログインできても IP が自動許可されないログイン認証情報にサービススコープ制限がないか。制限のない認証情報を使うか、IP / CIDR を手動で追加
現在のデプロイにこのモードが見当たらないデプロイ方式の制約です。標準 fnOS FPK だけが提供するため、サブドメインルーティングまたは自主管理の VPN / ファイアウォールを使用してください

トラブルシューティング全体は FAQを参照してください。

関連ドキュメント

QQ コミュニティ:1081609274