世界を動かす技術を、日本語で。

DynIP – RFC 2136、IPv6、DNSSEC、そしてBYODに対応したダイナミックDNS

概要

  • ゾーン作成からデプロイまでの クイックスタートガイド
  • IPアドレスSSL証明書 などの管理方法
  • API自動化 によるゾーン登録や管理
  • APIトークン の発行と管理
  • セキュリティや運用上の 注意事項

クイックスタートガイド

  • ゾーン作成 ・デバイス名を入力 ・ベースドメインを選択 ・「Create Zone」ボタンをクリック

  • 設定取得 ・新しく作成したドメインの横にある「Snippets」ボタンをクリック

  • デプロイ ・デバイスタイプを選択 ・生成された設定ブロックを ルーターのCLI へコピー

  • IPアドレス自動検出 ・IPv4/IPv6(デュアルスタック)は接続状況により 自動検出・自動更新

ドメイン & ツール管理

  • 現在のIPアドレスTSIGシークレットDNSSECSSL証明書 の表示
  • ゾーン名、ロック状態、最新同期時刻、証明書有効期限の確認
  • ドメイン未登録時は「Create one above」で新規作成

クイック同期

  • 「Quick Sync」機能で、選択したゾーンを 現在の外部IPアドレス に即時更新
  • 検出されたネットワークIPを表示(自動検出)

API自動化

  • APIを利用したゾーン登録 ・現在のセッショントークンを使い、/registerエンドポイントへPOSTリクエスト送信 ・例:
    curl -X POST "{{ backendUrl }}/register?subdomain=my-new-router&base_domain={{ baseDomains[0] }}" \
      -H "Authorization: Bearer {{ token }}"
    
    ・セッショントークンはログアウトで失効 ・長期運用には APIトークン 利用推奨

APIトークン管理(Pro+機能)

  • APIトークン はProプランで利用可能

  • 長期間有効なトークンで自動化(監視スクリプト、CIパイプライン、MSP連携)

  • トークンは 読み取り専用 または フルアクセス でスコープ設定可能

  • トークンの発行・失効管理

  • 発行時のみトークン表示。必ず パスワードマネージャーやシークレット管理ツール に保存

    ・トークン名 ・スコープ(読み取り専用/フルアクセス) ・最終使用日時 ・有効期限 ・アクション(失効など)

  • 注意事項 ・トークンは再表示不可。安全な場所へ保存必須(例: 1Password, Bitwarden, CIのシークレット管理)


必要に応じて、各セクションの手順や注意点を確認しながら 効率的なゾーン管理・自動化運用 を実現。

Hackerたちの意見

ダニエルです。スウェーデンでネットワークエンジニアをやってます。DynIPを作った理由は、試したDDNSサービスがどれも2010年代のネットワーク向けに設計されていて、独自のHTTPのみの更新プロトコル、IPv6のサポートが乏しい、DNSSECがない、現代のデバイスに対するサポートが少ないからです。内容は以下の通りです:

  • RFC 2136 / TSIGの更新を第一級のパスとしてサポート。FortiGateのgenericDDNSやMikroTikの/tool dns-updateがネイティブで動作します — カスタムクライアントは不要です。HTTP APIも他のすべてに利用可能です。
  • IPv6のエンドツーエンド。権威あるネームサーバーはIPv6経由でアクセス可能(親の.devゾーンにAAAAグルーが公開されています)、顧客ゾーンはAとAAAAを公開し、プラットフォームはIPv6専用クライアントでも動作します。
  • 選択されたゾーンでDNSSECが利用可能。トグル一つで切り替えられます。
  • サブドメイン委任を通じて独自ドメインを持ち込むことができます。subdomain.yourcompany.comを私たちのネームサーバーにポイントして、通常通り管理してください。
  • 隠れたプライマリアーキテクチャ:スウェーデンとスイスに地理的に分散した二つのセカンダリがTSIGをローカルで検証し、公開トラフィックを受け取らないプライマリに更新を転送します。
  • プライベートAPNに優しい:RFC 1918およびCGNATアドレスをレコードに受け入れます。これにより、プライベートAPN上のセルラーフリートが内部IPを指す安定したホスト名のためにパブリックDNSを利用できます。フリートオペレーションガイドに記載されています。
  • Dockerコンテナ(ghcr.io/33k-org/dynip-updater)を小さく用意していて、docker-compose / Kubernetes / Coolify / Dokployのセットアップに使えます。 背景:25年間のマネージドネットワーキング経験。DDNSは壊れたり、トリックが必要な部分でした。壊れないものが欲しかった。 スタック:PowerDNS 4.8の権威サーバー、FastAPIバックエンド、Postgres、トランザクションメール用のPostfix、外部サーフェスとAPIのトンネルとしてのCloudflare。dynip.devで稼働中。請求にはPaddleを使用。無料プランもあります。アーキテクチャやTSIG同期メカニズム、ゾーンごとのDNSSEC処理、隠れたプライマリアプローチ、その他何でも掘り下げるのは大歓迎です。

