IPをDNSで変化に追随させる(DDNS入門)
自宅サーバーを公開しようとしたとき、こんな問題にぶつかります。「IPアドレスが変わってしまう…」。プロバイダから割り当てられるIPは固定ではなく、再接続のたびに変わることがほとんどです。そこで役立つのがDDNS(Dynamic DNS)です。
DDNSとは?
DDNSは「動的DNS」のことです。IPアドレスが変わるたびに、自動でDNSレコードを更新してくれる仕組みです。
通常のDNS:
example.com → 固定のIPアドレス
DDNS:
example.com → 今のIPアドレス(自動更新)
よく使われるDDNSサービス
- No-IP(https://www.noip.com/):無料プランあり、設定が簡単
- Cloudflare:独自ドメインがあればAPIで自動更新できる
- DuckDNS(https://www.duckdns.org/):完全無料、Raspberry Piでよく使われる
Raspberry Pi + DuckDNSで設定する例
1. DuckDNSでドメインを取得
DuckDNS(duckdns.org)にログインして、サブドメインを作成します。例:myserver.duckdns.org
2. 更新スクリプトを作成
mkdir -p ~/duckdns
cat << 'EOF' > ~/duckdns/duck.sh
echo url="https://www.duckdns.org/update?domains=myserver&token=YOUR_TOKEN&ip=" | curl -k -o ~/duckdns/duck.log -K -
EOF
chmod 700 ~/duckdns/duck.sh
3. crontabで定期実行(5分ごと)
crontab -e
# 以下を追加
*/5 * * * * ~/duckdns/duck.sh >/dev/null 2>&1
Cloudflare + 独自ドメインの場合
独自ドメインをCloudflareで管理している場合は、APIを使ってAレコードを自動更新できます。
#!/bin/bash
# 現在のIPを取得
IP=$(curl -s https://api.ipify.org)
# CloudflareのAPIでDNSレコードを更新
curl -s -X PUT "https://api.cloudflare.com/client/v4/zones/ZONE_ID/dns_records/RECORD_ID" -H "Authorization: Bearer YOUR_API_TOKEN" -H "Content-Type: application/json" --data "{"type":"A","name":"example.com","content":"$IP"}"
まとめ
DDNSを使えば、固定IPがなくても自宅サーバーを安定して公開できます。Raspberry Piと組み合わせると、月数百円のVPSを借りなくても自前でサーバーを運用できます。最初の設定さえ乗り越えれば、あとは自動で動き続けてくれる便利な仕組みです。
