DDNS対応のドメインのIPの更新のお話。
旧サイトで利用していた『MyDNS』、新サイトで利用している『お名前.com』、どちらもDDNS対応です。ドメインのIPの更新方法について解説します。
『MyDNS』についてはshでドメインのIPを更新する方法は見つけやすいのですが、『お名前.com』はshでドメインのIPを更新する方法について新しめの情報があまり見つけられず不安を残したまま作業を開始しました。(初年度無料だからまぁいいかで)
結論、『お名前.com』もラズパイからshでドメインのIPを更新できました。
実際に実行しているsh、cron設定などの解説です。
この記事の目次
DDNSとは
DDNSの話をするうえで先に知っておかなければならないDNSの話から。
当サイトがラズパイのwordpressでブログを公開している構成で説明します。
WWWから当サイトへアクセスする際、以下のように私の自宅のIPを指定して『https://123.456.789.123』アクセスすることが可能です。その自宅のIPの部分をドメイン(文字列)に変換『https://kone-life.com』する機能がDNSです。
次にDDNSについて。通常の自宅で契約するネット環境はIPが固定ではありません。その場合DDNSを利用する必要があります。
DDNSとは自宅のIPが変化した場合、ドメイン(文字列)に登録されているIPを更新する機能を有したDNSです。動的DNS、Dynamic DNSとも呼ばれます。
DDNSの説明は以上ですが、DDNS対応のドメインは絶対に必要な作業があります。それは、ドメインを取得した提供元に自宅のIPを定期的に送信し、ドメインと自宅のIPの紐づけをし続ける必要があるということです。
DDSN対応のドメインに対し自宅のIPを更新する方法について、次項で『MyDNS』、『お名前.com』のケース別で説明します。サービス提供元が変われば実施方法も変わります。
『MyDNS』でドメインのIPをラズパイから自動更新する方法
ラズパイで『MyDNS』のドメインのIPを更新するshとcron設定です。
<作業内容>
- 『https://www.mydns.jp』でアカウントを取得。
- ラズパイを起動し、以下のコマンドでcron設定。
- shの【mydnsのアカウント】、【mydnsのパスワード】の箇所を書き換え
- 保存して終了
$ crontab -e
*/30 * * * * wget -O – –http-user=【mydnsのアカウント】 –http-password=【mydnsのパスワード】 https://ipv4.mydns.jp/login.html &>/dev/null
<解説>
上記についてですが、30分ごとに『MyDNS』に自宅のIPを送信しています。
『MyDNS』に自宅のIPを送信する方法は何種類か準備されていますが、以下の送信方法を採用しました。
『MyDNS』へ自宅のIPで更新が正常な行われているかの確認方法ですが、『https://www.mydns.jp』でログインすると自宅のIPの更新状況がログで表示されます。
『お名前.com』でドメインのIPをラズパイから自動更新する方法
ラズパイで『お名前.com』のドメインのIPを更新するshとcron設定です。
<作業内容>
- 『お名前.com』でアカウントを取得。
- ラズパイを起動し、以下のshを作成しcron設定。
- shの【お名前.comで取得したドメイン】(当サイトの場合kone-life.com)、【お名前.comのアカウント】、【お名前.comのパスワード】、【ラズパイ内の絶対パス】の箇所を書き換え
ラズパイ内でshを作成(ファイル名は何でもOK)
$ vi onamae_update.sh
onamae_update.shの中身
#!/bin/bash
# ルータのIPを取得する
gip=$(curl inet-ip.info)
# ドメインに紐づいてるIPを取得する
domip=$(dig 【お名前.comで取得したドメイン】 +short)
# ルータのIPとドメインのIPが相違するなら更新
if [ “${gip}” != “${domip}” ]; then
{
echo “LOGIN”
echo “USERID:【お名前.comのアカウント】“
echo “PASSWORD:【お名前.comのアカウント】“
echo “.”
echo “MODIP”
echo “HOSTNAME:”
echo “DOMNAME:【お名前.comで取得したドメイン】“
echo “IPV4:$gip”
echo “.”
echo “LOGOUT”
echo “.”
} > 【ラズパイ内の絶対パス】/input.txt
openssl s_client -connect ddnsclient.onamae.com:65010 -quiet < 【ラズパイ内の絶対パス】/input.txt
wait $!
echo “$(date) IPを更新しました。${domip} -> ${gip}”
else
echo “$(date) IPは${domip}に設定されています。更新の必要はありません。”
fi
exit 0
(上記shの参考サイト)
cron設定
$ chmod 777 onamae_update.sh
$ crontab -e
*/30 * * * * 【ラズパイ内の絶対パス】/onamae_update.sh
<解説>
上記についてですが、30分ごとに自宅のIPが変わっていることを確認し、IPが変わっていた場合『お名前.com』に自宅のIPを送信しています。
shは単独で実行し、正常に動くことを確認してからcron登録するようにしてください。
digコマンドはラズパイの初期時にはインストールされていなかったはず。以下でインストールできるはず。(きちんと記録してなかったから間違っていたらスマソ💦)
$ sudo apt-get install dnsutils
<はまったポイント『003 DBERROR』>
shを単独実行しテストした際、『003 DBERROR』が出てドメインに自宅のIPを登録できない事象が発生。以下のような感じで出力された。
(省略)
000 COMMAND SUCCESSFUL
.
000 COMMAND SUCCESSFUL
.
003 DBERROR
.
000 COMMAND SUCCESSFUL
(省略)
原因は『お名前.com』でドメインを利用するための初期設定(レコード設定)を行っていないことでした。
以下のサイトを参考に実施する必要があります。(注意)以下は少し古いサイトのようで、現在の『お名前.com』のHPの画面の遷移異なります。頑張って探せばレコード設定画面までいきつけます。
(参考)
何をやっているのかは・・・さっぱりわかりません。理解する気もありません💦
とりあえず、最後まで完了させましょう。
これでshを実行した際、『003 DBERROR』が出力されなくなるはずです。
(参考)当サイトは以下のように設定しています。※表示していいかわからない箇所は塗りつぶし
まとめ
『MyDNS』と『お名前.com』のドメインのIP更新方法でした。
これから、DDNSを利用する方の一助になれば幸い。
『お名前.com』のような独自ドメインは、DDNSとして利用するための知識が全くなかったため、何から手を付けて良いのか全く分からず、しばらくフリーズしてしまった期間がありました。初期設定(レコード設定)が必要なんて初耳です。解説サイトみてもさっぱりで💦
『MyDNS』はサブドメインになっているので、おそらく初期設定も何も必要なく利用できていたのでしょう。
ドメイン変更やってみて本当に大変でした。諸事情によりRaspberry Pi 5のOSの入れ直しも行いました。1ヶ月以上記事更新が停止してしまった。
サブドメインを利用すべきか、独自ドメインを利用すべきか、初めにしっかり考えて決めるべきですね。
いじょ!!
次回こそは、Raspberry Pi 5へのApach、Wordpressのインストール方法を書こうかな。
コメント