r_shibataの備忘録

大学院で研究したり,コーヒー入れたり,マジック勉強したり,ITの勉強したり...

DDNSをcloudflareとddclientで行う

概要

自宅サーバが固定IPではないため、いずれDDNS対応使用と思っていたが、 最近、IPが変わってしまって、更新作業が必要になったため自動化しようということになった。

環境

  • raspi 4
  • ubuntu20.04 LTS

    方法

cloudflareにはもともと簡単な解説記事があったが、触り程度だったためあまり参考にならなかった。 ちゃんと理解力がある人が見ればわかるかも

support.cloudflare.com

ddclientはDDNSを対応してくれるソフトで、 バージョン的に言うと3.9以降が安定して使えるとのことで、 導入は以下のサイトに習って jacobjangles.com

sudo apt install ddclient libdata-validate-ip-perl
sudo dpkg-reconfigure ddclient
wget https://sourceforge.net/projects/ddclient/files/ddclient/ddclient-3.9.0/ddclient-3.9.0.tar.gz
tar -xvf ddclient-3.9.0.tar.gz
sudo cp -f ddclient-3.9.0/ddclient /usr/sbin/ddclient
sudo mkdir /etc/ddclient
sudo mv /etc/ddclient.conf /etc/ddclient
rm ddclient-3.9.0.tar.gz
rm -R ddclient-3.9.0

まで実行すれば、環境が整う。

次に参考にしたのは以下のサイト、 configファイルを編集していく。

zenn.dev

他にも色々みたが、これに落ち着いた。

#/etc/ddclient/ddclient.conf
protocol=cloudflare
use=web,web=myip.dnsomatic.com
ttl=1

zone=mysite.com                     
login=mycloudflaremail@example.com               
password=mycloudflareAPIkey
mysite.com,www.mysite.com    

ここまでできたら、IPが見つけられているかの確認として

sudo ddclient -query

と、IPの更新ができているかという判定を

sudo ddclient -daemon=0 -verbose -noquiet -force

で確認する。 このとき、-forceのオプションをつけていないとcloudflareの方のIPが更新されていないときがあったので、 様子を見つつ対応してほしい。

最後に、cron で自動化を行う

sudo crontab -e

*/5 *  *  * * sudo ddclient -force

を追加して5分ごとに実行されるようにする。

ddclientをcronで実行するので、deamonとして起動する必要はなくなったので停止。

sudo systemctl stop ddclient
sudo systemctl disable ddclient

ハマったところ

メールを動かすソフトがないためcronが正しく動作しないことがあったのでpostfixを入れておくといいかも MTAってなんやろ ー>メール転送エージェントらしい thr3a.hatenablog.com