curl で No-IP のIPアドレスを更新する方法

More than 3 years have passed since last update.


概要

自宅サーバを運用している場合、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