本文へ移動
ch1w4

www.ch1w4.com / blog / debtcraft-ddns-outage

家の中からは入れるのに、外からマイクラに入れなくなった

#minecraft#cloudflare#homelab#障害対応

DebtCraft のプラグインを本番に入れた直後、「サーバーに入れない」と連絡が来た。家の中からは入れるのに、外からだけ入れない。

調べた順番

1. サーバーは起動しているか

マイクラのログの最後に Done (10.793s)! が出ていて、プラグインもエラーなく起動していた。

2. ポートは開いているか

外からポートが開いているか調べるサイトでは、「開いている」と出た。

このサーバーは、入口の Velocity(プロキシ)がつなぎを受けて、ロビー、サバイバルの順に送る構成になっている。docker ps で見ると、Velocity・ロビー・サバイバルは3つとも起動していた。

3. 接続が届いているか

Velocity のログには、外から入ろうとしたプレイヤーの記録が1件もなかった。サーバーまでつなぎが届いていない。

4. ドメインはどこを向いているか

ここで原因が分かった。

curl -s https://ifconfig.me     # 今のグローバル IP
getent hosts mc.ch1w4.com       # ドメインが向いている IP

この2つの IP が違っていた。プロバイダーの都合でグローバル IP が変わったのに、ドメインは古い IP を向いたままだった。

ポートを調べるサイトは「今の IP」で調べるので、開いていると出る。一方、プレイヤーはドメインで古い IP につなぎに行くので入れない。家の中からは家の中の IP で入るので、影響がなかった。

なぜ IP の変更が反映されなかったか

IP が変わったら自動でドメインを書き換えるように、DDNS のコンテナ(Cloudflare 用)を動かしていた。そのログを見ると、こう出続けていた。

😞 Failed to check if a zone named home.ch1w4.com exists: Invalid access token (9109)

Cloudflare の API トークンが無効になっていた。IP は正しく取れているのに、書き換えができていなかった。トークンが無効になっていても、IP が変わるまでは困らないので、気づけなかった。

直したこと

  1. すぐに直す:Cloudflare のダッシュボードで、A レコードを今の IP に手で書き換えた。マイクラはプロキシ(オレンジの雲)を通せないので、「DNS のみ」のままにする
  2. トークンを作り直す:権限は「ゾーン - DNS - 編集」と「ゾーン - ゾーン - 読み取り」、対象は自分のドメインだけ。IP での制限と有効期限は付けない(IP で制限すると、IP が変わったときにまた更新できなくなる)
  3. DDNS のコンテナだけ作り直す:マイクラと同じ compose にあるので、docker compose up -d --force-recreate --no-deps ddns のようにサービス名を指定した。指定を忘れると、マイクラまで再起動してしまう

学んだこと