- ベストアンサー
サブドメインを自前でいくつでも自由に設定して外部からアクセスできるようにするには?
やりたいことは、 自社サーバにある複数のウェブサイトのテスト用にそれぞれサブドメインを設定して外部からチェックしたいのですが。。。。 サブドメイン( 例:test1.xxxxxxxx.com )を自前でいくつでも自由に設定したいのです。 /////////// 以下は決定事項です。 ・PCにCentOS(Apache、Bind、その他諸々)をインストール ・グローバルIPを1つ取得済み ・逆引き権限は持ってません ・独自ドメインを1つ登録済み ・ダイナミックDNSを使うというのは考えていません。 ・プロバイダのサブドメイン設定サービスみたいなものはありません /////////// どなたか、ご教示くださいませ。m(__)m
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
グローバルIPを1つで複数のウェブサイトということはApacheは名前ベースのバーチャルホスト(named virtual)で動かしているということですか? どこにDNSの管理を任せるのか(それとも自分でDNSを管理するのか)にもよりますが、ワイルドカードDNSでそのグローバルIPアドレスを登録しておいて、後はApacheのnamed virtualに振り分けを任せればいいのでは?
その他の回答 (3)
- 774danger
- ベストアンサー率53% (1010/1877)
> ワイルドカードDNSとグローバルIPを結びつけるのはどこで > 設定できるのでしょうか? > BINDを設定するのでしょうか? はい test1, test2.......が数個だったら1つ1つ登録しても手間にはなりませんが、数が多く今後も増えるようなら、ワイルドカードで設定しておけばbindの管理の手間が減らせます ↓に例があります http://kawa.at.webry.info/200811/article_5.html
お礼
774danger様 ご回答ありがとうございます! >> BINDを設定するのでしょうか? > はい > test1, test2.......が数個だったら1つ1つ登録しても > 手間にはなりませんが、 > 数が多く今後も増えるようなら、 > ワイルドカードで設定しておけばbindの管理の手間が減らせます 教えていただいたURLを参考にBINDを設定してみます! 以上を踏まえると、グローバルIP、BIND、Apache、 といった要素をそろえれば、誰でもドメイン名を自前で解決するDNSサーバを立ててることができて、 外部からのアクセスを自由に制御可能であるということでしょうか? なにが知りたいかというと、 上位ドメインからの逆引き権限委譲は必要ないのでしょうか?
補足
自分自身に回答。 > 以上を踏まえると、グローバルIP、BIND、Apache、 > といった要素をそろえれば、 > 誰でもドメイン名を自前で解決するDNSサーバを立ててることができて、 > 外部からのアクセスを自由に制御可能であるということでしょうか? たぶんYES BINDの設定で、プライマリDNSを自前のDNSに設定して セカンダリDNSをなにか外部のNameServerに設定できれば? > なにが知りたいかというと、 > 現状の上位ドメインからの逆引き権限委譲は必要ないのでしょうか? 上位ドメインじゃなくて上位DNSの間違い。 今は特に必要ないかも。 とりあえず以上です。 ご回答くださった皆様ありがとうざいました!
- eroermine
- ベストアンサー率18% (83/444)
python のスクリプトを投稿したらスペースが消えてインデントが無くなってしまいました。 これをコピペしても走りません。失敗。 まあドメイン十個くらいは手書きでいいでしょう。 httpd.conf 内で Include etc/apache22/extra/httpd-vhosts.conf この行を有効にして、さらに Include etc/apache22/extra/httpd-default.conf を有効にして HostnameLookups On にしておけば log に host-nameが出ます。これ忘れ易い。 あと apache はバージョンによって 設定ファイルが違いますね。 これも気をつけないと。 DNS設定は IP一つなんだから * でどんなサブドメインもひっかかるようにするとシリアルナンバー更新忘れでドツボにはまることも少ないと思う。
お礼
eroermine様 追記をありがとうございます! apache設定の勘所を教えてくださり感謝します。
- eroermine
- ベストアンサー率18% (83/444)
virtual-host の設定は apache22だと extraディレクトリ の下の http-vhosts.conf で行うと良いと思います。 これを直接書くのは ドメインが大量の場合めんどうなので、 私の場合以下のスクリプトを使ってます。 vhost.txt にドメインを書き並べておいて 以下を実行 #! /usr/local/bin/python import os,socket,sys def gethn(): fqdn = socket.gethostname() dotp = fqdn.find('.') hn = fqdn if 0<=dotp: hn = fqdn[:dotp] return hn def ropen(fn): try: rfp = open(fn,"r") return rfp except: print "error at ropen", fn sys.exit(1) def wopen(fn): try: wfp = open(fn,"w") return wfp except: print "error at wopen", fn sys.exit(1) def vsection(host): wf.write("<VirtualHost *:80>\n") wf.write(" ServerAdmin webmaster@nobody\n") wf.write(" DocumentRoot /www/%s\n" % host) wf.write(" ServerName %s\n" % host) wf.write(" ErrorLog /www/log/%s.error_log\n" % host) # wf.write(" CustomLog /www/log/%s.access_log common\n" % host) wf.write(" CustomLog /www/log/%s.access_log combined\n" % host) wf.write("</VirtualHost>\n") wf.write("\n") def dsection(host): wf.write("<Directory /www/%s" % host) wf.write(" AllowOverride All\n") wf.write(" Options +ExecCGI -Indexes\n") wf.write(" Order deny,allow\n") wf.write(" Allow from all\n") wf.write("</Directory>\n") wf.write("\n") ifn= 'vhosts.txt' ofn = 'httpd-vhosts.conf' if os.access(ofn,os.F_OK): ofback = ofn + '.back' os.rename(ofn,ofback) rf = ropen(ifn) wf = wopen(ofn) wf.write("# Virtual Hosts\n") wf.write("NameVirtualHost *:80\n") vsection('trap') vsection('trap') vsection(gethn()) for ii in rf: host = ii.rstrip() if host[0] == '#': continue vsection(host) sys.exit(0)
お礼
eroermine様 ご回答ありがとうございます! スクリプトによるVirtualHostの管理方法を教えていただき ありがとうございます! スクリプトはインデントしたらちゃんと動きました! Pythonはあまり使ったことがありませんが、ネットワーク管理ツール作成に使えるようですので、これから使っていきたいと思います。
お礼
774danger様 ご回答ありがとうございます! > グローバルIPを1つで複数のウェブサイトということは > Apacheは名前ベースのバーチャルホスト(named virtual)で > 動かしているということですか? !!その通りです。 > どこにDNSの管理を任せるのか 自前でBINDを設定してDSNサーバを立てたいと思ってます。 > ワイルドカードDNSでそのグローバルIPアドレスを登録しておいて、 > 後はApacheのnamed virtualに振り分けを任せればいいのでは? ワイルドカードDNSとグローバルIPを結びつけるのはどこで 設定できるのでしょうか? BINDを設定するのでしょうか? httpd.confの設定は以下のように想定してます。 # バーチャルホストの設定 <VirtualHost test1.[登録ドメイン].jp:80> # 省略 </VirtalHost>