ieServerでDDNSをはじめました

遅ればせながら、DDNSをやってみましたので、その覚え書きです。

1)ieServerにDDNSを登録する。

https://ieserver.net にアクセスして、「新規ユーザー登録」を行う。
ieserver_net_-_GunDIP2
特に迷う事はないですね。適当に決めます。
登録後、暫く待たないと、DNS名でアクセスできません。

2)DDNSでの動作確認。

そのままパソコンからでは、動作確認出来ないので、iPhoneとかの別回線からアクセスしてみます。

3)IPアドレスの自動更新設定。

私はMacなので、DiCE等が使えませんので、perlスクリプトをlaunchdに登録して使ってみます。

参考サイト:http://mizusawa.dip.jp/~mizusawa/G3web/blogcgi/macintosh/875.html

http://loumo.jp/wp/archive/20140411120647/

まずは、perlスクリプトの準備、


#!/usr/bin/perl -w

# ieserverを更新するためのスクリプト
# 参考 「Perl/Webアクセス - Ebisawa's Wiki」http://www.ebisawa.co.jp/wiki/index.php?Perl%2FWeb%E3%82%A2%E3%82%AF%E3%82%BB%E3%82%B9

# 変数の設定
my $username = "xxxxxx" ; # ユーザーネーム
my $userpassword = "xxxxxx" ; # パスワード
my $domain = "dip.jp" ; # ieserverにセットするドメイン"myhome.cx" "or.cf" "jpn.ph" "fam.cx" "dip.jp" の5種類から選択
my $filedir = "/Users/xxxxxx/Desktop/" ;# ファイルを書き出すディレクトリ。空だと書き出さない。ファイル名は「ieserver_update.html」

# モジュールの宣言
use strict;
use LWP::UserAgent;
use HTTP::Request::Common( "GET" ); # GETメソッドで送信する

print "==================UPDATE BEGIN=================\n"; # 処理の始まりを表示

my $ua = new LWP::UserAgent; # インスタンスの生成
$ua->timeout( 10 ); # 10秒でタイムアウト

my $req = GET( "http://ieserver.net/cgi-bin/dip.cgi?username=${username}&password=${userpassword}&domain=${domain}&updatehost=Go" ); # 更新用URLに投げる
my $res = $ua->request( $req ); # htmlの受取

# ドメイン名:xxxxx.xxx.jpのIPアドレスは現在xxx.xxx.xxx.xxxに設定されています。(20xx-xx-xx xx:xx:xx 更新) だけ取り出したいところ
my $kekka = $res->as_string; # 文字列に変換
print "$kekka\n"; # 結果表示

# ファイルとして保存する
if ($filedir ne ""){ # 空でなければ書き出し処理
my $filename = "${filedir}ieserver_update.html";
&write_file($filename,$kekka,0);
}

print "==================UPDATE END=================\n";

exit;

# ===================================
# ファイルの書き出し
# &write_file(ファイル名,内容,モード); のように呼び出す。
# モードは0で上書き、1で追記
sub write_file {
my $filename = $_[0];
my $content = $_[1];
my $mode = $_[2];
# 書き込みファイルのオープン
if ($mode eq "0") { # 上書き
open (FILE,">$filename")|| die "ファイル「$filename」に出力できません";
} else {
if ($mode eq "1") { # 追記
open (FILE,">>$filename")|| die "ファイル「$filename」に出力できません";
}
}
print (FILE "$content") ; # ファイルに出力
#ファイルのクローズ
close (FILE) ;
}

この内容をコピペして、xxxxxxを自分で登録したものに置き換え、ieServerIpUpdate.pl等で保存する。

保存先は適当。とりあえず、ユーザーディレクトリ配下にbatchと作って保存。

次に、launchdへの登録。


<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>Label</key>
    <string>ieServerUpdate</string>
    <key>ProgramArguments</key>
    <array>
        <string>/usr/bin/perl</string>
        <string>/Users/xxxxxx/batch/ieServerIpUpdate.pl</string>
    </array>
    <key>LowPriorityIO</key>
    <true/>
    <key>Nice</key>
    <integer>1</integer>
    <key>StartInterval</key>
    <integer>3600</integer>
    </dict>
</plist>

xxxxxxを保存したユーザーに変更すれば、1時間毎に動作するファイルが出来るはず。

これを、ターミナルから

cd ~/batch
launchctl load ./ieServerIpUpdate.plist
launchctl list |grep ieServerIpUpdate
- 0 ieServerIpUpdate

で、登録完了。