お名前.comでは、DDNS用のIPアドレス更新ツールが公式で提供されています。しかし、提供されいるのはWindows版のみなので、macOSやLinuxなどでは利用することができません。
少し調べてみると、非公式の方法で実装できることが分かりました。
ということで、(n番煎じですが)APIを叩くだけでIPアドレスが更新される「お名前.com ダイナミックDNSクライアント API」を作成しました!
使い方
WebAPIなのでPythonが動くサーバーが必要になります。
適当に用意してください。私はRender.comを利用しています。
(準備が整い次第、サーバーを公開する予定です。)
GitHubから最新版をダウンロードし、以下のコマンドを実行してください。
$ pip install -r requirements.txt
$ uvicorn api:app --host 0.0.0.0
表示されたリンクにアクセスすると、ドキュメントが表示されます。
以下のリンクにアクセスするだけで、対象のAレコードが更新されます。
http://***.***.***.***/update/?userid=(お名前ID)&password=(パスワード)&hostname=(ホスト名)&domname=(ドメイン名)&ip=(IPアドレス)
ご不明点や不具合等ありましたら、お気軽にお問い合わせください。
参考
参考というか丸パクリです。ありがとうございます!
開発の経緯
ここからは戯言です。読み飛ばしていただいて構いません。
Synology NASでWEBサイトを作成しています。タスクスケジューラーでコマンドを設定して、更新することもできますが、なんか怖いのであまりしたくありません。
そこで、APIを叩くだけで更新できれば便利なのでは?と思い、開発しました。
技術選定
Googleで検索すると、上の方にtom-tan/onamae-ddns-clientがヒットしました。Pythonの経験があることもあり、こちらを利用させていただくことにしました。
Webフレームワークは、普段Flaskを使っていますが、FastAPIというAPIに特化したフレームワークがあることを知り、使ってみることにしました。
2to3
$ 2to3 -w client.py
バイナリ関連の仕様変更があった模様で、エラーが発生した一部を修正しました。
実装
- FastAPIが思ったより簡単で楽でした。
- 例外処理に苦戦しました。
サーバー
自宅サーバーを立てることもかんがえましたが、本末転倒なのでレンタルサーバーを使うことにしました。
これまではHerokuを使うことが多くありましたが無料枠が無くなってしまっため、他のサービスを検索してみたところRender.comを見つけました。
GitHubで連携しただけでデプロイ完了。めちゃくちゃ便利です。