🍮
Synology の NAS 上で(ほぼ)セットアップ不要で動くお名前.com用DDNSクライアント
タイトルが長い…
前フリ
かなり前に買って放置していた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
として参照する必要があった
- DS418play の場合、
-
スケジュール
->日付
および時間
: お好みの間隔[2]
-
- できあがり!
- あとは NAS がよしなに IP アドレスを更新してくれます
-
タスク設定
->通知
にあるスクリプトが異常終了した場合にのみ詳細な実行情報を送信
にチェックを入れておくと、問題があればメールで知らせてくれます[3]
以下、先人たちやスクリプト作成時の要件の紹介。
先駆者達
ブログ記事や Github などで、同様のことを行うプログラムがいくつか見つかる[4]が、今回の自分の要件には合わなかったため、そのまま利用するのは断念した。
- https://qiita.com/ats124/items/59ec0f444d00bbcea27d
- https://www.hinoshiba.com/post/onamaeddnsclient/
- https://qiita.com/miya-masa/items/1f9287c76ada07445125
- https://github.com/kunikada/onamae-ddns-client
- https://github.com/n-taka/onamaeDNS
- https://github.com/ats124/OnamaeDdnsTools
- https://github.com/subdiox/onamae
要件
- DS418play 上のコンソールなどには触れずにセットアップできる
- DS418play にはタスクスケジューラ機能があったのでそれを活用する
- 事前調査(ssh でコンソールにログインして確認)によると、スケジューラから以下のツールは起動できそうだった
- sh
- bash
- Python 2.7.18[5]
- ビルドや依存ライブラリのインストールが不要
- ビルド環境作ったりメンテするのめんどくさいでござる!
- 設定を外部ファイルかパラメータ引数で渡すことができる
- 直書きしたくないでござる!
- スケジューリングや定期実行などの機能は不要
- その辺りは NAS のタスク スケジューラー機能にぶん投げる!
注意点
- Python 2 系がインストールされている環境なら動くはずだが、DS418play 以外での動作は未検証
- Python 3 系だと urllib2 (Python 3 系では削除されている)などが原因で動かない
Discussion