PR
ダイナミックDNS CrontabDDNSMyDNS.jpUbuntu

無料の DDNS である MyDNS.jp を使う|Ubuntu18.04.2

library-ddns ダイナミックDNS

DDNS を使うのは初めてだが、MyDNS.jp での設定は意外とシンプルだった。サイトに接続して JOIN US メニュー からアカウントを登録する。その後ログイン状態で使いたいドメインを決めておいて DOMAIN INFO メニュー でドメインを設定する。そして、CronIP アドレス定期的に更新する ように設定すれば完了でした。

2026 年 7 月 追記:本文は Ubuntu 18.04 での記録ですが、MyDNS.jp の使い方(アカウント登録・ドメイン設定・cron での自動更新)は現在も基本的に同じで、他の Linux でもそのまま使えます。Ubuntu 18.04 自体は 2023 年 5 月にサポートが終了しているため、新規に構築する場合はサポート中のバージョンをお使いください。あわせて、記事末尾に安全性を高めるための補足を追記しました。

スポンサーリンク

JOIN US メニューからアカウントを登録する。

登録する

JONE US メニューで氏名、国名、住所、電話番号、連絡先メール を入力して登録します。

ログインとIPアドレスの通知に必要なマスターIDそのパスワードを、登録メールアドレス宛てに送信されます。

登録メールアドレスを確認する。

迷惑メールボックスも要確認!

登録ができたら、マスター IDパスワードを入力して MyDNS.JP にログインする。

DOMAIN INFO メニューでドメインを設定する

host1.example.jp ドメインをマスター ID、mydns123456 で登録する場合、

Domain* : (FQDN)
host1.example.jp

* 	        A 	 	mydns123456
host1 	        A 	 	mydns123456

Cron で IPアドレスを定期的に更新する。

Root ユーザーの Cron Job へ登録する。

書式:https://マスターID:パスワード@www.mydns.jp/login.html
root@ubuntu18:~# vi mydns_update.sh
#!/bin/sh

# MyDNS.JP
# host1.example.jp

/usr/bin/wget -O - 'https://mydns123456:ddrTar5PABC@www.mydns.jp/login.html'

root@ubuntu18:~#

作成したスクリプトでアップデートできるか実行してみる。
実行属性を付けて実行する。

root@ubuntu18:~# chmod +x mydns_update.sh

root@ubuntu18:~# ./mydns_update.sh
--2019-06-24 13:23:47--  https://mydns123456:*password*@www.mydns.jp/login.html
www.mydns.jp (www.mydns.jp) をDNSに問いあわせています... 168.235.75.38, 210.197.74.203, 46.19.34.8, ...
www.mydns.jp (www.mydns.jp)|168.235.75.38|:443 に接続しています... 接続しました。
HTTP による接続要求を送信しました、応答を待っています... 401 Unauthorized
選択された認証形式: Basic realm="Enter MasterID and Password."
www.mydns.jp:443 への接続を再利用します。
HTTP による接続要求を送信しました、応答を待っています... 200 OK
長さ: 特定できません [text/html]
`STDOUT' に保存中

-                                       [<=>                                                                ]       0  --.-KB/s               <html>
<head>
<title>Free Dynamic DNS (DDNS) for Home Server and VPS etc  | MyDNS.JP</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<LINK href="./site.css" rel=stylesheet type=text/css>

</head>
<BODY BGCOLOR="#FFFFFF"
      TEXT="#304040"
      leftmargin="0" topmargin="0" marginwidth="0" marginheight="0"
>
Login and IP address notify OK.<BR>
login_status = 1.<BR>
<BR>
<DT>MASTERID :</DT><DD>mydns123456</DD>
<DT>REMOTE ADDRESS:</DT><DD>123.123.123.10</DD>
<DT>ACCESS DAYTIME:</DT><DD>2019/06/24 04:23:48 UTC</DD>
<DT>SERVER ADDRESS:</DT><DD>168.235.75.38</DD>
<BR>

</body>
</html>
-                                       [ <=>                                                               ]     618  --.-KB/s    時間 0s

2019-06-24 13:23:48 (22.5 MB/s) - stdout へ出力しました [618]

root@ubuntu18:~#

MyDNS.jp にも反映されたか LOG INFO メニューを確認する。

2019/06/24 13:23:48 JST     IPv4 UPDATE : mydns123456 123.123.123.10 (i123-123-123-10.s30.a048.ap.plala.or.jp), http, la
2019/06/24 13:23:48 JST     DNSINFO UPDATE : host1.example.jp
2019/06/24 13:12:57 JST     CHANGE IPINFO : 123.123.123.10, 0:0:0:0:0:0:0:0

...

毎日0時にアップデートするように Cron へ登録し、Cron デーモンを再起動しておく。

root@ubuntu18:~# crontab -e
0 	0 	* 	* 	* 	/root/mydns_update.sh

root@ubuntu18:~# sudo systemctl restart cron.service

より安全・確実にする補足(2026 年 7 月 追記)

パスワードを URL に直接書かない

本文では https://ID:パスワード@www.mydns.jp/login.html のように URL にパスワードを直接書いています。これでも動きますが、実行中に ps コマンドなどでパスワードが見えてしまう可能性があります。気になる場合は、次のようにオプションで渡す形にすると、URL にパスワードが残りません。

#!/bin/sh
/usr/bin/wget -q -O /dev/null \
  --http-user=マスターID \
  --http-password=パスワード \
  https://www.mydns.jp/login.html

curl が使える環境なら、次のように書くこともできます。

curl -u マスターID:パスワード https://www.mydns.jp/login.html

いずれの場合も、スクリプトファイルにはパスワードが平文で書かれるため、chmod 700 などで本人しか読めない権限にしておくことをおすすめします。

IP が変わった時だけ通知する(アクセス過多を避ける)

本文の cron は毎日 1 回 IP を通知しますが、頻繁に実行する設定にすると MyDNS への過度なアクセスになります。IP が変わった時だけ通知するようにすると、短い間隔で回しても負荷になりません。

#!/bin/sh
IPFILE=/root/mydns_oldip.txt
NEWIP=$(curl -s inet-ip.info)
OLDIP=$(cat "$IPFILE" 2>/dev/null)

if [ "$NEWIP" != "$OLDIP" ]; then
  /usr/bin/wget -q -O /dev/null \
    --http-user=マスターID \
    --http-password=パスワード \
    https://www.mydns.jp/login.html
  echo "$NEWIP" > "$IPFILE"
fi

これなら、たとえば 10 分おきに cron で回しても、実際に MyDNS へ通知が飛ぶのは IP が変わった時だけです。IP 変更にすばやく追従しつつ、無駄なアクセスを減らせます。

※ 固定 IP の環境でも、アカウントが無効にならないよう、cron で定期的にアクセスしておくとよいでしょう。

コメント

タイトルとURLをコピーしました