コンテンツにスキップ

DynDNS

DynDNSは、FreeGatewayのダイナミックDNSシステムです。DHCPでIPアドレスが割り当てられ、いつでも変わりうるシステムに対して、ホスト名が常にそのシステムを指すようにします。これにより、そのシステムは固定IPアドレスのメリットのほとんどを得られます。お客様自身のPowerDNS権威DNSサーバーと連携して動作し、2つのデーモンはいずれもFreeBSD向けにC++で書かれています。

Gateway向けに設計

DynDNSは主にGateway向けです。GatewayがDHCPサーバーからアドレスを取得している支店でも、アドレスが変わるたびにDNSレコードが自動的に更新されるため、ホスト名でアクセスできます。

DynDNSは、お客様がPowerDNSを権威DNSサーバーとして運用するFreeBSDサーバーを持ち、SQLite3バックエンドで構成していることを前提としています。まだお持ちでない場合は、FreeGatewayのpowerdns_manager.pyスクリプトで、SQLite3データベースを使うPowerDNS権威DNSサーバーをセットアップできます。

2つのデーモン

デーモン動作する場所役割
dyn_dns_clientDHCPでIPアドレスが割り当てられるクライアントシステムシステムの現在のIPアドレスを、定期的にDNSサーバーへ送信する
powerdns_updaterDNSサーバー(PowerDNSと同じ場所)登録済みクライアントからの通知を受信して検証し、PowerDNSのSQLite3データベース内のホスト名とアドレスのレコードを更新する

動作の仕組み

クライアントは、現在のIPアドレスを暗号化されたペイロードに入れたメッセージを、定期的にサーバーへ送信します。サーバーはメッセージを受信し、有効であることを確認するための一連のテストを実行します。メッセージが有効で、かつクライアントのアドレスが変わっている場合、サーバーはデータベース内のそのクライアントのレコードを更新します。

これらの定期メッセージはハートビートとしても機能するため、サーバーは登録済みのすべてのクライアントの状態を常に把握できます。

安全な通信

DynDNSは、Yumeiがクラスター間通信にTCPで使うチャネルのUDP版を使用します。Sodium暗号ライブラリを基盤とし、事前共有の公開鍵を使います。DynDNSはTLSを使用せず、Yumeiにも依存しません。

登録と管理

現時点では、クライアントの登録はコマンドラインで行い、デーモンの管理はSSH経由で行います。GatewayとDNSサーバーの両方のシステムダッシュボードからの登録は、今後のリリースで提供する予定です。