自宅サーバーを建て、サーバーの勉強等を行っている初心者です。


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

以上、よろしく御願い致します。

回答の条件
  • 1人5回まで
  • 登録:2007/04/17 21:35:30
  • 終了:2007/04/19 02:38:43

回答(5件)

id:studioes No.1

studioes回答回数522ベストアンサー獲得回数612007/04/17 21:44:13

ポイント20pt

 バリュードメインのDNSサーバは、外向きには自分が管理していないドメインの解決はしてくれないみたいです。

 resolv.confのネームサーバをプロバイダのDNSに変更してみてください。

id:uniuniko

早速のご回答ありがとうございます!

なるほど、そのような制限があったんですね、、、

実は、「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サーバーを用意しないといけないのでしょうかね、、

もう少し、こちら側でも調べて見ます。

2007/04/17 21:55:16
id:b-wind No.2

b-wind回答回数3344ベストアンサー獲得回数4402007/04/17 23:44:58

ポイント20pt

問題は /etc/resolv.conf と /etc/nsswitch.conf の可能性が考えられます。

ただ、/etc/nsswitch.conf をいじる事は普通無いので、こちらの可能性は低いでしょう。


問題の切り分けの為には host コマンドが使えます。

Manpage of HOST

たとえば、

# host www.yahoo.co.jp 202.229.187.26

等とすれば resolv.conf の設定に寄らず、 202.229.187.26(ns1.value-domain.com) に対して問い合わせを行う事が出来ます。

逆引きも同様ですので、各DNSが実際にどのような応答を返してくれるかを確認した方がよいでしょう。


なお、自前でDNSを立てるのはむやみにルートDNSへの問い合わせを増やす事になりかねませんので避けるべきかと思います。

(技術的にと言うよりは倫理的に)

id:uniuniko

お世話になります。


やはり、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で解決出来るよう、もう少し努力してみたいと思います。

2007/04/18 00:43:24
id:studioes No.3

studioes回答回数522ベストアンサー獲得回数612007/04/18 02:56:11