RFC 1918およびCGNATアドレスをレコードに受け入れます それって、他人のプライベートサーバー(XSS攻撃を仕掛けたいような)を自分のドメインに入れられるから、セキュリティの問題にならない?なんかそれがセキュリティ的に良くないっていう記憶があるんだけど。

スコール!すごく楽になる感じがする、試してみるのが楽しみ。

共有してくれてありがとう!PowerDNSはどうやって設定したの?シングルインスタンス?それとも複数インスタンス?一つのDBをみんなで共有するのか、それとも複数の権威サーバーで一つの隠れたプライマリを持つのか?

地理的に分散したセカンダリはどうやって動いてるの?同期はどうなってるの?それと、Anycastはあるの?

よくやったね。もうちょっとファイブアイズのトラッキングを減らせるといいな。例えば、unpkgやtailwindcss.comのようなサードパーティのドメインからのインクルードを削除するとか、もちろんCloudflareも排除したいね。

どんなに頑張っても、ホームページに雑な見せ方をすると、印象が悪くなるよね。「専用クライアントなし。ベンダーロックインなし。」っていうのが目に入ったけど、これってAIのパターンなのかな?このサービス、数週間後も続いてるのか気になっちゃう。

参考までに:サイトはFirefox Focus(Android)ではトラッキング保護をオフにしないと動かないよ(デフォルトでオンになってる)。確認用メールのリンクをクリックしたとき、ちょっと混乱した。確認もステータスも何もなかったから。

最初の印象は「また一般的な、雰囲気だけのサービスのクローンかよ」って感じだった。でも、実際には中身がすごく良くて、ネットワーキングに対する深い理解がある人から来てるのが明らかだね。いい仕事してる、頑張って!

ボーナスポイント!RFC 2136、external-dnsと簡単に動作します。何年も前から、オンプレミスでk8s+external-dnsを使って、パブリックホスト上の自己ホストしたミニマルなBINDサーバーで運用しています。

ありがとう!external-dns + RFC 2136は素晴らしい選択ですね。正直、これについてのガイドを書くべきだと思います。フリートオペレーション用のガイドはすでにあるし、k8sパターンは自然な拡張です。

無料プランには長期トークンなしって書いてあるけど、どうやってdyndnsを使うの?

「長寿命トークン」っていうのは、管理API用のトークンのことだよ(ゾーンの作成・削除、リスト表示、Terraformスタイルの自動化とか)。実際のDNS更新用のTSIGキーとは違うんだ。どのプランでも、各ゾーンにはTSIGキーが付いてて、それが更新を支えてる。無料プランはダッシュボードを通じてゾーンを管理するけど、有料プランはプログラム的な管理のためにAPIトークンが追加されるんだ。

この分野に競争が入ってくるのは新鮮ですね。でも、自己ホスティングしたいなら、信頼性や使いやすさを気にしないなら、bind9もRFC 2136のDNS UPDATEとDNSSECをサポートしてますよ(まだそれは解決してないけど)。私のセットアップでは、HTTPリクエストを変換する小さなGo実行ファイルも書きました。なぜなら、私のホームルーターはDNS UPDATEに対応していないからです。

ありがとう!新しくて柔軟なものが出てくるといいな!それに、BINDは色々なことができるし、RFC 2136もその一つなんだ。今の構造に落ち着く前に、いくつかのオプションを見てたよ。Fortigateからいくつかのテストケースを作ったんだけど(dynipは最初Fortigate専用で、内部でDNSにコピー&ペーストしただけだった)、いろんなホストで使えるコード例がいくつかあるよ。WindowsやLinuxでも使えるし、家のラボにIoTデバイスがあればArduinoの例もあるよ。Goの実行ファイルを書くのはいいアイデアだね。/docsで更新情報をチェックしてみてね :)

