DDNS(No-IP)をcronで更新

DDNSを利用してzabbix agentを導入できないかと思い、ひとまずDDNSの設定を行いました。
でもopen vpn導入も考えているのですが、これだと結局ルータのポートフォワード用の穴が増えてダメじゃん、と思わなくない。

では、早速導入。

DDNSとは

このタイトルで明確に検索している方にはもはや説明は不要ですがダイナミックDNSの略になります。
DDNSで実現できることは「固定IPがなくても名前解決で自宅を特定可能にする」ことです。

DDNSを提供してくれているサービスに、特定のドメインサブドメインをお借りしてAレコードを登録するわけですね。

そこで何がダイナミックかというと、TTLの短さです。(と僕は勝手に言います。)

dig mydns.jp  
# mydns.jp.        300 IN  SOA mydns.jp. root.mydns.jp. 1420604081 600 180 600 300  

こんな感じで、TTLが5分と短いです。
ダイナミックだ。

これにより、いつ変動してしまうかわからない家の動的IPに対して5分以内で追随可能になるわけですね。

DDNSサービス

DDNSサービスにはいくつか、有名どころがあります。
例えば、mydnsですね。
これは非常に有名で、日本語サイトでもあるので利用者も多いのではないでしょうか?

ですが、今回はNo-IPという海外のサービスを利用していきます。
理由は単純明快。
MyDNSは通信がhttpだから。

ユーザ登録も、定期実行する通信も全部丸見えです。
戦慄します。無料で提供してくださっているので、余計な経費はかけられないということでしょうかね。

No-IP設定

正直参考サイトがいくつかあるので、ここでは割愛します。
PC遠隔操作に便利な無料ダイナミックDNS『no-ip』のアカウント・設定方法

こちらのサイトが、比較的今のサイトに近くわかりやすかったです。

onamae.comなどDNSを自分で利用したことがある人参考サイトがなくともなんとなく操作がわかると思います。
そうでない方は、ちょっとわかりづらいかも?

cronの設定

アカウントの作成が完了したら、今度はcronの設定です。
家庭内にあるサーバでもなんでも、常時起動しているマシンに対して定期実行のコマンドを登録しましょう。
私はraspbianで定期実行させています。

# crontab -e  
# crontab -l  
*/5 * * * * curl -s "https://login_id:password@dynupdate.no-ip.com/nic/update?hostname=yourdomain" > /dev/null  

登録時のlogin idやpassword、取得したドメインを指定していきます。
ドメインというかホストという方が正しいのかな。

またcronに登録する前に以下の部分のみを実行して、正しく反応があるかどうか確認することをお勧めします。

$ curl -s "https://login_id:password@dynupdate.no-ip.com/nic/update?hostname=yourdomain"  

これで設定は完了です。
またCentOS7以降を利用している場合には、デフォルトがanacronで過去のOSであったnoanacronとは違うのでお気をつけください。

これにて設定は完了です。

あとがき

DDNSの設定をしてはみましたが、外にサーバが増えるたびにポートを解放していくことを思うと現実的じゃないなと考えています。
監視サーバは外で借りた方がいいんですかねぇ。
月額1000円前後としたって、台数が増えてくると地味に出費が痛いところです。