ポイント20pt

 whois(http://whois.ansi.co.jp/)で現在のIPを検索してみてください。

 ドメインについてだけでなく、ネットワークについても

p. [ネームサーバ] ns.hoge.com 

 等のように、登録されていることがわかるかと思います。

 通常、このネットワーク(IP)が自分の名義になっているならば、NSを独自に立ててネットワーク情報の変更をしてもらえば逆引きも独自に出来ますが、USEN名義になっている場合は恐らく無理です。

↓以下が参考になるかと思います。

http://sakaguch.com/DNSgyakubiki.html

id:uniuniko

ご回答ありがとうございます。


早速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」のページはこれからじっくり拝見させて頂きます。もう少し勉強しないといけませんね、、

この度は親切に色々と教えて頂きありがとう御座いました。

2007/04/18 03:31:28
id:tezcello No.4

tezcello回答回数460ベストアンサー獲得回数692007/04/18 10:04:27

ポイント20pt

なぜグローバルIPアドレスで逆引きをしなければならないかが疑問(そのサーバ機にグローバルIPを与えている?)ですが...


プロバイダのDNSの設定を変えてもらえるような事は殆ど無いでしょうから、ローカルのDNSサーバを建てて逆引き設定をご希望のようにしてみては?

DNSサーバそのものは設定がそれ程難しくは無いと思います。

但し、安全の為にもルータ等で内外を明確に分けて、内部からの問合せについてのみ応え、外部からの問合せには応えない(殆どのDNSについての情報はこのタイプだと思います)設定(ルータもサーバも)が必要でしょう。


また、別の手として、

自IPアドレスであれば逆引きせずに指定のホスト名をセットする。

あるいは逆引きそのものはキチンと出来ている様なので、

プロバイダ管理下の自ホスト名が返った場合は別名(取得した自ドメインに連なるホスト名)に置き換える。

のような対応も考えられるのでは?

id:uniuniko

ご回答ありがとう御座いました。

はい、サーバーにはグローバルIPを与えておりますが、こちら理由ですが、「http://q.hatena.ne.jp/1175918988」の経緯からそのようにしております。

自前でDNSサーバーを建てることで実現不可能ではないということで了解いたしました。

なお、私が実現したいことは、あるプログラムperlでもPHPでも良いのですが、そこからIP逆引きを行いたいと思っております。

例えば、「アクセス解析等のプログラム」があると思いますが、このようなアプリケーションでは、アクセス元の「IPアドレス」と「ホスト名」を解析結果として保存したり表示すると思います。

この「ホスト名」が逆引き出来ず悩んでおりますが、この問題は自前でDNSサーバーを建てることで解決するという結論で良いでしょうか。

※外部からの問合せには応えないようにするなどの、技術的な点はひとまず置いておきます。

2007/04/18 20:39:07
id:tezcello No.5

tezcello回答回数460ベストアンサー獲得回数692007/04/19 02:15:13

ポイント20pt

「経緯」を見てきました。ものすごくリッチな環境ですね、羨ましいです。(きっと僕なら、名前ベースのバーチャルホストにすると思います。)


大規模すぎて確認が出来ないので、あまり自信を持って回答出来ませんが...WWW1〜4サーバが自前DNSサーバに問い合わせをする様にすれば、各WWWサーバ上での逆引きは希望通りのホスト名が返ると思います。

ですが、これら以外(つまり外部)のマシンでの逆引きは、殆どプロバイダのDNSサーバが応えるでしょうから、望む結果にはならないでしょう。

たまたまcacheが残っていた場合か、逆引きしようとしているIPアドレスに直接問い合わせてくる場合(つまり外部からの問い合せに応えなくてはならない)という特殊な条件は殆ど無さそうですから。

id:uniuniko

ご回答ありがとう御座います。


なるほど、可能のようで安心いたしました。まだまだ初心者でなんとかサーバーの構築が出来た程度ですので、これからコツコツ勉強して実現したいと思います。「可能だ」ということだけでも解ったので、大変参考になりました。ありがとう御座います。

経緯もご覧頂いたとのことで、お手数をお掛けしました。

また、外部のマシンでの逆引きは不可能ということで、了解いたしました。とりあえず今後データセンターで本番運用を行う前のテスト環境ですので、そこまでは求めておらず十分かと思います。


>>リッチな環境

サーバーが4台ありますが、どれもオークションで購入した1台7000〜10000円程度のノートパソコンです^^;ノートなら電気代もかかりませんからいいですね。


以上、ありがとう御座いました。

2007/04/19 02:36:48
  • id:b-wind
    >444.333.222.111.in-addr.arpa domain name pointer 111x222x333x444.ap111.ftth.ucom.ne.jp.
    その応答だと逆引きできているように見えるのですが、何が問題ですか?
  • id:uniuniko
    お返事ありがとう御座います。


    「111x222x333x444.ap111.ftth.ucom.ne.jp.」の部分が、取得したドメイン(ホスト名)「www.example.com」になって欲しく、この状態ですと逆引き出来ていないと思っておりますが、そうではないのでしょうか?


    「111x222x333x444.ap111.ftth.ucom.ne.jp.」は私が取得したドメインではなく、プ
    ロバイダー側の何かかと思いますが、ちょっとこの辺は詳しく解りません。

    根本的に、私が何か勘違いしてるのかもしれませんが、「IPアドレス」に対して「www.example.com」のようなホスト名を割り出すことが行えれば良いのですが、またこれは別の問題なんでしょうかね。
  • id:studioes
     正引きと逆引きは別々の物(ドメインとIP)に基づくものですから、単に正引きが出来ても、逆引きが出来るとは限りません。
     逆引きはネットワークに基づいて探索されるので、該当ネットワークの所有者が登録したNSに探索に行きます。 USENから自前のDNSにリバースを割り当てて貰うことが出来れば逆引きも独自になりますが、通常の安価なサービスでは、IPを貸している形になっているかと思うので、逆引きを独自ドメインには割り当てられないと思います。 プロバイダ側の対応がなければどうにもならない問題ですので、詳しくはUSENにお問い合わせください。
    (ただ、自分の管理するマシンから自分の逆引きが出来ればよいのなら、自分でDNSを立てて逆引きレコードを作成すればOKですが、ネット上では無意味です)
  • id:uniuniko
    なるほど、詳しい説明感謝いたします。

    USENには直接問い合わせておらず確定してはおりませんが、ネット上で調べてみますと、他の方々で私と同様のUSENのサービスを契約し、自宅サーバーを構築している方もちらほら存在いたしました。その方々の話を見ますと、やはり逆引きは無理のようでした。

    「プライマリを自前で、セカンダリは別で借りる..云々」といった解決方法があるようですが、何が何なのかさっぱり解っておらず、まだこのあたりは調べ中です。。

    ※ポイントを受け取って頂きたいので、コメント欄ではなく通常の回答欄にご回答頂ければ幸いです。。
  • id:tezcello
    本題から外れるのでこちらへ。

    > 例えば、「アクセス解析等のプログラム」があると思いますが、このようなアプリケーションでは、アクセス元の「IPアドレス」と「ホスト名」を解析結果として保存したり表示すると思います。

    アクセス解析でリモートアドレスからドメイン名を調べるのは存じております。
    WWW1〜4サーバ上で動く何か(CGIやスクリプトか、プロキシ位でしょうか)がクライアントとして他サーバにアクセスした時の、他サーバで動く(質問者さん以外が作った)スクリプトでの逆引き結果をプロバイダではなく自分のドメインにしなければならない状況が想像つかなかったので「なぜ〜〜〜疑問」と書きました。
    よろしかったら後学の為にその特殊な事情を教えていただけませんか?
    自ドメイン名の流布の為でしょうか? SEO的な効果があるのでしょうか?
  • id:uniuniko
    お世話になります。

    ちょっと私の文章がわかりずらかったかもしれませんが、特にこれといった特殊なことをやろうとは思っておりません。


    例えばアクセス解析のアプリでしたら以下のような情報を得たかったんですが、
    日時    :2007-04-19 02:43:31
    リファラー :xxx.xxxx.com
    IPアドレス :123.456.789.10
    HOST名  :softbank123456789.bbtec.net


    HOST名の部分が取得できず、以下のようにIPアドレスになってしまったのです。
    日時    :2007-04-19 02:43:31
    リファラー :xxx.xxxx.com
    IPアドレス :123.456.789.10
    HOST名  :123.456.789.10



    なお、host コマンドでは以下のように表示され逆引き?出来ているようですが、上記のようにCGIからではうまく逆引き出来ませんでした。。
    host 111.222.333.444
    444.333.222.111.in-addr.arpa domain name pointer 111x222x333x444.ap111.ftth.ucom.ne.jp.


    また、自宅サーバーではなく、他にホスティングしているサーバーのIPで同じようにhost コマンドしてみますと、結果が「IPアドレス」に対して「www.example.com」のようなホスト名(ドメイン名)が返ってきたものですから、同様の結果になればいいのではと思った次第です。

    ちょっと説明がややこしいかもしれませんが、そんな感じです^^;
  • id:tezcello
    もしも、host や nslookup で逆引きできているのに、スクリプトから gethostbyaddr() が(自サーバに対するもの以外でも)失敗するのだとしたらもっと違う所に原因があるように思います。
  • id:uniuniko
    tezcello さん

    度々、コメントありがとう御座います。
    そうですよね、私も何かちょっとおかしいとは思うのです。。
    ホントに謎です。汗
  • id:tezcello
    各言語(perl, php ...)がシステムコール gethostbyaddr() をチャンと利用できているか、そもそも gethostbyaddr() が機能しているか等をチェックする必要がありそうですね。

    お使いの言語を変えてみるとか、ご利用のスクリプトがアクセスの都度動作するタイプのものなら、httpd の環境変数 REMOTE_HOST (システムコール gethostbyaddr() で得ている様なのでこれが機能していないのなら結果は同じなのですが)に変えてみるとか。

    もしも情報が得られるのなら、レンタルサーバと同じ環境にしてみてはどうでしょう。
    FedraCore はあまりサーバ向きとは思えないので、レンタルサーバは別のディストリ、言語は少し古いバージョンだったりしませんか?
    少なくても当方のテスト環境(Vine4.1, PHP5.2.0)では問題無く逆引きできています。
  • id:uniuniko
    tezcello さん

    なるほど、それは盲点でした。
    根本的なところに目がいっておりませんでした。

    現在試した言語はperlのみで、PHPでは試してはいません、まずPHPなど他の言語ではどうなるか試してみたいと思います。ただ、やはり環境変数 REMOTE_HOST 自体が動作していないようでした。

    また、少し時間が出来たら、FedraCoreからVineなどに変えてみようかと思います。ちなみにレンタルサーバーの方は、Red Hat Enterprise Linux ES でした。もしかすると、これで解決かもしれませんね^^;tezcelloさんのサーバーでは動作しているようですので、、

    以上、ありがとう御座いました。
  • id:uniuniko
    httpd.conf に「HostnameLookups On」
    の1行を記述したら解決しました。。。汗

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません