ご家庭に設置したルータで設定方法を確認する。

筆者の環境は以下の通り。

graph TB;
    A["THE INTERNET"]--NURO光 for マンション-->B["ルータ<br>ZXHN F660A"]
    B--wired-->W["Cisco Meraki Go"]
    B--wired-->C["WindowsPC"];
    B--wired-->G["マインクラフトサーバ"];
    W--WiFi-->D["iPhone"];
    W--WiFi-->E["AndroidTV"];
    W--WiFi-->F["Google Pixel 6a"];
    W--WiFi-->H["ラップトップ"]

ドメイン

Cloudflare を使用しているので、ダッシュボードから設定。

mydomain.com を所有していて、home.mydomain.com をマイクラサーバに向ける。

  1. Cloudflare ダッシュボードにサインイン
  2. mydomain.com クリック
  3. 左メニュー「DNS」→mydomain.comのDNS管理→レコードの追加
  4. 以下を設定
    1. タイプ: A
    2. 名前(必須): home
    3. IPv4アドレス(必須): XXX.XXX.XXX.XXX 確認くんなどでグローバルIPを入力(動的IPの場合も現時点のIPでOK)
    4. プロキシステータス: DNSのみ、ぶっちゃけどちらでもOK(セキュリティが向上するわけでもないので)
  5. 保存

(動的IPアドレスの場合)IPを自動更新する

  1. Cloudflare でユーザーAPIトークンを発行する
  2. マインクラフトサーバ側でグローバルIPアドレスを監視、変更していたらユーザーAPIを叩くスクリプトを実行
  3. Cloudflare でグローバルIPが変更される

ユーザーAPIトークンを取得

  1. ユーザーAPIトークンを開く
  2. トークンを作成する
  3. ゾーンDNSを編集する→テンプレートを使用する

to be continue…

スクリプトを作成

bash スクリプトで作成しましたが、APIを叩けるなら何でもOK。

cloudflare.sh の動きをざっくり説明すると以下の通り。

  1. https://checkip.amazonaws.com で自分自身のグローバルIPアドレスを取得、変数Aに代入
  2. 前回実行時のグローバルIPアドレスを.lastipaddr に保存してあるので変数Bに代入
  3. 変数Aと変数Bを比較する
  4. 変数が異なる場合、ユーザーAPIトークンでDNS更新し .lastipaddrを更新する。一緒なら何もしない。

これを毎時10分ごとに実行します。グローバルIPアドレスが変わらなければ何もしないので負荷は抑えられます。