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

CasaOSのIPv4が機能しない場合:IPv6とDockerのバインドを確認

A CasaOS user on Debian 12 in GCP saw port 80 reported as tcp6 and then broke web access after disabling IPv6 before installation.

ssでCasaOSやDockerのサービスが:::80で待ち受けているからといって、IPv6を無効にしないでください。 Linuxでは、IPv6のワイルドカードリスナーがソケット設定によってIPv4も受け付ける場合があり、Dockerは通常、ホストアドレスを指定しないとIPv4にもポートを公開します。

元のケースはZimaOSではなく、GCP上のDebian 12で動作するCasaOSでした。正しい診断手順は、IPv4を明示的にテストし、CasaOSのゲートウェイとDockerのポートバインディングを確認してから、GRUBを変更したりIPv6をシステム全体で無効にしたりする前に、クラウドファイアウォールを確認することです。

まずIPv4を直接テストする

curl -4 -v http://127.0.0.1:80/
curl -4 -v http://SERVER_IPV4:80/
ss -ltnp | grep ':80'

ローカルのIPv4では動作するのにリモートのIPv4では失敗する場合、問題はCasaOSのバインディングではなく、ホストまたはクラウドのファイアウォール、あるいはルーティングにある可能性が高いです。

Dockerのポート公開には通常IPv4が含まれる

Dockerの最新のDockerポート公開ガイドによると、通常公開されたポートはホストアドレスのマッピング経由で到達できます。明示的にIPv6専用にするには、別の設定が必要です。

CasaOS自体を確認する

systemctl status casaos
journalctl -u casaos --no-pager -n 100
ss -ltnp | grep -E ':80|casaos'

現在のCasaOSインストーラーは、ダッシュボードURLを表示する際にIPv4 NICのアドレスを列挙するため、正常なインストールがIPv6専用アクセスを必要とする設計にはなっていません。

GCPファイアウォールを確認する

VMにIPv4アドレスとルートがあり、選択したCasaOSのWebポートに対する受信ルールが設定されていることを確認してください。サービスが正常に待ち受けていても、クラウドファイアウォールによってポート80がブロックされることがあります。

最初の対処としてIPv6をシステム全体で無効にしない

古いCasaOSコンポーネントは、歴史的に/proc/net/tcp6の存在を想定していました。また、一部のビルドではIPv6を無効にするとアプリ管理に問題が発生しています。IPv6を削除すると、元の問題を解決できないまま別の問題を引き起こす可能性があります。

DockerをIPv4専用でバインドする必要がある場合

ports:
  - "0.0.0.0:8080:80"

このCompose定義を自分で管理しており、公開範囲への影響を理解している場合に限り、明示的なIPv4バインディングを使用してください。

CasaOSのWebポートを確認する

ポート80がすでに使用されている場合、インストーラーが別の利用可能なポートを選択することがあります。サービスが失敗したと判断する前に、実際のCasaOSのHTTPポートを確認してください。

Dockerネットワークガイドでは、同じネットワークの基本事項を説明しています。

実際の接続性をテストしてからsysctlを確認する

それでもデュアルスタックソケットの動作が原因だと思われる場合は、sysctl net.ipv6.bindv6onlyを確認してください。値が0の場合、多くのIPv6ワイルドカードソケットがIPv4マップド接続を受け付けます。値が1の場合はIPv6専用になります。影響を受けるすべてのサービスを理解していない限り、システム全体の設定を変更しないでください。

Dockerが実際に公開しているアドレスを確認する

docker ps --format 'table {{.Names}}	{{.Ports}}'
docker inspect CONTAINER --format '{{json .NetworkSettings.Ports}}'

これにより、Dockerが0.0.0.0:PORTのようなIPv4マッピング、IPv6マッピング、またはその両方を作成したかどうかを確認できます。1行のプロセス一覧から動作を推測するよりも信頼性があります。

GCPには2つのファイアウォール層がある

Debianホストには独自のnftables/iptablesルールがある一方、GCPはVPCファイアウォールで受信トラフィックを別途制御します。サービスがローカルでは正常でも、どちらかの層がポートをブロックしているために外部から到達できない場合があります。

FAQ

:::80は常にIPv6専用を意味しますか?

いいえ。その結論を出す前にcurl -4で確認してください。

GRUBでIPv6を無効にすべきですか?

最初のトラブルシューティング手順としては実施しないでください。IPv6カーネルインターフェースを想定しているコンポーネントが壊れる可能性があります。

なぜlocalhostでは動作するのにパブリックIPv4では動作しないのですか?

クラウドファイアウォール、セキュリティグループ、ルート、ホストファイアウォールを確認してください。

これはZimaOSの問題ですか?

元のスレッドはZimaOSではなく、Debian 12にインストールされたCasaOSに関するものです。