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_client | DHCPでIPアドレスが割り当てられるクライアントシステム | システムの現在のIPアドレスを、定期的にDNSサーバーへ送信する |
powerdns_updater | DNSサーバー(PowerDNSと同じ場所) | 登録済みクライアントからの通知を受信して検証し、PowerDNSのSQLite3データベース内のホスト名とアドレスのレコードを更新する |
動作の仕組み
クライアントは、現在のIPアドレスを暗号化されたペイロードに入れたメッセージを、定期的にサーバーへ送信します。サーバーはメッセージを受信し、有効であることを確認するための一連のテストを実行します。メッセージが有効で、かつクライアントのアドレスが変わっている場合、サーバーはデータベース内のそのクライアントのレコードを更新します。
これらの定期メッセージはハートビートとしても機能するため、サーバーは登録済みのすべてのクライアントの状態を常に把握できます。
安全な通信
DynDNSは、Yumeiがクラスター間通信にTCPで使うチャネルのUDP版を使用します。Sodium暗号ライブラリを基盤とし、事前共有の公開鍵を使います。DynDNSはTLSを使用せず、Yumeiにも依存しません。
登録と管理
現時点では、クライアントの登録はコマンドラインで行い、デーモンの管理はSSH経由で行います。GatewayとDNSサーバーの両方のシステムダッシュボードからの登録は、今後のリリースで提供する予定です。