無料プランの認証トークンは24時間で期限切れになるって本当?(JWTのexpクレームを見たんだけど)あまり時間をかけずに移行する前に知りたいな。試してみるだけでも、無料プランは持続可能なのか知りたい。

「長寿命トークン」っていうのは、管理API用のトークンのことだよ(ゾーンの作成・削除、リスト表示、Terraformスタイルの自動化とか)。実際のDNS更新用のTSIGキーとは違うんだ。どのプランでも、各ゾーンにはTSIGキーが付いてて、それが更新を支えてる。無料プランはダッシュボードを通じてゾーンを管理するけど、有料プランはプログラム的な管理のためにAPIトークンが追加される。だから、認証トークンはAPI用で、APIのベアラーとして使えるけど、TSIGはドメインが削除されない限り常に有効だよ。無料プランでは5つのゾーンが管理できて、それぞれに個別のTSIGキーがあって、常にアクティブなんだ。100以上の新しいゾーンや更新、削除を扱わない限り、払う必要はないよ。トークンの種類には明確な違いがあるから、分かりやすいといいな。

自分でOpenWrtのDDNSスクリプトを作って、AWS Route 53やCloudflare DNSを更新してたんだけど、それで問題は結構解決したんだ。その後Tailscaleが出てきてからは、DDNSやCGNATのことは気にしなくなったよ。

TailscaleもNetbirdもWireguardも最高だね。今は生きてるのが楽しい時代だよ。自分が書いたガイドがあるんだけど、https://dynip.dev/guides/tailscale でどうやって存在するのか、なぜ存在するのかを説明してるよ。OpenWrtのDDNSスクリプトはキーやシークレットがちょっと面倒だけど、スニペット機能があるおかげで、どうやって動いてるのかの推測をしなくても済むから、結構満足してるよ。

今は両方使ってるよ。DynIPは公開サービス用(まだいくつかあるんだ)、Tailscaleは自分だけがアクセスするためのもの。攻撃面が大幅に減った。運良くCGNATには悩まされてない。

私のドメインレジストラもDNSをホスティングしてて、ダイナミックDNSエントリーもサポートしてるよ。チェックボックスをオンにすると、更新用のURLとユーザー名がもらえて、それをUniFiルーターに入力できるんだ。これってどう違うの?

違わないよ、機能は同じ。私は、単一のセットアップだけじゃなくて、機能を拡張しようとしてるんだ。複数の更新パス、バリデーション、DNSSEC、Letsencrypt、BYODドメインなどをサポートしてる。バッテリー駆動のESPノードを他の国に送ることもできるし、同じことをする方法はいくつもある。私がやりたいのは、アクセスしやすくて、簡単で、見た目もいいプラットフォームを提供すること。例えばFortinetも似たようなことをやってて、彼らのウェブインターフェース内でsomething.fortiddns.comやfloat-zone.comを登録できるけど、Fortigateを新しいモデルにアップグレードすると、ドメインが古いハードウェアにロックされてるからサポートに連絡しないといけない。Syncologyも独自のものを持ってるし、選択肢が増えてる。私がやってるのは、あなた自身のドメインを束ねて、接続して、Letsencryptを標準でサポートするプラットフォームを提供することだよ。必要ならIPv6で複数の更新パスも使えるし。長い返信になっちゃったけど、「なぜ?」って質問があると、プラットフォームについて話せるから本当に嬉しい :)

そのレジストラの名前は何?

みんなの素晴らしいコメントや質問に感謝!これから娘を水泳のレッスンに連れて行くから、数時間後にスレッドを見返すつもり。改めて、嬉しいなこの人←happy

ピッチはすごく良さそうだね。今は試す時間がないけど、君のコメントを読まなかったら、ランディングページのタブをすぐに閉じてたと思う。ちょっとストレートに言うけど、他のバイブス系のページとあまり変わらない印象があるんだ。まだ試してないからそう言ってるわけじゃないし、君の説明は良さそうだけど、ページにもう少し個性を出して差別化を図るのもいいかもね。あと、プロジェクト専用のHackerNewsアカウントは作らない方がいいよ。

「ユーザー名を会社名やプロジェクト名にしない方がいい。そうすると、HNを宣伝に使ってる感じがして、個人として参加していないように見えるから。」 本名を使う必要はないけど、人間としてここにいるってことがわかるような名前にした方がいいよ。ユーザー名を変更したいなら、hn@ycombinator.comにメールしてみて。 https://news.ycombinator.com/item?id=22336638 他にも https://news.ycombinator.com/showhn.html も見てみて。