Synology の NAS 上で(ほぼ)セットアップ不要で動くお名前.com用DDNSクライアント

2 min read読了の目安(約2400字

タイトルが長い…

前フリ

かなり前に買って放置していたSynology DS418play[1]のセットアップをした。DS418play には DDNS の更新機能が標準で付属しているが、残念ながらお名前.comには対応していない。手元の Windows マシンにDDNSクライアントを入れるのは避けたいし、DDNS用のマシンを用意するのも避けたかったため、NAS に放り込むだけで使えるDDNSクライアントを実装した

使い方

  • リポジトリ中の onamae-ddns-client.pyをダウンロードして、DS418play の適当なディレクトリに放り込む
  • 適当なユーザーのホームディレクトリ直下 (e.g., DS418play の場合は /homes/<user>) に、以下の内容で .env を作成する
    USERID=<お名前.com のユーザーID>
    PASSWORD=<お名前.com のログインパスワード>
    HOSTNAME=<ホスト名>
    DOMNAME=<ドメイン名>
    
  • タスクスケジューラーで、以下の設定の新規タスクを追加する
    • 全般設定 -> ユーザー: /homes/<user> 直下に .env を置いた場合は <user>
    • タスク指定 -> ユーザー指定のスクリプト: /path/to/onamae-ddns-client.py
      • DS418play の場合、/homes/tom_tan/onamae-ddns-client.py に置いたスクリプトは /volume1/homes/tom_tan/onamae-ddns-client.py として参照する必要があった
    • スケジュール -> 日付 および 時間: お好みの間隔[2]
  • できあがり!
    • あとは NAS がよしなに IP アドレスを更新してくれます
    • タスク設定 -> 通知 にある スクリプトが異常終了した場合にのみ詳細な実行情報を送信 にチェックを入れておくと、問題があればメールで知らせてくれます[3]

以下、先人たちやスクリプト作成時の要件の紹介。

先駆者達

ブログ記事や Github などで、同様のことを行うプログラムがいくつか見つかる[4]が、今回の自分の要件には合わなかったため、そのまま利用するのは断念した。

要件

  • DS418play 上のコンソールなどには触れずにセットアップできる
    • DS418play にはタスクスケジューラ機能があったのでそれを活用する
    • 事前調査(ssh でコンソールにログインして確認)によると、スケジューラから以下のツールは起動できそうだった
      • sh
      • bash
      • Python 2.7.18[5]
  • ビルドや依存ライブラリのインストールが不要
    • ビルド環境作ったりメンテするのめんどくさいでござる!
  • 設定を外部ファイルかパラメータ引数で渡すことができる
    • 直書きしたくないでござる!
  • スケジューリングや定期実行などの機能は不要
    • その辺りは NAS のタスク スケジューラー機能にぶん投げる!

注意点

  • Python 2 系がインストールされている環境なら動くはずだが、DS418play 以外での動作は未検証
  • Python 3 系だと urllib2 (Python 3 系では削除されている)などが原因で動かない
脚注
  1. 公式サイトの製品一覧からは見えなくなってる? ↩︎

  2. 数分単位だと短すぎるかもしれない ↩︎

  3. 通知 -> 電子メール タブでメール設定が必要なので注意 ↩︎

  4. 順不同。抜けもあるかもしれない ↩︎

  5. Python 2 系は既に EOL です!今回のような特殊な状況でない限り、Python 3 系を使いましょう! ↩︎