D-DNS.JP の使い方
D-DNS.JP は、自宅などの、ときどき変わる IP アドレスに、myhome.d-dns.jp のような決まった名前を付ける無料のダイナミック DNS サービスです。ホストごとの設定値は、マイページにも表示されます。
1. はじめに
- アカウントを作る無料登録でメールアドレスを入れ、届いたメールのリンクからパスワードを決めます。
- ホストを登録するマイページでホスト名を入力し、ドメインを選んで登録します。
- IP アドレスを知らせるDiCE・ルーター・スクリプトなどで、いまの IP アドレスを D-DNS.JP に知らせます(3 章)。
- ルーターを設定する外から使うポート(Web なら 443 など)を、家の中の機器へ通す設定(ポート開放)をします。
- 確かめる名前がいまの IP アドレスを指しているか、外から届くかを確かめます(7 章)。
2. 名前とドメイン
3. IP アドレスの知らせ方
次の方法のうち、どれか 1 つを使います。
3.1 DiCE(Windows)
無料ソフト DiCE に専用プラグイン(FaceDNS.plg)を入れ、次の値を設定します。IP アドレスが変わると、DiCE が自動で知らせます(IPv4 のみ)。
3.2 dyndns2 互換の更新 URL(/nic/update)
ルーター・NAS・ddclient・スクリプトなどから使う、DynDNS 互換(dyndns2)の更新用 URL です。
応答(本文はホストごとに 1 行):
http:// でも受け付けますが、パスワードが暗号化されずに送られます。対応している機器では https:// を使ってください。
3.3 ルーター・NAS
機器の DDNS 設定で「カスタム」または「DynDNS 互換(dyndns2)」を選び、次の値を入れます。項目名は機器によって違います。
<ipaddr> は、機器の説明書にある、IP アドレスを表す変数に置き換えます。
3.4 ddclient(Linux など)
protocol=dyndns2 ssl=yes server=d-dns.jp login=<メールアドレス> password='<パスワード>' myhome.d-dns.jp
inadyn・pfSense・OpenWrt なども、dyndns2 を選べば同じ値で使えます。
3.5 スクリプトと cron(Linux など)
いまの IP アドレスを /api/ip で調べ、変わったときだけ知らせるスクリプトの例です。cron で 5〜10 分おきに動かします。
#!/bin/sh # /usr/local/bin/d-dns-update.sh HOST=myhome.d-dns.jp STATE=/var/tmp/d-dns-ip IP=$(curl -fsS https://d-dns.jp/api/ip | sed -n 's/.*"ip": *"\([^"]*\)".*/\1/p') || exit 1 [ -n "$IP" ] && [ "$IP" = "$(cat "$STATE" 2>/dev/null)" ] && exit 0 R=$(curl -fsS -A d-dns-update.sh/1.0 -u '<メールアドレス>:<パスワード>' \ "https://d-dns.jp/nic/update?hostname=$HOST&myip=$IP") || exit 1 case "$R" in good*|nochg*) echo "$IP" > "$STATE" ;; *) echo "$R" >&2; exit 1 ;; esac
# crontab -e */10 * * * * /usr/local/bin/d-dns-update.sh
パスワードを書いたファイルは chmod 700 などで、ほかの人が読めないようにしてください。
4. IPv6
- AAAA レコードも登録できます。myip=203.0.113.5,2001:db8::5 のように並べると、A と AAAA を一度に更新します。
- myip を付けずに送る機器で IPv6 を更新するときは、更新 URL のサーバーを https://ipv6.d-dns.jp にします(IPv6 でしか接続できない名前です。d-dns.jp のままだと IPv4 で接続され、A が更新されます)。
- いまの IPv6 アドレスは https://ipv6.d-dns.jp/api/ip で調べられます。
- IPv6 を使わなくなったら、マイページの「IPv6 を削除」で AAAA を消します(次に IPv6 で更新すると、また登録されます)。
5. プログラム向けの API
curl -sS https://d-dns.jp/api/ip
curl -sS -X POST https://d-dns.jp/api/port-check -H 'Content-Type: application/json' -d '{"port": 443}'6. SSL 証明書(HTTPS)
設定例(ファイルを /etc/ssl/d-dns/ に置いた場合)。外から接続するには、ルーターで 443/tcp を開放する。
nginxserver {
listen 443 ssl;
server_name myhome.d-dns.jp;
ssl_certificate /etc/ssl/d-dns/myhome.d-dns.jp.fullchain.pem;
ssl_certificate_key /etc/ssl/d-dns/myhome.d-dns.jp.privkey.pem;
}<VirtualHost *:443>
ServerName myhome.d-dns.jp
SSLEngine on
SSLCertificateFile /etc/ssl/d-dns/myhome.d-dns.jp.fullchain.pem
SSLCertificateKeyFile /etc/ssl/d-dns/myhome.d-dns.jp.privkey.pem
</VirtualHost>privkey.pem は chmod 600 などで保護する。証明書が更新されたら、2 つのファイルとも置き換えて設定を読み込み直す(nginx -s reload / apachectl graceful)。中身は openssl x509 -in <fullchain.pem> -noout -subject -enddate で確かめられる。
7. 確かめ方・つながらないとき
名前がいまの IP アドレスを指しているかは、次のように調べます(更新から 120 秒ほどは、キャッシュに前の結果が残ることがあります)。
dig +short myhome.d-dns.jp A nslookup myhome.d-dns.jp