7
8

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

ipv4とipv6のデュアルスタックでMyDNS.JPのDDNSを自動更新

Posted at

背景(は読み飛ばすもの)

僕は6年ほど前から自宅サーバーを運用しています.サーバーなので当然外部からの接続がしたくなるわけですが,自宅のサーバーなので,費用の問題であったり,そもそも利用しているプロバイダの制約でグローバルIPが固定できないことがほとんどではないでしょうか.
僕の自宅はNUROを引いていて,NUROだと固定IPを提供していないので(別料金でも)そもそも固定するという選択肢をとることが出来ません.そこで,DDNSをieserver.netさんで登録して使用させて頂いていたのですが,少し前に存続の危機とのことで,別のDDNSサービスの検討を始めました.結局ieserver.netさんは存続可能とのことだったのですが,個人の有志のサービスとのことなので,これを機に商業的にやっている(恐らく)MyDNS.JPさんに鞍替えさせてもらうことにしました.
DDNSは動的IPを特定のドメインに紐付けるわけですが,IPが変更になる度に手動で更新するわけにはいかないので自動化が必要になります.この更新は規格化されている物では無いので,それぞれのサービスで提供されている更新方法に従う必要があります.そこで今回はMyDNS.JPさんでのIP更新を自動化するスクリプトを作ったので,その紹介をしたいと思います.
まぁスクリプトと言ってもたかだか数行なので作りましたって言うほどのものでもないわけですが・・・

DDNS-updater

リポジトリ

使い方

  • update.shと同じディレクトリにlogin.infoというファイルを作ります.

  • login.infoの中にMyDNS.JPで発行されたMasterIDとPasswordを書き込みます.

    login.info
    {MasterID}_{Password}
    
  • update.shをクーロンに登録

    */10 * * * * /opt/scripts/ddns-update/update.sh
    

    (これは10分ごとに更新する場合)

解説

MyDNS.JPさんでは,専用のwebページにログイン情報付きでアクセスすることで,ログインしたアカウントに紐付くドメインにリクエスト元のIPを新しいIPとして紐付けを行うようです.ここで問題となるのが,MyDNS.JPのHow toに書いてあるリクエストURLだとIPv4とIPv6のどちらかしか登録が出来ません.なぜならリクエストするときはIPv4かIPv6のどちらかでセッションを張るからですね.

サーバーをIPv4とIPv6の両対応にさせたいときは下記のURLにアクセスする必要があります.URLを見る限りそれぞれどちらかのみに対応したサーバーのようですね.

  • https://{MasterID}:{Password}@ipv4.mydomain.jp/login.html
  • https://{MasterID}:{Password}@ipv6.mydomain.jp/login.html

また,MyDNS.JPのHow toでは,wgetコマンドを使用していますが,wgetコマンドは対象のページをローカルに保存してしまうので,スクリプトの実行時にゴミが出来てしまいます.なので,wgetではなくcurlを使うようにしてみました.

7
8
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
7
8

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?