perlなどで、gethostbyaddr関数を使いIPアドレスからホスト名を逆引き出来ると思うのですが、この処理がどうしても出来ません。
ちなみに、昔から使用している別のレンタルサーバー上では問題なく逆引きできておりますので、プログラム側には問題ないです。
従いまして、サーバー側の設定だとは思うのですが、gethostbyaddr関数を使えるようにするにはどのようなサーバー設定を行ったらよいでしょうか。
使用サーバはFedora Core5(Linux)で、ドメインはバリュードメインで取得しました。またDNSサーバーは自前ではなくバリュードメインのものを使っております。
サーバーの設定が問題だとすると、「/etc/resolv.conf」もしくは「/etc/hosts」あたりの設定が怪しいとは思うのですが、、、一応参考までに設定を以下に記します。
「/etc/resolv.conf」
nameserver 202.229.187.26 ←プライマリ ns1.value-domain.com
nameserver 210.153.116.18 ←セカンダリ ns2.value-domain.com
nameserver 59.106.14.70 ←ターシャリ ns3.value-domain.com
「/etc/hosts」
127.0.0.1 www.example.com www localhost.localdomain localhost
以上、よろしく御願い致します。
バリュードメインのDNSサーバは、外向きには自分が管理していないドメインの解決はしてくれないみたいです。
resolv.confのネームサーバをプロバイダのDNSに変更してみてください。
問題は /etc/resolv.conf と /etc/nsswitch.conf の可能性が考えられます。
ただ、/etc/nsswitch.conf をいじる事は普通無いので、こちらの可能性は低いでしょう。
問題の切り分けの為には host コマンドが使えます。
たとえば、
# host www.yahoo.co.jp 202.229.187.26
等とすれば resolv.conf の設定に寄らず、 202.229.187.26(ns1.value-domain.com) に対して問い合わせを行う事が出来ます。
逆引きも同様ですので、各DNSが実際にどのような応答を返してくれるかを確認した方がよいでしょう。
なお、自前でDNSを立てるのはむやみにルートDNSへの問い合わせを増やす事になりかねませんので避けるべきかと思います。
(技術的にと言うよりは倫理的に)
お世話になります。
やはり、resolv.conf ですか。了解いたしました。
nsswitch.confに関しましては1度もさわっておりませんが、一度見てみます。
host コマンドで明確になるんですね。
今まで、nslookupで確かめていましたが、いずれにしてもやはり逆引き自体は解決されていないようです。。
ちなみに、host コマンドでは以下のように表示されました。サーバーのIPが「111.222.333.444」と仮定します。
host 111.222.333.444
444.333.222.111.in-addr.arpa domain name pointer 111x222x333x444.ap111.ftth.ucom.ne.jp.
自前でDNSを立てる問題ですが、了解いたしました。
出来る限り外部のDNSで解決出来るよう、もう少し努力してみたいと思います。
whois(http://whois.ansi.co.jp/)で現在のIPを検索してみてください。
ドメインについてだけでなく、ネットワークについても
p. [ネームサーバ] ns.hoge.com
等のように、登録されていることがわかるかと思います。
通常、このネットワーク(IP)が自分の名義になっているならば、NSを独自に立ててネットワーク情報の変更をしてもらえば逆引きも独自に出来ますが、USEN名義になっている場合は恐らく無理です。
↓以下が参考になるかと思います。
ご回答ありがとうございます。
早速whoisしてみましたが、以下のような結果となりました。p. [ネームサーバ]の後には、何故か空白で何も表示されておりませんでした。しかし、残念ながら自分の名義に該当するような部分はないように思います。これははやり無理っぽいですかね^^;
Network Information: [ネットワーク情報]a. [IPネットワークアドレス] 111.222.333.44/55
b. [ネットワーク名] XXXXXXXXXXX
f. [組織名] broadgate
g. [Organization] broadgate
m. [管理者連絡窓口] JP00022296
n. [技術連絡担当者] JP00022296
p. [ネームサーバ]
[割当年月日] 2005/12/08
[返却年月日]
[最終更新] 2005/12/08 18:25:14(JST)
上位情報
----------
株式会社UCOM (UCOM Corp.)
[割り振り] 111.222.0.0/14
株式会社UCOM (UCOM Corporation)
SUBA-468-2YS [SUBA] 111.222.333.0/24
下位情報
----------
該当するデータがありません。
なお、教えて頂いた「http://whois.ansi.co.jp/」でIPを入力しますと、上記のような日本語の表示ではなかったので、実際には「http://www.nic.ad.jp/」で検索しました。ちなみに「http://whois.ansi.co.jp/」の方でも、自分の名義に該当するような部分はありませんでした。
「http://sakaguch.com/DNSgyakubiki.html」のページはこれからじっくり拝見させて頂きます。もう少し勉強しないといけませんね、、
この度は親切に色々と教えて頂きありがとう御座いました。
なぜグローバルIPアドレスで逆引きをしなければならないかが疑問(そのサーバ機にグローバルIPを与えている?)ですが...
プロバイダのDNSの設定を変えてもらえるような事は殆ど無いでしょうから、ローカルのDNSサーバを建てて逆引き設定をご希望のようにしてみては?
DNSサーバそのものは設定がそれ程難しくは無いと思います。
但し、安全の為にもルータ等で内外を明確に分けて、内部からの問合せについてのみ応え、外部からの問合せには応えない(殆どのDNSについての情報はこのタイプだと思います)設定(ルータもサーバも)が必要でしょう。
また、別の手として、
自IPアドレスであれば逆引きせずに指定のホスト名をセットする。
あるいは逆引きそのものはキチンと出来ている様なので、
プロバイダ管理下の自ホスト名が返った場合は別名(取得した自ドメインに連なるホスト名)に置き換える。
のような対応も考えられるのでは?
ご回答ありがとう御座いました。
はい、サーバーにはグローバルIPを与えておりますが、こちら理由ですが、「http://q.hatena.ne.jp/1175918988」の経緯からそのようにしております。
自前でDNSサーバーを建てることで実現不可能ではないということで了解いたしました。
なお、私が実現したいことは、あるプログラムperlでもPHPでも良いのですが、そこからIP逆引きを行いたいと思っております。
例えば、「アクセス解析等のプログラム」があると思いますが、このようなアプリケーションでは、アクセス元の「IPアドレス」と「ホスト名」を解析結果として保存したり表示すると思います。
この「ホスト名」が逆引き出来ず悩んでおりますが、この問題は自前でDNSサーバーを建てることで解決するという結論で良いでしょうか。
※外部からの問合せには応えないようにするなどの、技術的な点はひとまず置いておきます。
「経緯」を見てきました。ものすごくリッチな環境ですね、羨ましいです。(きっと僕なら、名前ベースのバーチャルホストにすると思います。)
大規模すぎて確認が出来ないので、あまり自信を持って回答出来ませんが...WWW1〜4サーバが自前DNSサーバに問い合わせをする様にすれば、各WWWサーバ上での逆引きは希望通りのホスト名が返ると思います。
ですが、これら以外(つまり外部)のマシンでの逆引きは、殆どプロバイダのDNSサーバが応えるでしょうから、望む結果にはならないでしょう。
たまたまcacheが残っていた場合か、逆引きしようとしているIPアドレスに直接問い合わせてくる場合(つまり外部からの問い合せに応えなくてはならない)という特殊な条件は殆ど無さそうですから。
ご回答ありがとう御座います。
なるほど、可能のようで安心いたしました。まだまだ初心者でなんとかサーバーの構築が出来た程度ですので、これからコツコツ勉強して実現したいと思います。「可能だ」ということだけでも解ったので、大変参考になりました。ありがとう御座います。
経緯もご覧頂いたとのことで、お手数をお掛けしました。
また、外部のマシンでの逆引きは不可能ということで、了解いたしました。とりあえず今後データセンターで本番運用を行う前のテスト環境ですので、そこまでは求めておらず十分かと思います。
>>リッチな環境
サーバーが4台ありますが、どれもオークションで購入した1台7000〜10000円程度のノートパソコンです^^;ノートなら電気代もかかりませんからいいですね。
以上、ありがとう御座いました。
早速のご回答ありがとうございます!
なるほど、そのような制限があったんですね、、、
実は、「resolv.conf」の設定でついこないだまで、プロバイダのDNSだったんですが、このDNS設定でも逆引きが出来なくて、試しにバリュードメインのDNSサーバーを記述してみたのです、、
もしかして、プロバイダの方もそのような制限があるのでしょうかね、、ちなみにUSENでサーバーを建てています。
「resolv.conf」は以前、以下のように設定していました。一応一部伏せ字にさせて頂きます。
nameserver 61.122.xxx.xx ←USENのネームサーバー1
nameserver 61.122.xxx.x ←USENのネームサーバー2
でも、「resolv.conf」の設定が問題だということで理解できました。どうもありがとう御座います。
プロバイダ側もバリュードメイン側もダメとなると、自前でDNSサーバーを用意しないといけないのでしょうかね、、
もう少し、こちら側でも調べて見ます。