検索条件
全1件
(1/1ページ)
Value-DomainのダイナミックDNSエンドポイントは60秒以内に叩くとエラーが返ってくるので、これを回避するためのDDNSの仕組みを作った話。
まず、Value-DomainのDNS APIに対し、既存のaレコードをバルクで差し替えるためのツールとしてvd-ddns_v4.plを作った。
そしてhotplug.dにPPPoEインターフェースのIPが変わったときに、このスクリプトを蹴る処理を書いた。
OpenWrtにIPv4用のPPPoEインターフェースがある。
/root配下とか適当な場所に放り込む
opkg install openssh-sftp-serverでSFTPを導入しておくとファイル移動に便利vi /etc/hotplug.d/iface/40-pppoeとかして、OpenWrtのインターフェースが変化したときのHookを作る
#!/bin/sh
# デバイスが存在しなければ終了
[ -n "$DEVICE" ] || exit 0
# リンクアップでなければ終了
[ "$ACTION" = ifup ] || exit 0
# インターフェース名がPPPoEのものでなければ終了
[ "$INTERFACE" = wanppp ] || exit 0
# pppoe-wanpppのIPv4アドレスを取得
pppoeaddr=$(ip -4 addr show pppoe-wanppp | head -2 | tail -1 | awk '{print $2}')
# ログに吐く
logger -t "DDNS - PPPoE IP" $pppoeaddr
# DDNSもどきを叩く
/root/vd-dns-util/vd-ddns_v4.pl 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX' example.com $pppoeaddr hoge fuga piyo
# 結果をログに吐きたいが何故か動いていない
if [ $? -eq 0 ]; then
logger -t "DDNS - UPDATE SUCCEED"
else
logger -t "DDNS - UPDATE FAIL"
fi
PPPoEインターフェスをRestart
一般的にDNSレコードの浸透時間は更新前に浸透していたTTLに依存し、Value DomainのAPI経由で普段から操作している場合は120秒以下にならないため、最大120秒のダウンタイムが発生するが、理論上は公式のDDNS機能と大差ないはずと思われる。
aレコードのみの対応にしているのは私の環境だとIPv6は変動しないが、v4はそれなりの頻度で変わるためだ。
運用しているMastodonのv4が変わったのに気づかないまま疎通できないインスタンスが出てくることがしばしばあり、手動で対応するのが手間なのと、毎回一日くらい気づくのに遅れるので今回自動化に踏み切った。前々からやり勝ったのだが、中々腰が重く進んでいなかった。
そもそもこの手のものは監視システムで検知できて然るべきなので、おいおい監視システムの構築もしていきたいところだ。