enomのDynamic DNS updateをddclientで使う。
テスト等に利用しているサーバーはインターネットからのアクセスのためにDynamicDNSを利用している。固定IPは取得していない。Flet’sひかりの先のプロバイダから動的に割り振られるIPアドレスを利用している。
今まではDynのDynamicDNSサービスを利用していたが、現在取得しているドメインはenomの管理な上、enomがDynamicDNSを提供していることを(今頃やっと)知った。
現在のドメインでのサーバーFQDNにDynのDynamic DNSのFQDNをCNAMEを張っていたのだがenomのみで完結できるので、enomがDynamicDNSを利用してみることにした。
現在のサーバーには、Dynamic DNSのIP書き換えにddclient3.8.1(yum版)が入っている。
# yum info ddclient
Loaded plugins: fastestmirror, presto, priorities
Determining fastest mirrors
epel/metalink | 6.6 kB 00:00
Loaded plugins: fastestmirror, presto, priorities
Loading mirror speeds from cached hostfile
* base: www.ftp.ne.jp
* epel: ftp.iij.ad.jp
* extras: www.ftp.ne.jp
* updates: www.ftp.ne.jp
Installed Packages
Name : ddclient
Arch : noarch
Version : <span style="color: #ff0000;">3.8.1</span>
Release : 1.el6
Size : 176 k
Repo : installed
From repo : epel
Summary : Client to update dynamic DNS host entries
URL : http://ddclient.sourceforge.net/
License : GPLv2+
Description : ddclient is a Perl client used to update dynamic DNS entries for accounts
: on many different dynamic DNS services. Features include: Operating as a
: daemon, manual and automatic updates, static and dynamic updates, optimized
: updates for multiple addresses, MX, wildcards, abuse avoidance, retrying
: the failed updates and sending update status to syslog and through e-mail.```
問題なく動作しているので、このままenomのDynamic DNS書き換えに使えないかと思ったがそのままではNGのようだ。 enom対応にpatchが必要らしい。 次の手順でパッチを充ててみた。
ddclientのソースを取得・展開。
```terminal
# mkdir ddclient
# wget http://downloads.sourceforge.net/project/ddclient/ddclient/ddclient-3.8.1/ddclient-3.8.1.tar.gz?r=http%3A%2F%2Fsourceforge.net%2Fp%2Fddclient%2Fwiki%2FHome%2F&ts=1382406058&use_mirror=jaist
# tar xvfz ddclient-3.8.1.tar.gz
# cd ddclient-3.8.1/```
パッチを取得、適用。
```terminal
# wget http://sourceforge.net/apps/trac/ddclient/raw-attachment/ticket/29/enom.patch
# patch ddclient < enom.patch```
一応、ddclientのチェック。よさそうだ。
```terminal
# perl -c ddclient
ddclient syntax OK```
オリジナルのddclientスクリプトとdiffを取ってみると、enomのprotocolが追加されている。
コレを/usr/sbin/ddclientに上書き。
```terminal
# cp ddclient /usr/sbin/
cp: overwrite `/usr/sbin/ddclient'? y```
設定ファイルの位置が/etc/ddclient.conf→/etc/ddclient/ddclient.confに変わってしまったので、フォルダ位置を変更する。ついでに付属のsample-etc_ddclient.confから設定をやりなおす。
```terminal
# mkdir /etc/ddclient/
# cp sample-etc_ddclient.conf /etc/ddclient/ddclient.conf```
ddclient.conf
```conf
daemon=300 # check every 300 seconds
syslog=yes # log update msgs to syslog
mail=root # mail all msgs to root
mail-failure=root # mail failed update msgs to root
#pid=/var/run/ddclient.pid # record PID in file.
pid=/var/run/ddclient/ddclient.pid
ssl=yes # use ssl-support. Works with
# ssl-library
#fw-login=admin, fw-password=XXXXXX # FW login and password
fw-login=routerloginid, fw-password=routerloginpassword # FW login and password
#
## To obtain an IP address from FW status page (using fw-login, fw-password)
#use=fw, fw=192.168.1.254/status.htm, fw-skip='IP Address' # found after IP Address
use=fw,fw=http://192.168.1.1/cgi-bin/main.cgi?mbg_webname=status&config_no=1, fw-skip='' # found after IP Address
#
## To obtain an IP address from Web status page (using the proxy if defined)
## by default, checkip.dyndns.org is used if you use the dyndns protocol.
## Using use=web is enough to get it working.
## WARNING: set deamon at least to 600 seconds if you use checkip or you could
## get banned from their service.
#use=web, web=checkip.dyndns.org/, web-skip='IP Address' # found after IP Address
#
・
・
・
##
## DtDNS (www.dtdns.com)
##
# protocol=dtdns,
# server=www.dtdns.com,
# client=ddclient,
# password=my-dtdns.com-password
# myhost.dtdns.net, otherhost.dtdns.net
# 最後に以下を追加
## enom single host update
protocol=enom, \
login=mydomain.com, \
password=enompassword \
www
以下のコマンドでチェックしてみると、
/usr/sbin/ddclient -foreground -debug -force | more```
書き換えた場所は ・pidファイルのパス ・GlobalIPを取得する方法。今回はFirewall(Flet'sのブロードバンドルーター PR-S300SE)のステータス画面から取得。 ※以前はdyndnsのIPチェックサービスを利用していた。
```terminal
# dyndnsのIPチェックサービスの場合の設定
use=web, web=checkip.dyndns.org/, web-skip='IP Address' # found after IP Address```
・enomのログイン(ドメイン名)、パスワード、書き換えるホスト名。 これは ddclient --helpで説明が表示される。
```terminal
# /usr/sbin/ddclient --help
o 'enom'
The 'enom' protocol is used by DNS services offered by www.enom.com and their resellers.
Configuration variables applicable to the 'enom' protocol are:
protocol=enom ##
server=fqdn.of.service ## defaults to dynamic.name-services.com
login=domain.name ## base domain name
password=domain-password ## the domain password registered with the service
A_record ## the A record(s) registered with the service
Example ddclient.conf file entries:
## single host update
protocol=enom, \
login=mydomain.com, \
password=mydomain.com-password \
www
## multiple host update
protocol=enom, \
login=mydomain.com, \
password=mydomain.com-password \
www,mail,*```
最後にチェックのために強制的に更新してみると、うまく動作した!
```terminal
# /usr/sbin/ddclient -foreground -debug -force | more
# /usr/sbin/ddclient -foreground -debug -force | more
DEBUG: proxy =
DEBUG: url = http://192.168.1.1/cgi-bin/main.cgi?mbg_webname=status&config_no=1
DEBUG: server = 192.168.1.1
DEBUG: opt(fw =
DEBUG: glo fw = http://192.168.1.1/cgi-bin/main.cgi?mbg_webname=status&config_no=1
DEBUG: get_ip: using fw, http://192.168.1.1/cgi-bin/main.cgi?mbg_webname=status&config_no=1 reports 138.113.60.151
DEBUG:
DEBUG: enom_update -------------------
DEBUG: proxy =
DEBUG: url = http://dynamic.name-services.com/interface.asp?Command=SetDNSHost&HostName=www&Zone=mydomain.com&DomainPassword=passwd&Address=138.113.60.151
DEBUG: server = dynamic.name-services.com
DEBUG: opt(fw =
DEBUG: glo fw = http://192.168.1.1/cgi-bin/main.cgi?mbg_webname=status&config_no=1
SUCCESS: updating www: good: IP address set to 138.113.60.151```
最後にキレイに?強制的にddclientを再起動。
```terminal
killall ddclient
/etc/init.d/ddclient restart```
今のところうまく行ってるようだ。 2018.06.15 追記 yum update してしまい、ファイルが更新されてしまった… enom patchも現在アクセス出来ないようだ。 enomパッチを当てたddclient3.8.1はこちら。
[ddclient3.8.1_enom.tar][1] enom.patchはこちら。 [ddclient3.8.1\_enom\_patch.tar][2] 自己責任でお願いします。
[1]: /ms/contents/up/2018/06/ddclient3.8.1_enom.tar.gz
[2]: /ms/contents/up/2013/10/ddclient3.8.1_enom_patch.tar.gz