5
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

お名前.comのDDNSクライアントをPythonで実装した【Linux対応】

Last updated at Posted at 2024-01-06

前置き

お名前.comではダイナミックDNSクライアントが提供されていますが,サポートOSがWindowsのみとなっています.サーバ機でUbuntuを使用しているとDDNSを別のWindows機に頼ることになり,運用が面倒になってしまいます.

お名前.comのDDNSではテキストベースのプロトコルが使われているらしく,再現した実装が多々見つかりました.ただし,通信の実装が様々で,公式クライアントの通信を調べて再実装する必要を感じたため,新たに作成しました.

非公式な実装ですので,使用は自己責任でお願いします.

要件

  • Python 3.7 以上

導入方法

Ubuntuなど,systemdを採用するLinuxディストリビューションでの導入方法です.

  1. リポジトリをクローンする

    git clone https://github.com/y-otn/onamae-ddns-client.git
    cd onamae-ddns-client
    
  2. onamae_ddns_client.py の以下の項目を書き換える(8-12行目)

    • INTERVAL: 更新間隔(秒)
    • USERID: お名前ID
    • PASSWORD: パスワード
    • HOSTNAME: ホスト名(任意)
    • DOMNAME: ドメイン名

    公式クライアントの更新間隔の初期値は1800秒です.
    公式の最低値,300秒未満では使用しないでください.

    日本語ドメインにも対応しています.

  3. スクリプトを配置し,適切な権限を設定する

    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
    
  4. 自動起動するサービスとして設定,起動する

    sudo cp onamae_ddns_client.service /etc/systemd/system/
    sudo systemctl daemon-reload
    sudo systemctl enable --now onamae_ddns_client.service
    

    必要に応じて python3 のパスを修正してください.

  5. サービスの状態を確認する

    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などで繰り返し実行する場合は適宜修正してください.
そのまま使用すると多重起動し,過剰なアクセスを生じます.

参考文献

5
4
0

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
5
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?