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を借りなくても自前でサーバーを運用できます。最初の設定さえ乗り越えれば、あとは自動で動き続けてくれる便利な仕組みです。

関連記事

ブログ

BLOG

PAGE TOP