CentOSでのDDNS自動更新
元々、http://centossrv.com/domain-ieserver.shtml を参考にDiCEを入れていたが手動更新ではうまくいくけど、自動監視が上手く行っていなかった。
そのため、出先からちょっとアクセスしようとしたらDDNSマッピングが切れててアクセス不可…なんてことも何度か……。
なので今回、公式で提供してくれてるツールに切り替えてみた。
- ieServer編
http://fedorasrv.com/domain-ieserver.shtml こちらを参考にさせていただいた。
1. スクリプトダウンロード
# wget http://ieserver.net/ddns-update.txt -O /usr/local/bin/ddns-update.pl
2. 文字コード変換
ダウンロードしたスクリプトをそのままviで開くと文字化けしたので、変換してやる。
# nkf -w8 --overwrite /usr/local/bin/ddns-update.pl
3. スクリプト編集
これは上記参考サイトのまま
# vi /usr/local/bin/ddns-update.pl
$CURRENT_IP_FILE = "/var/log/ieserver/current_ip"; ← ログ格納先変更
$LOG_FILE = "/var/log/ieserver/ip_update.log"; ← ログ格納先変更
$DDNS_UPDATE = "https://ieserver.net/cgi-bin/dip.cgi"; ← httpsへ変更
$ACCOUNT = "hogehoge"; ← ユーザ登録時に入力したサブドメイン名(hogehoge.dip.jpのfedorasrvにあたる部分)
$DOMAIN = "dip.jp"; ← ユーザ登録時に選択したドメイン名(hogehoge.dip.jpのdip.jpにあたる部分)
$PASSWORD = "xxxxxxxx"; ← ユーザ登録時に入力したパスワード
4. 実行権限付加
# chmod +x /usr/local/bin/ddns-update.pl
5. ログ保存ディレクトリ作成
# mkdir /var/log/ieserver
6. スクリプト実行
# perl /usr/local/bin/ddns-update.pl
うちの環境では 上記参考サイトのまま # /usr/local/bin/ddns-update.pl とだけやったときに、
/usr/local/bin/ddns-update.pl: line 1: #!/usr/local/bin/perl: そのようなファイルやディレクトリはありません
と怒られたので、perlコマンドの引数で渡してやる形で解決。
7. 自動実行設定
# echo "*/10 * * * * root perl /usr/local/bin/ddns-update.pl" >> /etc/cron.d/ddns-update
これで10分おきにIPチェックして、IP変更時は更新してくれる。
- miniDNS.net編
1. ツールダウンロード
# wget http://www.minidns.net/downloads/miniupdate-0.8.tar.gz
2. 展開
# tar zxvf miniupdate-0.8.tar.gz
3. コンパイル
# cd miniupdate-0.8
# ./configure --prefix=/usr --sysconfdir=/etc
# make
# make install
4. 設定
# vi /etc/miniupdate.conf
login_id = hogehoge ← miniDNS.netのログインID
hostname = hoge.minidns.net ← 更新対象のドメイン名(フル)
password = xxxxxxxxx ← miniDNS.netのパスワード
interface = eth0 ← NICの名前
no_public_ip = true ← ルータ内などそのマシン自体がグローバルIPを持っていない場合はtrue
report_url = http://ieserver.net/ipcheck.shtml ← グローバルIP確認用URL
5. 実行
# /usr/sbin/miniupdate
6. 自動実行設定
# echo "*/10 * * * * root /usr/sbin/miniupdate" >> /etc/cron.d/ddns-update
これで10分おきにIPチェックして、IP変更時は更新してくれる。