Skip to content

Instantly share code, notes, and snippets.

Embed
What would you like to do?
vyos1.2でCloudFlareのDDNSを使う

vyos1.2でCloudFlareのDDNSを使う

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のバージョンが違い使えないのでアップデートが必要

ddclientのアップデート

$ 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.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment