
奇妙なものが欲しかったので、IPv6対応(miredo)ホストにも動的に更新されるDNSレコードがありました。 質問を検討した結果、多くの一般的なdyndnsサービスは、AAAAを登録する機能を提供していない(IPv6はIPv4のAタイプレコードに相当する)か、無料で提供していないか、不明なレベルのセキュリティ(またはhttp /プレーンテキスト)を動的に更新するための泥だらけの設定を持っていることがわかりました。 12個のサービスを試し、 freedns.afraid.orgにとどまることにしました
長所:
- 人間が読み取れる管理パネル(「AAAAを0ドルで購入」なし)
- AAAAを無料で提供
- セキュア(https)更新
- URLベースの更新(ddclientなどのエージェントの構成を疑う必要はありません)
機能のうち、AAAAを更新するための1行のスクリプトを自分で作成する必要がありました。 これが判明しました:
cat /etc/cron.d/freedns-watcher
PATH=/sbin:/usr/sbin:/bin:/usr/bin * * * * * root ipv6=$(ip a |grep -s -i -o '2001\:[a-f0-9\.:]*') && [ "$(nslookup -query=AAAA myhost.mooo.com ns1.afraid.org |grep -s -i -o '2001\:[a-f0-9\.:]*')" != "$ipv6" ] && curl -m 30 https://freedns.afraid.org/dynamic/update.php?bnJxM3kxMHRHF1p4B0NmSXJDfEFLc0NJOjEzMTEyNjv\&address=$ipv6 2>/dev/null |grep Updated && date >> /var/log/freedns.log &> /dev/null
スクリプトは単一行ですが、少し長いことが判明したため、次の理由についてコメントします。
5つ星-cronの情報「毎分実行」* * * * *
実行するアカウントを自分で決めるroot
ipv6=$(ip a |grep -s -i -o '2001\:[a-f0-9\.:]*')
エキゾーストからip teredo-addressを取得します。これは次のように機能します。 ip a |grep -s -i -o '2001\:[a-f0-9\.:]*' 2001:0:52ab:53b:2ab4:555e:23d0:1dc9
アドレスが見つかった場合、$ ipv6変数に入れます。見つからない場合、割り当ては失敗し、AAAAレコードを更新するためのさらなる努力は行われません(結局、teredoアドレスがない典型的な理由はインターネットへの接続(IPv4)であり、実際には更新するものはありません) )
[ "$(nslookup -query=AAAA myhost.mooo.com ns1.afraid.org |grep -s -i -o '2001\:[a-f0-9\.:]*')" != "$ipv6" ]
サーバーns1.afraid.orgに「私のAAAAの現在のIPアドレスは何ですか?」という主題についてインタビューし、現在miredoが設定しているものと比較します。 一致する場合、何もする必要はありません。スクリプトは中断されます。 システムの代わりにDNSサーバーが表示されるのはなぜですか? レコードの変更についてスクリプトに通知する際の遅延を最小限に抑えるため。 他のDNSサーバーでは、変更に長い遅延が生じます。 指定されたURLを1分ごとにチェックする以外に何もチェックすることはできませんが、私の意見ではこれは無礼です。 一方、AAAAに関するDNSクエリの送信は、いくつかの点でおかしいので、スクリプトのこの部分はオプションと見なすことができます。
curl -m 30 https://freedns.afraid.org/dynamic/update.php?bnJxM3kxMHRHF1p4B0NmSXJDfEFLc0NJOjEzMTEyNjv\&address=$ipv6 2>/dev/null |grep Updated
- AAAAレコードの更新(httpsに関する注意)
- bnJxM3kxMHRHF1p4B0NmSXJDfEFLc0NJOjEzMTEyNjv-ホストを更新するための個人キー。管理者freedns.afraid.orgの[ダイナミックDNS]-> [ダイレクトURL]セクションにあります。
- \&address = $ ipv6-スクリプトの最初にあるteredo IPv6をパラメーターとして実際に渡します
- 2> / dev / null | grep Updated-アップデートが成功したかどうかを確認します。 成功すると、サーバーは次のようなものを発行します
Updated 1 host(s) myhost.mooo.com to 2001:0:52ab:53b:2ab4:555e:23d0:1dc9 in 0.008 seconds
date >> /var/log/freedns.log
更新が成功した日付をログに記録します
cron、心配しないでください。このスクリプトの実行について毎分メールを送らないでください。&> /dev/null