images header
Index >> Plamo Linux Fan >> Apacheメモ >> VirtualHostメモ
                Apache VirtualHostメモ
2001/10/13
1.目的

 最近は、いわゆる"ラストワンマイル"のインフラが整いつつあり、自宅サーバなんかを立ち上げたい方は結構大勢いらっしゃるんではないでしょうか?でも、「クラックされないだろうか?」なんて気になりますよね?
 そこで、公開用のIPと自分用のリアルなIPとを分けて、公開するほうにはレンタルサーバなんかでは常套手段のVirtualHostの設定をして、Web以外のサービスをしないようにすることで、すこし安心してみます。
 ここでの設定で動作するには、このホスト自身がルータになっていては(通常)いけません。ADSLとかCATVなんかの場合、直接回線につながっているのは別のルータである必要があります。まぁIPを8つとかもらってれば話は別ですが、普通1つしかもらってないでしょうから(^^;  

※というか、複数IP契約するような方は、こんなページ見ないと思う(笑)
2.入手先

Apacheメモを参照
http://homepage1.nifty.com/Que/plamo/apache/

3.導入方法

 特別なことは何もありません。インターネット上にあちらこちらで公開されている手法をまとめればいいだけです。ここでは、ともかくApacheは動いているものとします。Apacheのインストール方法は、Apacheメモを参照してください。

  1. ipaliasを使えるようにする
     これが肝心です。ipaliasについて詳しく知りたい方は、Linux Networking-HOWTOあたりを読んでください。さて、Plamo-2.2.xのデフォルトのカーネルでは、このIP-Alias機能が無効化されていますので、どうしてもカーネルを再構築する必要があります。カーネル再構築の方法は、インストールメモに記載してあります。
  2. ipaliasの設定
     ipaliasの設定はさほど難しくありませんが、概念を知らないとわかりにくいかもしれません。
     詳しいことはここではあまり説明しませんが、やりたいことは、「1枚のネットワークカードに複数のIPアドレスをつけたい」ということです。
     現在、Plamo のインストールされているマシンのリアルなアドレスが、"192.168.0.1"だったとしますと、これに加えて、"192.168.0.2"もつけたいということですね。で、これを公開用アドレスにしたいわけです。設定方法は難しくありません。以下のようにします。
/etc/rc.d/rc.inet1
.
.
IPADDR="192.168.0.1"
NETMASK="255.255.255.0"
NETWORK="192.168.0.0"
BROADCAST="192.168.0.255"
GATEWAY="192.168.0.254"
ALIAS1="192.168.0.2"

# Uncomment the line below to configure your ethernet card.
/sbin/ifconfig eth0 ${IPADDR} broadcast ${BROADCAST} netmask ${NETMASK}
/sbin/ifconfig eth0:0 ${ALIAS1} broadcast ${BROADCAST} netmask ${NETMASK}
.
.
if [ ! "$ALIAS1" = "" ]; then
  /sbin/route add -host ${ALIAS1} dev eth0:0
fi

結果、こんな風になるはずです。

bash# netstat -rn
Kernel IP routing table
Destination     Gateway         Genmask         Flags   MSS Window  irtt Iface
192.168.0.1     0.0.0.0         255.255.255.255 UH        0 0          0 eth0
192.168.0.2     0.0.0.0         255.255.255.0   U         0 0          0 eth0
127.0.0.0       0.0.0.0         255.0.0.0       U         0 0          0 lo
0.0.0.0         192.168.0.254   0.0.0.0         UG        0 0          0 eth0
 こんな具合になったら、 /etc/hosts.allow/etc/hosts.deny で192.168.0.2からのinetd経由のアクセス(telnetとかftpとか)は念のため禁止してしまいましょう。まぁ本来は、ルータがNATではなくてPortForwardをしているのでしょうから、要らないっていえば要らないんですが、念には念ということで(^^;
  1. 公開用のドキュメントルートを作成
     公開用に使うドキュメントルートを作成します。というか、要するに公開ドキュメントを管理するアカウントを作るということですね。通常どおり、新規アカウントの追加の手順で行います。ただし、万一の事態に備えて、通常のusersグループではない別のグループに所属させます。
# groupadd extusers
# adduser
Can you read Japanese chars on this term ? [y/N]
y
Japanese mode 新しいユーザのログイン名を指定してください(8 文字以内) []:extuser extuser のユーザ ID は? [自動登録の場合は 10000 番台になります]: <Enter> extuser が属するグループは?[users]: extusers<Enter> extuser のホームディレクトリは?[/home/extuser]: extuser が使うシェルは? [/bin/tcsh]: extuser が使う WM は? [afterstep]: 1 : AfterStep(お勧め) 2 : qvwm(Windows95 風) 3 : twm(ごくシンプル) 3 extuser のアカウントの有効期限は? (MM/DD/YY) []: <Enter> さて、実際に必要なエントリを作成します。データはこれでいいですか? New login name: extuser New UID: [Next available] Initial group: extusers Additional groups: [none] Home directory: /home/extuser Shell: /bin/tcsh Expiry date: [no expiration] 登録を中止したい場合は Cntl-C を押してください。このデータでいい場合は Enter を押していただけば、アカウントを作成します <Enter>
 この/home/extuser/の下に、htdocsディレクトリを作成して、ここを外部公開用ドキュメントルートにします。
  1. Apacheの設定変更
     さて、本題のVirtualHostの設定です。
     VirturlHostの設定は簡単で、/usr/local/apache/conf/httpd.conf の一番下にサンプルがあるので、そのとおりに設定すればいいのです。例えば、下記のようにします。
    <VirtualHost 192.168.0.2>
        ServerAdmin extuser@locahost
        DocumentRoot /home/extuser/htdocs
        ServerName ext.domain
        ErrorLog logs/ext-error_log
        CustomLog logs/ext-access_log combined
    </VirtualHost>
     このようにすることで、設定は完了です。Apacheを再起動して、192.168.0.2をブラウザで叩いてみましょう。なにか出ましたか?出ればOKです。
     なお、VirtualHostのログはリアルなログとは別に吐き出されるので、ログ解析などはVirtualHost単体でできます。

付録1.参考文献
Linux-Networking HOWTO
NET3-HOWTOの後釜らしいです。統合されているのかな?読んだことがない方は一読をお勧めします。
ApacheによるWebサーバ構築
いつもお世話になってますm(_ _)m
こういうコンテンツをたくさん提供してもらうと、僕ごときが書くことないですよね(笑)


Index >> Plamo Linux Fan >> Apacheメモ >> VirtualHostメモ
images footer