vyos1.2
ではDDNSとしてddclient
をサポートしているので以下のように設定できる
$ config
# set service dns dynamic interface eth0 service cloudflare host-name '[変更したいドメイン名]'
# set service dns dynamic interface eth0 service cloudflare login '[email]'
# set service dns dynamic interface eth0 service cloudflare password '[Global API Key]'
# set service dns dynamic interface eth0 service cloudflare protocol 'cloudflare'
# set service dns dynamic interface eth0 service cloudflare server 'api.cloudflare.com/client/v4/'
# commit
# save
# exit
しかし、1.2.0-rolling+201904260337
でのddclient
のバージョンは古くCloudFlare
のAPIのバージョンが違い使えないのでアップデートが必要
$ sudo service ddclient stop
/etc/apt/sources.list
に以下追加
deb http://ftp.jp.debian.org/debian/ jessie main contrib non-free
$ sudo apt update
$ curl -L -O https://github.com/ddclient/ddclient/archive/v3.9.0.tar.gz
$ tar xvf v3.9.0.tar.gz
$ sudo cp ddclient-3.9.0/ddclient /usr/sbin/ddclient
$ sudo apt install cpanminus
$ sudo apt install make
$ sudo cpanm Data::Validate::IP
また、ddclient v3.9
から設定ファイルの場所が/etc/ddclient.conf -> /etc/ddclient/ddclient.conf
に変更になっており、zone
の指定が必須になっているので変更してくれるスクリプトを作る
$ cat << \EOF > /config/scripts/cloudflare-zone-setting.sh
#!/bin/sh
mkdir -p /etc/ddclient
sed -e '18izone=[変更したいドメインのゾーン名]' /etc/ddclient.conf > /etc/ddclient/ddclient.conf
rm /etc/ddclient.conf
起動時に実行されるようにする
$ echo '/config/scripts/cloudflare-zone-setting.sh' >> /config/scripts/vyos-postconfig-bootup.script
テストする
$ sudo /config/scripts/cloudflare-zone-setting.sh
$ sudo ddclient -daemon=0 -debug -verbose -noquiet
...
SUCCESS: [変更したいドメイン名]: skipped: IP address was already set to [IPアドレス].
SUCCESS
と出ればOK
再起動して確認
$ reboot
$ $ sudo service ddclient status
● ddclient.service - LSB: Update dynamic domain name service entries
Loaded: loaded (/etc/init.d/ddclient)
Active: active (running) since Sat 2019-04-27 10:42:28 JST; 22s ago
Process: 2875 ExecStart=/etc/init.d/ddclient start (code=exited, status=0/SUCCESS)
CGroup: /system.slice/ddclient.service
└─2882 ddclient - sleeping for 280 seconds ...
Apr 27 10:42:28 router.inoue-lab systemd[1]: Started LSB: Update dynamic dom....
Hint: Some lines were ellipsized, use -l to show in full.