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

ZimaOS 1.6.2のアプリが起動しない場合:ゲートウェイを確認してください

After updating to ZimaOS 1.6.2, several Docker apps appeared broken until an incorrect default gateway on the preferred Ethernet route was corrected.

結論:コンテナを再インストールする前にデフォルトルートを確認する

実際の1.6.2のケースでは、Jellyfin、Vaultwardenなどのアプリが起動していないように見え、設定画面を開けず、DNSに依存するサービスが失敗し、一部のコンテナは長時間経過してから表示されました。決定的な証拠はDockerの破損ではなく、メトリックが最も低いデフォルトルートが実際のゲートウェイである192.168.1.1ではなく、192.168.1.0を指していたことでした。GUIでゲートウェイを修正すると、外部接続とアプリスタックが復旧しました。

まずコンテナが本当に停止しているか確認する

docker ps -a
docker info | grep -iE 'Docker Root Dir|Storage Driver'
docker stats --no-stream

コンテナがCreatedRestarting、またはExitedの状態なら、ログを確認してください。起動中でも、Web UIがDNS、Cloudflare、リモートAPIに依存している場合、問題はコンテナの起動ではなくネットワーク到達性にある可能性があります。

次にホストのデフォルトルートを確認する

ip route show default
ip route

元のケースでは複数のデフォルトルートが存在し、無効なルートのメトリックが最も低かったため、Linuxはそれを優先していました。Linuxのルートメトリックで、このルーティング規則を確認できます。

生のIP接続とDNSを個別にテストする

ping -c 3 1.1.1.1
getent hosts cloudflare.com
curl -I https://example.com

1.1.1.1への接続に失敗する場合は、DNSより先にルーティングを修正してください。生のIPアドレスでは接続できるのに名前解決に失敗する場合は、DNSを確認します。これにより、壊れたゲートウェイをPi-hole、Cloudflare、Docker DNSの問題と誤診するのを防げます。

ZimaOSでネットワークインターフェースを修正する

「設定」→「ネットワーク」を開き、デフォルトルートを保持しているインターフェースを選択して、固定IP、サブネット、ゲートウェイ、DNSを確認します。現在のZimaOSでは、各物理Ethernetポートが個別に表示されます。ZimaOSのネットワーク設定で、現在の設定モデルを確認できます。

ZimaOSのアプリネットワークでは、アプリ層について説明しています。

不正なゲートウェイによってアプリの半数が壊れたように見える理由

ローカルの依存関係だけを持つアプリは、すぐに起動することがあります。一方、ほかのアプリはイメージレジストリ、DNS、リモートデータベース、証明書サービス、クラウドAPIを待機します。そのため、ネットワーク接続が部分的にしか機能しないホストでは、ランダムに見える複数の症状が発生します。共有依存関係がホストのルートである場合、各コンテナを個別に修正するのは時間の無駄です。

1.6.2はセキュリティと互換性に関するリリースだった

公式の1.6.2の変更内容は、アカウント、ファイル、メッセージングのセキュリティ、SSHの強化、カーネルとドライバーの変更、USBの修正、RAIDの修正が中心で、意図的なゲートウェイ変更については記載されていません。このケースは、仕様上の動作ではなく、ネットワーク設定の移行に伴う不具合の可能性として扱うのが適切です。ZimaOS 1.6.2の変更点で、公式の基準を確認できます。

古い1.6.2の不具合を追う前に、現在の安定版へ更新する

ZimaOS 1.7.1では、Dockerの起動効率、インストール時のDockerネットワーク、動的URLの処理、App Storeの動作が改善されました。まだ1.6.2を使用している場合は、重要なデータの状態をバックアップし、まったく同じ古い不具合が残っていると判断する前に、現在の安定版系列へ移行してください。

ZimaOSのバックアップが安全対策となります。

ロールバックとは、任意のダウングレードではなく、別のA/Bスロットから起動すること

現在公開されているリカバリー資料では、現在のスロットが失敗した場合に、別のシステムスロットから起動する方法が案内されています。過去の任意のバージョンへの、サポート対象となるワンクリックのダウングレードは保証されていません。ZimaOSのシステムリカバリーが、現在利用できるロールバックに近い復旧手段です。

ルーティングを修正しても名前解決に失敗する場合は、設定されているDNSサーバーを独立したリゾルバーと比較してください。Cloudflare DNSテストを使うと、残っている問題がDockerの起動ではなく、リゾルバー固有の問題かどうかを確認できます。

よくある質問

1.6.2の後に一部のアプリだけが失敗したのはなぜですか?

外部DNSやネットワークに依存するアプリは失敗しても、完全にローカルで動作するコンテナは起動し続けることがあります。

デフォルトゲートウェイが間違っているかどうかを確認するには?

ip routeを実行し、最も低いメトリックのデフォルトルートが実際のルーターアドレスを指していることを確認します。

最初にJellyfinやVaultwardenを再インストールすべきですか?

ホストのルーティング、DNS、コンテナの状態を確認するまでは、再インストールしないでください。

ZimaOSを任意の古いバージョンにロールバックできますか?

現在公開されているリカバリー手順では、任意の過去バージョンへのダウングレードではなく、別のA/Bスロットからの起動が中心となっています。

1.6.2を使い続けるべきですか?

可能であればバックアップを取り、現在の安定版へ移行してから、残っている問題を再テストしてください。