dポイントプレゼントキャンペーン実施中!

やりたいことは、
自社サーバにある複数のウェブサイトのテスト用にそれぞれサブドメインを設定して外部からチェックしたいのですが。。。。
サブドメイン( 例:test1.xxxxxxxx.com )を自前でいくつでも自由に設定したいのです。

/////////// 以下は決定事項です。
・PCにCentOS(Apache、Bind、その他諸々)をインストール
・グローバルIPを1つ取得済み
・逆引き権限は持ってません
・独自ドメインを1つ登録済み
・ダイナミックDNSを使うというのは考えていません。
・プロバイダのサブドメイン設定サービスみたいなものはありません
///////////

どなたか、ご教示くださいませ。m(__)m

A 回答 (4件)

グローバルIPを1つで複数のウェブサイトということはApacheは名前ベースのバーチャルホスト(named virtual)で動かしているということですか?



どこにDNSの管理を任せるのか(それとも自分でDNSを管理するのか)にもよりますが、ワイルドカードDNSでそのグローバルIPアドレスを登録しておいて、後はApacheのnamed virtualに振り分けを任せればいいのでは?
    • good
    • 0
この回答へのお礼

774danger様

ご回答ありがとうございます!
> グローバルIPを1つで複数のウェブサイトということは
> Apacheは名前ベースのバーチャルホスト(named virtual)で
> 動かしているということですか?
!!その通りです。

> どこにDNSの管理を任せるのか
自前でBINDを設定してDSNサーバを立てたいと思ってます。

> ワイルドカードDNSでそのグローバルIPアドレスを登録しておいて、
> 後はApacheのnamed virtualに振り分けを任せればいいのでは?
ワイルドカードDNSとグローバルIPを結びつけるのはどこで
設定できるのでしょうか?
BINDを設定するのでしょうか?

httpd.confの設定は以下のように想定してます。
# バーチャルホストの設定
<VirtualHost test1.[登録ドメイン].jp:80>
# 省略
</VirtalHost>

お礼日時:2008/12/03 23:55

> ワイルドカードDNSとグローバルIPを結びつけるのはどこで


> 設定できるのでしょうか?
> BINDを設定するのでしょうか?

はい
test1, test2.......が数個だったら1つ1つ登録しても手間にはなりませんが、数が多く今後も増えるようなら、ワイルドカードで設定しておけばbindの管理の手間が減らせます

↓に例があります
http://kawa.at.webry.info/200811/article_5.html

この回答への補足

自分自身に回答。
> 以上を踏まえると、グローバルIP、BIND、Apache、
> といった要素をそろえれば、
> 誰でもドメイン名を自前で解決するDNSサーバを立ててることができて、
> 外部からのアクセスを自由に制御可能であるということでしょうか?
たぶんYES
BINDの設定で、プライマリDNSを自前のDNSに設定して
セカンダリDNSをなにか外部のNameServerに設定できれば?

> なにが知りたいかというと、
> 現状の上位ドメインからの逆引き権限委譲は必要ないのでしょうか?
上位ドメインじゃなくて上位DNSの間違い。
今は特に必要ないかも。

とりあえず以上です。
ご回答くださった皆様ありがとうざいました!

補足日時:2008/12/04 11:48
    • good
    • 0
この回答へのお礼

774danger様
ご回答ありがとうございます!

>> BINDを設定するのでしょうか?
> はい
> test1, test2.......が数個だったら1つ1つ登録しても
> 手間にはなりませんが、
> 数が多く今後も増えるようなら、
> ワイルドカードで設定しておけばbindの管理の手間が減らせます
教えていただいたURLを参考にBINDを設定してみます!

以上を踏まえると、グローバルIP、BIND、Apache、
といった要素をそろえれば、誰でもドメイン名を自前で解決するDNSサーバを立ててることができて、
外部からのアクセスを自由に制御可能であるということでしょうか?

なにが知りたいかというと、
上位ドメインからの逆引き権限委譲は必要ないのでしょうか?

お礼日時:2008/12/04 11:06

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一つなんだから * でどんなサブドメインもひっかかるようにするとシリアルナンバー更新忘れでドツボにはまることも少ないと思う。
    • good
    • 0
この回答へのお礼

eroermine様
追記をありがとうございます!
apache設定の勘所を教えてくださり感謝します。

お礼日時:2008/12/04 10:39

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)
    • good
    • 0
この回答へのお礼

eroermine様
ご回答ありがとうございます!

スクリプトによるVirtualHostの管理方法を教えていただき
ありがとうございます!

スクリプトはインデントしたらちゃんと動きました!
Pythonはあまり使ったことがありませんが、ネットワーク管理ツール作成に使えるようですので、これから使っていきたいと思います。

お礼日時:2008/12/04 10:20

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!