コミュニティソリューション

ZimaOSがルーターポートを開放する理由:UPnPとDockerを監査する

A ZimaOS user found unexpected router port mappings and later traced the behavior to UPnP being enabled on the home router.

要点:まずローカルの待受ポートとルーターのWANポートマッピングを区別する

2025年の事例は、ルーターでUPnPを無効にすることで解決しました。つまり、疑わしいエントリはZimaOS内部で「ランダムなポートが待ち受けていた」のではなく、ルーター上の自動NATマッピングだったということです。これらは異なるセキュリティ境界です。NASが多くのLANポートで正当に待ち受けていても、そのどれもがパブリックインターネットに公開されているとは限りません。

ZimaOSが実際に待ち受けているポートを確認する

ss -lntup
docker ps --format 'table {.Names}	{.Ports}'

最初のコマンドはホスト上の待受ポートを表示します。Dockerの出力は、どのコンテナポートがホストに公開されているかを示します。ここにポートが存在していても、ルーターのWAN/UPnPテーブルに存在しなければ、自動的にパブリックインターネットへ公開されているわけではありません。

ZimaOSアプリのポートでは、インストールした各サービスがそれぞれ独自の待受ポートを追加する理由を説明しています。

次にルーターのUPnPポートマッピングテーブルを確認する

UPnP IGDを利用すると、LAN上のデバイスやアプリケーションがNATマッピングを自動的に要求できます。ルーターが許可していれば、サービスは手動のポート転送ルールなしで外部ポートを作成できます。2025年のユーザーはルーターのUPnPを無効にし、自動的なポート開放を停止しました。

IETFのUPnPポートマッピングでは、UPnP IGDのポートマッピングとセキュリティ上の考慮事項について説明しています。

現在のZimaOS内蔵リモートアクセスには手動のポート転送は不要

現在のZimaOSリモートアクセスは、暗号化されたピアツーピア/リレー経路を作成し、ルーターのポート転送は不要であると明記しています。つまり、通常のZimaClientリモートアクセスを利用したいという理由だけでUPnPを有効にする必要はありません。

ZimaOSリモートアクセスでは、現在の内蔵経路について説明しています。

一部のセルフホストアプリには明示的なインターネット公開が必要

WireGuardサーバー、ゲームサーバー、その他のインバウンドサービスでは、到達可能なUDP/TCPポートが必要になる場合があります。そのような場合は、LAN上のすべてのアプリケーションに任意のUPnPマッピングを要求させるよりも、意図的に手動でポート転送を設定するほうが監査しやすくなります。サービス、内部ホスト、内部ポート、外部ポート、および認証/TLSによる保護の有無を記録してください。

Tailscaleリモートアクセスは、多くの管理用途で代替手段になります。

すべてのパブリックマッピングを明示的に管理したい場合はUPnPを無効にする

必要な少数のポート転送を自分で設定できるのであれば、ルーターでUPnPを無効にすることは妥当なセキュリティポリシーです。無効にした後は、古いマッピングを消去するかルーターを再起動し、LAN外からパブリックIPをスキャンして結果を確認してください。NATループバックの動作によって誤解する可能性があるため、LAN内部だけからパブリック公開をテストしないでください。

外部スキャンでWAN公開を確認する

自宅ネットワークの外部にあるデバイスから、開いていると思われる特定のパブリックポートをテストしてください。NmapのNmapのポート状態では、ルーターのUIに表示されるエントリと、インターネットから到達可能なサービスが必ずしも同じではない理由を説明しています。

ZimaOSホスト上のポートを無闇に閉じない

見慣れないポートを、そのプロセスを特定せずにブロックすると、Files、SMB、アプリのWebインターフェース、検出機能、またはリモートアクセスが動作しなくなる可能性があります。まずポートをプロセスまたはコンテナに対応付け、サービスが必要かどうかを判断してから、必要に応じてそのサービスを停止または公開解除してください。

ZimaOS HTTPSプロキシは、複数のWebアプリケーションに単一の監査可能な入口が必要な場合に役立ちます。

簡単なポート監査の手順

  1. ルーターの手動マッピングとUPnPマッピングをエクスポートするか、スクリーンショットを撮ります。
  2. ZimaOSでss -lntupを実行します。
  3. docker psを実行し、待受ポートをアプリに対応付けます。
  4. 自動WANマッピングが不要な場合はUPnPを無効にします。
  5. LAN外から再テストします。
  6. 所有者と目的が明確で、記録された公開設定だけを残します。

FAQ

ルーターにZimaOSがポートを開いていると表示されるのはなぜですか?

エントリがUPnPテーブルにある場合、アプリケーションまたはサービスが自動NATマッピングを要求している可能性があります。すべてのZimaOSの待受ポートが公開されていると判断する前に、プロセスを特定してください。

UPnPを無効にするとZimaClientのリモートアクセスは使えなくなりますか?

現在のZimaOSドキュメントでは、内蔵リモートアクセスに手動のポート転送は不要と説明されています。そのため、通常のZimaClientリモートアクセスは、その目的でUPnPに依存しないはずです。

Dockerで公開したポートはインターネットに公開されますか?

Dockerのバインド設定に応じてホストのインターフェース上に公開されますが、WANから到達できるかどうかは、ルーティング、ファイアウォール、NAT設定に依存します。

不明なポートはすべて閉じるべきですか?

いいえ。まず所有するプロセスまたはコンテナを特定してください。インフラストラクチャのポートを無闇に閉じると、正当なNAS機能が動作しなくなる可能性があります。

手動のポート転送はUPnPより安全ですか?

各マッピングが意図的に設定され、記録されるため、監査は容易です。ただし、セキュリティは公開するサービス、認証、パッチ適用、ファイアウォールルールにも依存します。