トップへ戻る お問い合わせ リンク リンクフリー

 

無料で簡単にサーバーを立ち上げる方法の1つとして
ダイナミックDNSという方法があります
「な〜んだ あれか。。。」
「所詮 サブドメイン。。。」
等々いろいろな御意見があるとは思います(私自身つい先日までそうでした(^^; )
しかし最近は

.jpドメイン
日本語のページ
しっかりとした運営

といったサイトが増えてきました
何よりも登録が無料(もしくは月数百円)というのは魅力です

 

全体の流れ
1.Dynamic DNSサイトへの登録
2.IPアドレスをDynamic DNSサイトに更新する為の設定
3.プロバイダーとの接続が変更されていないか自動チェックする為の設定

 

その他
ADSL用 naguさん提供
gdipc.plを使わない簡単なIP設定スクリプト 2002/3/6 公開
ieserver専用IPアドレス更新スクリプト(ルーター環境下OK) 2002/3/6 公開 お薦め!
ddo専用IPアドレス更新スクリプト(ルーター環境下OK) 2002/3/8 公開 お薦め!
dyn専用IPアドレス更新スクリプト(ルーター環境下OK) 2002/3/8 公開 お薦め!
instat専用IPアドレス更新スクリプト(ルーター環境下OK) 2002/3/10 公開 お薦め!
dhs専用IPアドレス更新スクリプト(ルーター環境下OK) 2002/4/13 公開 お薦め!

 

 

 

Copyright(C)2002 AI-LINE All Right Reserved.


 

 

 

 

 

 

 

Dynamic DNSサイトへの登録

日本語のサービスでは
ieServer
dyn.to
Zive
instat
ddo NEW
等があります
個人的にはieServerがお勧めです 理由は有りませんが jpドメインが登場しました!
登録方法については各ページを参照して下さい
終わりましたら帰ってきてください(^^;

戻る


 

 

IPアドレスをDynamic DNSサイトに更新する為の設定

1. gdipc.pl(GnuDIP perl版)をダウンロードします
2. お好みのディレクトリにgdipc.plを置きます (ここでは /usr/DDNS/ とします)

3. パーミッションの設定をします

# cd /usr/DDNS
# chmod 700 gdipc.pl
#

4. 初期設定をします

# perl gdipc.pl -c
#

とすると設定項目を聞いてきますので各種設定をします(括弧内は例)

New Username: 登録したユーザー名(Microsoft)
New Password: 登録したパスワード(********)
New Password Again: パスワード再入力(********)
Domain: 選択したドメイン名(dip.jp)
New GnuDIP Server: 登録したダイナミックDNSサーバー(ieserver.net)

以上で設定した項目が .GnuDIP2 ファイルに保存されます

# perl gdipc.pl
で現在接続している( 接続していなかったらして下さい(^^; )
IPアドレスがダイナミックDNSに登録されます
要するに
先ほどの設定の場合
Microsoft.dip.jp は 210.11.251.10(現在プロバイダーより与えられているIPアドレス) だよ〜 となるわけです
webサーバーが立ち上がっていれば http://microsoft.dip.jp
メールサーバーが立ち上がっていれば user@microsoft.dip.jp
が使えるようになります

※変更が反映するまでに5分程度はかかります 何度も何度も送信するような事は絶対に避けましょう 登録が末梢される可能性もあります

 

戻る


 

 

プロバイダーとの接続が変更されていないか自動チェックする為の設定

専用線でも引いていない限り何かの時に接続が切れてしまいます
再接続した際には以前のIPアドレスとは別のIPアドレスがプロバイダーより割り振られます
それを検知して自動的に更新するようにします
具体的には...

現在の接続IPアドレスを ifconfig より抽出して
前回のIPアドレスと比較
変更があった時に gdipc.pl を起動する

といった動作をします

1. IP_Get.plスクリプトをダウンロードします
2. gdipc.plと同じディレクトリにIP_Get.plを置きます (ここでは /usr/DDNS/ とします)

3. パーミッションの設定をします

# cd /usr/DDNS
# chmod 700 IP_Get.pl
#

4. 初期設定をします

# vi IP_Get.pl
======================================================
#!/usr/bin/perl  ※1
#
$O_IP = '
/usr/DDNS/IP.dat';  ※2
$IP = '/usr/DDNS/N_IP.dat';  ※3

system("ifconfig -ppp0 | grep addr >$IP");  ※4
open(INPUT,$IP);
    $c = <INPUT>;
    $start = index($c,"
addr")+5;  ※5
    $end = index($c,"P-t-P")-2;  ※6
    $New_IP = substr($c,$start,($end-$start));
close(INPUT);

open (OUTPUT ,">$IP");
print OUTPUT $New_IP;
close OUTPUT;

open INPUT,"$O_IP";
$Old_IP= <INPUT>;
close INPUT;

if ($New_IP ne $Old_IP) {
   open (OUTPUT ,">$O_IP");
   print OUTPUT $New_IP;
   close OUTPUT;

   system("
/usr/DDNS/gdipc.pl -f /usr/DDNS/.GnuDIP2"); ※7
}
======================================================

※1 perlのパスを指定します
     分からないときは
     # which perl
     と入力して下さい

※2 IP_Get.plが置いてあるディレクトリを指定します

※3 ※2と同じ

※4 -ppp0は外部ネットワークに繋がっている機器です
     分からないときは
     # ifconfig
     と入力し グローバルアドレス(192.168.*.* や 127.0.0.1等は違います)
     が割り振られている左側の項目を見てください
     eth0 eth1 eth 0:0 ppp0 等があると思われます

※5 IPアドレスの始まり位置にある文字列を指定します
     # ifconfig
     と入力して表示されるIPアドレス
     :210.11.251.10(この数値とは異なります)
     の直前にある文字列を指定します

※6 IPアドレスの終了位置にある文字列を指定します
     # ifconfig
     と入力して表示されるIPアドレス
     210.11.251.10 (この数値とは異なります)
     の直後にある文字列を指定します
※7 gdipc.plが置いてあるディレクトリを指定します

以上の設定を変更・確認後 保存します

5. crontabを編集して定期的にIPアドレスをチェックさせます

# vi /etc/crontab
======================================================
SHELL=/bin/bash
PASH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root
HOME=/

# run - parts
01 * * * * root run-parts /etc/cron.hourly
02 4 * * * root run-parts /etc/cron.daily
22 4 * * 0 root run-parts /etc/cron.weekly
42 4 1 * * root run-parts /etc/cron/monthly

# Dynamic_DNS
*/10 * * * * root perl /usr/DDNS/IP_Get.pl
======================================================

最後の2行を追加し保存します
これで10分間隔でIP_Get.plが起動されます(見た目の変化はありません)

※ 注意! gdipc.plはIPアドレスが変更されていようといまいとダイナミックDNSサーバーを更新してしまいます 無用な更新は絶対に避けましょう

戻る


 

 

ADSL用 by nagu

IP Get.pl をADSL用に変更したものを頂きました。

但し、このスクリプトの内容につきましてはご質問にお答えする事が出来ません。
私自身の環境は未だにISDNですので・・・
(掲示板に書き込んで頂ければ、naguさんより回等が頂けるかも)

IP_Get_nagu.pl


#!/usr/bin/perl
#
$O_IP = '/usr/DDNS/IP.dat';
$IP = '/usr/DDNS/N_IP.dat';

$life = system("ifconfig -ppp0 | grep addr >$IP");

#接続が切れてたときの処理、ifの括弧は接続が繋がってると1、切れると256みたいです
if(length($life) > 1)
{
  #フレッツADSLの接続コマンド
  system("/usr/local/bin/start-pppoe");

  #一応少し時間を取る
  sleep 5;

  #ifconfig やり直し
  system("ifconfig -ppp0 | grep addr >$IP");
}

open(INPUT,$IP);
  $c = <INPUT>;
  $start = index($c,"addr")+5;
  $end = index($c,"P-t-P")-2;
  $New_IP = substr($c,$start,($end-$start));
close(INPUT);

open (OUTPUT ,">$IP");
print OUTPUT $New_IP;
close OUTPUT;

open INPUT,"$O_IP";
$Old_IP=<INPUT>;
close INPUT;

if ($New_IP ne $Old_IP)
{
  open (OUTPUT ,">$O_IP");
  print OUTPUT $New_IP;
  close OUTPUT;

  print"Dynamic DNS => $New_IP\n";

  system("/usr/DDNS/gdipc.pl -f /usr/DDNS/.GnuDIP2");

}

戻る


 

 

gdipc.plを使わない簡単なIP設定スクリプト

gdipc.plはとても優れたスクリプトですがMD5のエラー対処など、Linux/FreeBSD初心者にはちょっと扱いにくい部分もあります。(私もそうです)
他にlynx等のテキストブラウザを使った方法などもありますが、lynx等をインストールする必要があります。
下記のスクリプトは基本的にperl5以上が動く環境だけでOKです。
IPアドレスを更新する為にあれこれ悩み、いろいろインストールするのが辛い方は是非お試し下さい。

※ieserver専用です

1. IP_Set.plスクリプトをダウンロードします

2. 初期設定をします

# vi IP_Set.pl
======================================================

#=====================#
# ieserver 登録データ #
#=====================#
$server_name = 'ieserver.net'; # ホスト名
$username = '変更';       # ユーザー名
$password = '変更';       # パスワード
$domain   = '変更';       # ドメイン名
#=====================#
# 変更箇所は上記のみ  #
#=====================#

# POSTデータ
$post = "username=$username&password=$password&domain=$domain&updatehost=1";

# Socket モジュールを使う
use Socket;

# HTTP プロトコルを使う
$port = getservbyname('http', 'tcp');

# ホスト名を変換
$iaddr = inet_aton("$server_name")
        or die "$server_name does not exist\n";

# ポート番号・IPアドレスを変換
$sock_addr = pack_sockaddr_in($port, $iaddr);

# ソケット生成
socket(SOCKET, PF_INET, SOCK_STREAM, 0)
        or die "SOCKET ERROR!!\n";

# 指定のホストの指定のポートに接続
connect(SOCKET, $sock_addr)
        or die "$port PORT ERROR!!\n";

# ファイルハンドル SOCKET をバッファリングしない
select(SOCKET); $|=1; select(STDOUT);

# データ長を得る
$len = length($post);

# WWWサーバにHTTPリクエストを送る
print SOCKET "POST /cgi-bin/dip.cgi HTTP/1.0\n";
print SOCKET "HOST: $server_name:$port\n";
print SOCKET "Content-length: $len\n\n";
print SOCKET "$post";
print SOCKET "\n";

# ヘッダ部分を受け取る
while (){
    m/^\r\n$/ and last;
}

# 完了コメント表示
print "IP_Set OK!";

======================================================

以上の設定を保存します

3. 実行します

IP_Set.pl のあるディレクトリに移動して
# perl IP_Set.pl

※ 注意! IP_Set.plはgdipc.plと同じくIPアドレスが変更されていようといまいとダイナミックDNSサーバーを更新してしまいます 無用な更新は絶対に避けましょう

戻る


 

 

ieserver専用IPアドレス更新スクリプト

 

IP_Set.pl の改良版です。IPアドレスの変更があった場合にだけDDNSへ接続して変更します。
プロキシを使っていなければ、ルーター下のローカルネットワーク環境に設置してあるサーバー
からでも可能です。
Socketモジュール以外は使用していませんので、嵌る確立は低いと思われます(^^;

※ieserver専用です

1. IP_Set_ie.pl スクリプトをダウンロードします

2. 初期設定をします

# vi IP_Set_ie.pl
======================================================

#=====================#
# ieserver 登録データ #
#=====================#
$server_name = 'ieserver.net'; # ホスト名
$username = '変更';       # ユーザー名
$password = '変更';       # パスワード
$domain   = '変更';       # ドメイン名
#=====================#
# 変更箇所は上記のみ  #
#=====================#

   〜以下略〜

======================================================

以上の設定を保存します

3. 試しに実行してみます

IP_Set_ie.pl のあるディレクトリに移動して

# perl IP_Set_ie.pl
IP_Set => 211.***.***.*** OK!

と表示されます

4. crontabを編集して定期的にIPアドレスをチェックさせます

# vi /etc/crontab
======================================================
SHELL=/bin/bash
PASH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root
HOME=/

# run - parts
01 * * * * root run-parts /etc/cron.hourly
02 4 * * * root run-parts /etc/cron.daily
22 4 * * 0 root run-parts /etc/cron.weekly
42 4 1 * * root run-parts /etc/cron/monthly

# Dynamic_DNS
*/10 * * * * root perl /usr/DDNS/IP_Set_ie.pl
 ※IP_Set_ie.pl を指定

======================================================

最後の2行を追加し保存します
これで10分間隔でIP_Set_ie.plが起動されます

 

戻る

 


 

 

ddo専用IPアドレス更新スクリプト

 

IPアドレスの変更があった場合にだけDDNSへ接続して変更します。
プロキシを使っていなければ、ルーター下のローカルネットワーク環境に設置してあるサーバー
からでも可能です。
Socketモジュール以外は使用していませんので、嵌る確立は低いと思われます(^^;

※ddo専用です

1. IP_Set_do.pl スクリプトをダウンロードします

2. 初期設定をします

# vi IP_Set_do.pl
======================================================

#=====================#
# ddo 登録データ    #
#=====================#
$server_name = 'ddo.jp';  # ホスト名
$username = '変更';     # ユーザー名
$password = '変更';     # パスワード
#=====================#
# 変更箇所は上記のみ  #
#=====================#

   〜以下略〜

======================================================

以上の設定を保存します

3. 試しに実行してみます

IP_Set_do.pl のあるディレクトリに移動して

# perl IP_Set_do.pl
IP_Set => 211.***.***.*** OK!

と表示されます

4. crontabを編集して定期的にIPアドレスをチェックさせます

# vi /etc/crontab
======================================================
SHELL=/bin/bash
PASH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root
HOME=/

# run - parts
01 * * * * root run-parts /etc/cron.hourly
02 4 * * * root run-parts /etc/cron.daily
22 4 * * 0 root run-parts /etc/cron.weekly
42 4 1 * * root run-parts /etc/cron/monthly

# Dynamic_DNS
*/10 * * * * root perl /usr/DDNS/IP_Set_do.pl
 ※IP_Set_do.pl を指定

======================================================

最後の2行を追加し保存します
これで10分間隔でIP_Set_do.plが起動されます

 

戻る

 


 

 

dyn専用IPアドレス更新スクリプト

 

IPアドレスの変更があった場合にだけDDNSへ接続して変更します。
プロキシを使っていなければ、ルーター下のローカルネットワーク環境に設置してあるサーバー
からでも可能です。
Socketモジュール以外は使用していませんので、嵌る確立は低いと思われます(^^;

※dyn専用です
※MXレコードON/テレホーダイOFFになっています

1. IP_Set_dyn.pl スクリプトをダウンロードします

2. 初期設定をします

# vi IP_Set_dyn.pl
======================================================

#=====================#
# dyn 登録データ    #
#=====================#
$server_name = 'cgi.dyn.to';  # ホスト名
$mx = 'on';        # MXレコード ON $tel = 'off';       # テレホーダイ OFF $username = '変更';       # ユーザー名 $password = '変更';       # パスワード #=====================# # 変更箇所は上記のみ  # #=====================#    〜以下略〜
======================================================

以上の設定を保存します

3. 試しに実行してみます

IP_Set_dyn.pl のあるディレクトリに移動して

# perl IP_Set_dyn.pl
IP_Set => 211.***.***.*** OK!

と表示されます

4. crontabを編集して定期的にIPアドレスをチェックさせます

# vi /etc/crontab
======================================================
SHELL=/bin/bash
PASH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root
HOME=/

# run - parts
01 * * * * root run-parts /etc/cron.hourly
02 4 * * * root run-parts /etc/cron.daily
22 4 * * 0 root run-parts /etc/cron.weekly
42 4 1 * * root run-parts /etc/cron/monthly

# Dynamic_DNS
*/10 * * * * root perl /usr/DDNS/IP_Set_dyn.pl
 ※IP_Set_dyn.pl を指定

======================================================

最後の2行を追加し保存します
これで10分間隔でIP_Set_dyn.plが起動されます

 

戻る

 


 

 

instat専用IPアドレス更新スクリプト

 

IPアドレスの変更があった場合にだけDDNSへ接続して変更します。
プロキシを使っていなければ、ルーター下のローカルネットワーク環境に設置してあるサーバー
からでも可能です。
Socketモジュール以外は使用していませんので、嵌る確立は低いと思われます(^^;

※instat専用です

1. IP_Set_ins.pl スクリプトをダウンロードします

2. 初期設定をします

# vi IP_Set_ins.pl
======================================================

#=====================#
# instat 登録データ  #
#=====================#
$server_name = 'www.instat.ne.jp'; # ホスト名
$username = '変更';         # ユーザー名 $password = '変更';         # パスワード #=====================# # 変更箇所は上記のみ  # #=====================#    〜以下略〜
======================================================

以上の設定を保存します

3. 試しに実行してみます

IP_Set_ins.pl のあるディレクトリに移動して

# perl IP_Set_ins.pl
IP_Set => 211.***.***.*** OK!

と表示されます

4. crontabを編集して定期的にIPアドレスをチェックさせます

# vi /etc/crontab
======================================================
SHELL=/bin/bash
PASH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root
HOME=/

# run - parts
01 * * * * root run-parts /etc/cron.hourly
02 4 * * * root run-parts /etc/cron.daily
22 4 * * 0 root run-parts /etc/cron.weekly
42 4 1 * * root run-parts /etc/cron/monthly

# Dynamic_DNS
*/10 * * * * root perl /usr/DDNS/IP_Set_ins.pl
 ※IP_Set_ins.pl を指定

======================================================

最後の2行を追加し保存します
これで10分間隔でIP_Set_ins.plが起動されます

 

戻る


 

 

dhs専用IPアドレス更新スクリプト

 

IPアドレスの変更があった場合にだけDDNSへ接続して変更します。
プロキシを使っていなければ、ルーター下のローカルネットワーク環境に設置してあるサーバー
からでも可能です。
Socketモジュール以外は使用していませんので、嵌る確立は低いと思われます(^^;

※dhs専用です

1. IP_Set_dhs.pl スクリプトをダウンロードします

2. 初期設定をします

# vi IP_Set_dhs.pl
======================================================

#=====================#
# instat 登録データ  #
#=====================#
$id       = '変更';       # ユーザー名
$password = '変更';       # パスワード

$server_name = 'dyn.dhs.org';  # ドメイン名(dyn.dhs.org 又は 2y.net)

$mx       = '';         # メールサーバーを立ち上げている場合には
                 # 'ホストネーム.ドメイン名'で指定する。
                 # (例)mymx.dyn.dhs.org

$username = '変更';       # ホストネーム

$dir = '/usr/DDNS';       # このスクリプトを置く絶対パス
#=====================#
# 変更箇所は上記のみ  #
#=====================#

   〜以下略〜

======================================================

以上の設定を保存します

3. 試しに実行してみます

IP_Set_dhs.pl のあるディレクトリに移動して

# perl IP_Set_dhs.pl
IP_Set => 211.***.***.*** OK!

と表示されます

4. crontabを編集して定期的にIPアドレスをチェックさせます

# vi /etc/crontab
======================================================
SHELL=/bin/bash
PASH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root
HOME=/

# run - parts
01 * * * * root run-parts /etc/cron.hourly
02 4 * * * root run-parts /etc/cron.daily
22 4 * * 0 root run-parts /etc/cron.weekly
42 4 1 * * root run-parts /etc/cron/monthly

# Dynamic_DNS
*/20 * * * * root perl /usr/DDNS/IP_Set_dhs.pl
 ※IP_Set_dhs.pl を指定

======================================================

最後の2行を追加し保存します
これで20分間隔でIP_Set_dhs.plが起動されます

戻る