CloudFlareのDNSを動的に変更させる

この記事は約1分で読めます。
スポンサーリンク

固定IPで運用していない際に困るのがIPが変わってアクセスができなくなること。
それを、CloudFlareのDNSを自動的に変更してしまおうという作戦。

CloudFlareのAPIをWEBサーバーより叩いて、現在の自分のIPにDNSを切り替えさせる。
bashで次のような感じに組んであげて、cronタブに追加する。
定期的に実行してあげれば、IPが変わった際に変更してくれる。


#!/bin/bash
CURRENT_IP=現在のIPを取得して変数に入れる
CF_IP=$(curl -s -X GET "https://api.cloudflare.com/client/v4/zones/ゾーンID/dns_records/レコードID" -H "X-Auth-Email: 登録メールアドレス" -H "X-Auth-Key: グローバルキー" -H "Content-Type: application/json"  | grep -Po '(?<="content":")[^"]*')
if [ $CURRENT_IP !=  $CF_IP ]; then
curl -s -X PUT "https://api.cloudflare.com/client/v4/zones/ゾーンID/dns_records/レコードID" -H "X-Auth-Email: 登録メールアドレス" -H "X-Auth-Key: グローバルキー" -H "Content-Type: application/json" --data "{\"type\":\"A\",\"name\":\"変更したいドメイン名\",\"content\":\"$CURRENT_IP\",\"proxied\":true}"
fi

現在のIPを取得する方法は、現在のWEBサーバーとは別の場所にアクセスした際のIPを出力するファイルを置いておき、
アクセスしてIPを取得すればOK。

仕組みとしては一度IPが同一であるかを確認して、IPが変わっていたら新しいIPへ変更する。

ゾーンのIDなどの取り方は詳しいサイトがあると思うのでそちらを参照してください。

参考
[CloudFlare] CloudFlare API(v4)でDNSレコードのIPアドレスを更新する (自動更新もOK)

コメント

タイトルとURLをコピーしました