概要
自宅サーバを運用している場合、IPアドレスが動的に変わることがよくあります。
そんなときは無料 Dynamic DNS サービスを使うと常に同じホスト名で動的に変わるIPアドレスを更新することができます。
自分は No-IP を使ってますが、ここはIPアドレスの更新に Web API が提供されています。
IPアドレスの更新方法として DiCE クライアントがよく紹介されていますが、 Web API が提供されているのでクライアントをインストールする必要ありません。curl コマンドで簡単に更新する事が出来ます。
更新方法
curl "https://YOUR-USERNAME:YOUR-PASSWORD@dynupdate.no-ip.com/nic/update?hostname=YOUR-HOSTNAME"
YOUR-USERNAME, YOUR-PASSWORD, YOUR-HOSTNAME を自分のものに変更してください。
参考 https://www.noip.com/integrate/request
Linux サーバなどの場合は cron と組み合わせると定期的にIPアドレスの更新が出来るようになります。
注意
cron に登録する場合、更新頻度が頻繁になると No-IP サーバに対して負荷がかかるようになるので自重しましょう。私は2時間に1回かつ日中帯(外出している時だけ)にしています。
cron の例
40 8-23/2 * * * curl -s "https://YOUR-USERNAME:YOUR-PASSWORD@dynupdate.no-ip.com/nic/update?hostname=YOUR-HOSTNAME" > /dev/null
生のパスワード が crontab に登録されるのが嫌な場合は次のように暗号化できます。
% echo -n YOUR-USERNAME:YOUR-PASSWORD | base64
WU9VUi1VU0VSTkFNRTpZT1VSLVBBU1NXT1JE
#=> この "WU9VUi1VU0VSTkFNRTpZT1VSLVBBU1NXT1JE" をBasic 認証として登録
40 8-23/2 * * * curl -s -H "Authorization: Basic WU9VUi1VU0VSTkFNRTpZT1VSLVBBU1NXT1JE" "https://dynupdate.no-ip.com/nic/update?hostname=YOUR-HOSTNAME" > /dev/null