VPSに届かない時は、DNS・待受・公開ポートを順に分ける

公開日: 2026-09-14 / 運用・復元 #ネットワーク #IPv6 #Docker

接続できない時は、DNSからアプリまでを段階ごとに分ける。IPv4で開けた結果をIPv6にも当てはめず、確認したアドレスと経路を残す。

公開アドレスを持つことと、アプリに届くこと

VPSの契約でIPアドレスが付いても、DNS設定、待受、ポート、ファイアウォール、証明書まで自動で正しくなるとは限らない。AはIPv4、AAAAはIPv6のDNSレコードなので、両方を公開するなら両方の到達を確認する。

ABLENETの仕様はIPv4 1個、IPv6 65,536個と表示している。ただし、個数を通信速度の評価には使わない。他社も同じ条件だと補わず、対象プランのアドレスと追加条件を個別に確認する。資料確認日: 2026年9月14日。

外から内へ、確認票をたどる

当サイトの確認票では、異なる層を「つながらない」の一言にまとめない。

層 確認内容 残す記録
DNS 正しい名前で意図したA/AAAAを返すか 回答、確認時刻、確認元
事業者側 対象アドレスと許可した通信が合うか プラン、FWルール、対象ポート
OS側 IPv4/IPv6の待受と制限 待受アドレス、ポート、プロセス
コンテナ側 ホストからどのポートへ対応づけたか ホスト側とコンテナ側を別記
TLS 名前に合う証明書か ホスト名、期限、検証結果
アプリ 期待する経路と応答か 状態コードと機能確認

架空の切り分け例として、IPv4では開け、IPv6では失敗する場合、同じページ全体を「公開成功」と記録せず、AAAAの向き先とIPv6の待受・制限を照合する。これは実障害の報告ではなく、調べる順番の例だ。

Dockerのポート指定を読み違えない

Dockerの公開ポート資料では、ホストIPを指定しないポート公開は既定で全ホストアドレスに向く。8080:80の左側はホスト、右側はコンテナのポートだ。

同資料はloopbackアドレスを明示する方法を説明するが、Docker 28.0.0より古い版では同じL2ネットワークからlocalhost公開ポートに届く問題も案内している。また、ルーティング方式やホスト側の設定によって経路が異なる。文字列にlocalhostがあるだけで外部から届かないと断定せず、版とネットワーク方式を確認する。

私たちの通知のローカル実験はPythonで127.0.0.1だけに待ち受けを作った。DockerのIPv6公開や、インターネット越しの到達を実証した実験ではない。検証した範囲を広げて説明しないため、記録も分けている。

原因が分かってから変更する

何もかも通す設定へ一度に変更すると、どの条件が原因だったか分からなくなる。自分の管理対象と必要な通信に絞り、一つ変えるごとに到達と不要な公開がないかを確認する。

Webhookの受信なら、接続できることに加え、署名・再送・重複などの受信前チェックへ進む。移行でIPを変える場合はDNS切替えの計画を使う。アドレスが正しいだけで契約の増額を決める前に、失敗している層を保守担当へ渡す。