自宅サーバーで動的IPを使用する際の悩み
NASを構築して家族の写真を保存したり、外出先からVPNで自宅にアクセスしたりしていませんか?そこで必ず直面するのが「動的IP」の壁です。ベトナムのプロバイダー(Viettel、FPT、VNPTなど)では、ルーターの再起動時や24〜48時間の間隔でパブリックIPアドレスがリセットされるのが一般的です。
外出先で急に資料が必要になったのに、Connection timed out というエラーが出たことはありませんか?理由は単純で、自宅のIPが変わってしまったからです。以前、50人規模のオフィスのインフラを管理していた際、専用線のバックアップとしてDDNSを利用していました。固定IPに毎月数千円から一万円以上の追加費用を払う代わりに、このソリューションを導入することで、コストを大幅に抑えつつスムーズなリモートアクセスを実現できました。
仕組みは非常にシンプルです。ツールが新しいIPを自動検出し、DNSレコードを更新します。Cloudflareは安定したAPIを無料で提供しており、現在最も有力な選択肢です。一方、ddclient はLinux上で動作する超軽量なクライアントで、メモリ消費量は10MB未満。この同期作業に最適です。
なぜCloudflareとddclientを選ぶのか?
No-IPのような多くのDDNSサービスでは、毎月のメール確認が必要で非常に面倒です。独自のドメイン(lab.itfromzero.com など)を所有している場合、Cloudflareと組み合わせることで、よりプロフェッショナルな運用が可能になります。
ddclient はバックグラウンドサービス(デーモン)として動作します。古いPCやRaspberry Piを、どこからでもアクセス可能なサーバーに変えてくれます。もう長いIPアドレスを覚える必要はなく、覚えやすいドメイン名でアクセスできるようになります。
ステップ1:CloudflareでAPIトークンを作成する
セキュリティのため、Global API Keyは絶対に使用しないでください。以下の手順に従い、最小権限の原則(Principle of Least Privilege)に基づいてAPIトークンを作成します。
- Cloudflareダッシュボードにアクセスし、My Profile > API Tokens を開きます。
- Create Token を選択し、Edit zone DNS テンプレートを使用します。
- Permissionsを設定:
Zone - DNS - EditおよびZone - Zone - Read。 - Zone Resources で、対象のドメインを正しく選択します。
- Continue to summary をクリックし、トークン文字列をコピーします。
注意:Cloudflareはこのトークンを一度しか表示しません。必ずパスワード管理ツールなどに保存してください。
ステップ2:システムにddclientをインストールする
UbuntuやDebianへのインストールは、apt を使って非常に素早く行えます。ターミナルを開き、以下のコマンドを実行してください。
sudo apt update
sudo apt install ddclient libjson-any-perl libdata-validate-ip-perl -y
青い設定画面(ncurses)が表示されることがありますが、Enter または Cancel を押してスキップして構いません。Cloudflareの最新のAPI v4と完全に互換性を持たせるため、設定ファイルは手動で作成します。
ステップ3:ddclientの詳細設定
/etc/ddclient.conf にある設定ファイルを開きます。既存の内容をすべて削除し、以下のコードを貼り付けてください。サーバーが多重NAT環境下にある場合でもWeb経由でIPを取得できるよう最適化してあります。
# /etc/ddclient.conf
use=web, web=checkip.dyndns.org
protocol=cloudflare
server=api.cloudflare.com/client/v4
login=token
password='YOUR_CLOUDFLARE_API_TOKEN'
# メインドメイン (Zone)
itfromzero.com
# サーバーを指し示すサブドメイン
home.itfromzero.com
重要な注意点:
use=web:ddclientがローカルIP(192.168.x.x)ではなく、実際のパブリックIPを取得できるようにします。login=token: APIトークンを使用する場合の必須構文です。ここに個人のメールアドレスを入力する必要はありません。
ステップ4:権限設定と接続確認
設定ファイルには重要なトークンが含まれているため、アクセス権限を制限して漏洩を防ぎます。
sudo chmod 600 /etc/ddclient.conf
sudo chown root:root /etc/ddclient.conf
すべてが正しく設定されているか確認するために、以下のデバッグコマンドを実行します。
sudo ddclient -daemon=0 -debug -verbose -noquiet
画面に SUCCESS: updating home.itfromzero.com と表示されれば成功です。Cloudflareの管理画面をリロードして、DNSレコードが最新のIPに更新されていることを確認してください。
ステップ5:自動実行の設定
ddclient がシステム起動時に自動的に開始され、IPの変更を監視するようにサービスを有効化します。
sudo systemctl enable ddclient
sudo systemctl start ddclient
動作状況を確認するには、sudo systemctl status ddclient コマンドを使用します。デフォルトでは、スクリプトは5分ごとにIPをチェックします。IPに変更がない場合、CloudflareのAPIへの負荷を避けるため、何も行いません。
ホームラボ運用のための実践的なアドバイス
数年間、自宅でシステムを運用してきた経験から、非常に重要な3つのポイントをお伝えします。
- プロキシ(オレンジ色の雲)をオフにする: ドメインを使用してSSH接続やVPNを利用する場合、DNSレコードを Gray Cloud(DNSのみモード)に設定してください。CloudflareプロキシはHTTP/HTTPSのみをサポートしているため、オンにするとサーバーへのSSH接続ができなくなります。
- ログを確認する: IPが更新されない場合は、
grep ddclient /var/log/syslogコマンドを使用してください。多くの場合、トークンの期限切れや設定ファイルの記述ミスが原因です。 - ルーターのポート開放: DDNSはあくまで「道案内」の役割です。サーバーにアクセスするには、ルーター側で ポートフォワーディング を設定し、サーバーのローカルIPに正しく転送する必要があります。
DDNSをマスターすることは、コストをかけずに個人サービスを自由に展開するための第一歩です。ぜひラボの構築に成功し、自宅でのプロフェッショナルなサーバー管理を楽しんでください!

