- ベストアンサー
グローバルIPアドレスの取得。
自宅サーバで、CGIで作成したホームページを開設しています。 回線は光で、回線終端装置(ルータなどが含まれる)の不具合等で、終端装置をリセットすると、グローバルIPアドレスが、変わってしまい、CGIを何箇所も書き換えなければなりません。 グローバルIPをCGIで取得して、CGIで、IPを自動的に変更したいのですが、IPの取得はどうしたらできますか。 IPの取得部分のCGIプログラムが欲しいのですが。 よろしくお願いします。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
> 暫定的に、この検索用CGIを自宅マシンに移し、プロバイダからグローバルIPでリンクしています。 そういう状況なら、なおのこと「自宅マシン」の方はダイナミックDNSに登録することをオススメします。 そうすれば、プロバイダに置いてるページからは「ダイナミックDNSで登録したホスト名」で自宅マシンにリンクすることができますので、 IPアドレスが変わってもCGIの修正は要りません。
その他の回答 (3)
- ralf124c
- ベストアンサー率52% (232/446)
すいません。あげあし取られそうな回答しちゃったんで訂正です。 > その自宅サーバにそれを参照するCGIなりAjaxなりを設置すれば良いと思います。 参照するのはCGIとかAjaxじゃなくて、サーバ側から定期的にその手のクライアントアプリを作ってまわさないと(cron)意味がありませんでした。 perlで作る場合はCGIでページ参照するのとあまり変わらないのでやはり過去のQ&Aをご参照ください。
- ralf124c
- ベストアンサー率52% (232/446)
外部サーバに #!/usr/local/bin/perl print "Content-type: text/plain\n\n"; print $ENV{'REMOTE_ADDR'}; なるスクリプトのCGIを置いて その自宅サーバにそれを参照するCGIなりAjaxなりを設置すれば良いと思います。 たぶんLAN内はプライベートIPでしょうから、ルーターの設定を参照するか、外部のサーバに教えてもらうしかないでしょう。 ページを参照するCGIに関してはこのQ&Aで何度もでているので参照すると良いと思います。
- mtaka2
- ベストアンサー率73% (867/1179)
CGIでは、なぜIPアドレスが必要なのでしょうか? 通常は、IPアドレスが可変でも、それを一意に定められる「ホスト名」がわかれば十分だと思います。 ダイナミックDNSサービスを利用すれば、グローバルIPアドレスが可変な状況でも、一意なFQDNで指定できます。 ホスト名は不可でIPアドレスが必要なのでしたら、簡単な方法は 以下の二つどちらかでしょうか。 ・UPnPを使う ルーターがUPnP対応だったら、ルーターに問い合わせることでグローバルIPアドレスを取得できます。 ・ダイナミックDNSに登録した上で、登録した自身のFQDNからIPアドレスの正引きを行う その具体的方法については、CGIの開発言語がわからないと答えようがありません。 Perlだとしたら以下の手段で可能です。 UPnPの場合→ SOAP::Lite を使うとか http://hydro.energy.kyoto-u.ac.jp/~sekiyama/upnp/upnp.html ダイナミックDNSから正引き→ gethostbyname を使う。 http://kawa.at.webry.info/200809/article_7.html
補足
mtaka2 さんありがとうございます。 プロバイダに、レンタルスペースがあって、ホスト名で接続できるようになっています。 2300件ほどのデータに対し、複雑な検索を実施するCGI(perl)を組んであります。アクセス数が少ないうちは問題なかったのですが、一日3000~5000件を超えるアクセスがあるようになって、サーバに負荷がかかり過ぎると、メーンの検索プログラムを停止されてしまいました。 そこで、暫定的に、この検索用CGIを自宅マシンに移し、プロバイダからグローバルIPでリンクしています。 回線に不具合が起きて、終端装置をリセットすると、グローバルIPが変わってしまいます。 そのたびに、たくさんのCGIの。ipの記入された部分を変更をするのはたいへんです。 あくまで、暫定処置なのですが、CGI(perl)で、グローバルIPを取得できないかと思ったわけです。取得できれば、自動的にcgiを書き換えることができます。 ネット上には、クリックすると、グローバルIPを表示するページなども、たくさんあるので、perlで簡単に取得できないかと思ったわけです。
お礼
技術不足で、グローバルIPをCGIで取得することはできませんでした。 有料、無料のダイナミックDNSがたくさんあるようなので、これで行こうと思います。 皆さん、ありがとうございました。