遅ればせながら、DDNSをやってみましたので、その覚え書きです。
1)ieServerにDDNSを登録する。
https://ieserver.net にアクセスして、「新規ユーザー登録」を行う。
特に迷う事はないですね。適当に決めます。
登録後、暫く待たないと、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
で、登録完了。