結論:不正なURLは余分なupdate_IPキーが原因
問題はDuckDNSのトークンやサブドメインではありませんでした。設定からupdate_IPを削除することで、実際の問題が解決しました。これは、現在のDuckDNS APIで受け付けられるリクエストパラメータがdomains、token、任意のip、ipv6、verbose、clearであることとも一致します。
DuckDNS APIに照らして設定を検証する
https://www.duckdns.org/update?domains=YOUR_SUBDOMAIN&token=YOUR_TOKEN&verbose=true
DuckDNS更新APIによると、ドメインには.duckdns.orgを付けないサブネームを指定します。また、ipを空欄にすると、DuckDNSがIPv4を自動検出します。
curlエラー3が出たら、DNSをテストする前にURLを修正する
curl: (3) URL rejected: Malformed inputは、DuckDNSがDNS更新を受け入れるか拒否する以前に発生します。不正な変数、予期しないキー、引用符、スペース、または生成されたリクエストを壊す文字がないか確認してください。curlのエラー動作が公式の参照先です。
コンテナの状態だけでなく、更新結果を確認する
DuckDNSはOKまたはKOを返し、詳細モードではUPDATEDまたはNOCHANGEも返します。コンテナが「実行中」と表示されていても、パブリックDNSレコードが最新であるとは限りません。
DuckDNSの要件では、現在のZimaOS側アップデーターの仕組みを説明しています。
DuckDNSではCGNATや安全なリモートアクセスは解決できない
DDNSはホスト名をアドレスに対応付けるだけです。ルーターのポートを開放したり、CGNATを回避したり、ユーザーを認証したりすることはありません。実際の目的がNASへのリモートアクセスであれば、ホスト名を安全なリバースプロキシまたはVPN構成と組み合わせるか、組み込みのリモートアクセス機能を利用してください。
ZimaOSのHTTPSプロキシでは、HTTPS層について説明しています。
