前置き
お名前.comではダイナミックDNSクライアントが提供されていますが,サポートOSがWindowsのみとなっています.サーバ機でUbuntuを使用しているとDDNSを別のWindows機に頼ることになり,運用が面倒になってしまいます.
お名前.comのDDNSではテキストベースのプロトコルが使われているらしく,再現した実装が多々見つかりました.ただし,通信の実装が様々で,公式クライアントの通信を調べて再実装する必要を感じたため,新たに作成しました.
非公式な実装ですので,使用は自己責任でお願いします.
要件
- Python 3.7 以上
導入方法
Ubuntuなど,systemdを採用するLinuxディストリビューションでの導入方法です.
-
リポジトリをクローンする
git clone https://github.com/y-otn/onamae-ddns-client.git cd onamae-ddns-client
-
onamae_ddns_client.py
の以下の項目を書き換える(8-12行目)-
INTERVAL
: 更新間隔(秒) -
USERID
: お名前ID -
PASSWORD
: パスワード -
HOSTNAME
: ホスト名(任意) -
DOMNAME
: ドメイン名
公式クライアントの更新間隔の初期値は1800秒です.
公式の最低値,300秒未満では使用しないでください.日本語ドメインにも対応しています.
-
-
スクリプトを配置し,適切な権限を設定する
sudo mv onamae_ddns_client.py /usr/local/bin/ sudo chown root:root /usr/local/bin/onamae_ddns_client.py sudo chmod 600 /usr/local/bin/onamae_ddns_client.py
-
自動起動するサービスとして設定,起動する
sudo cp onamae_ddns_client.service /etc/systemd/system/ sudo systemctl daemon-reload sudo systemctl enable --now onamae_ddns_client.service
必要に応じて
python3
のパスを修正してください. -
サービスの状態を確認する
sudo systemctl status onamae_ddns_client.service
次のような出力があれば,正常に動作しています.
- DNS records updated successfully. IPv4: ***.***.***.***
- No update necessary, DNS records are current.
次のコマンドで長期的なログを確認できます.
sudo journalctl -u onamae_ddns_client.service
onamae_ddns_client.py
は常駐して動作する設計です.
cronなどで繰り返し実行する場合は適宜修正してください.
そのまま使用すると多重起動し,過剰なアクセスを生じます.