次のページ 前のページ 目次へ

Virtual-wu-ftpd-mini-HOWTO
==========================
Winfried Tr〓per, winni@xpilot.org
1996-10-22

[翻訳:吉峯 幸郎, yoshimin@ms.civilnet.com.tw]
[翻訳日:1997/05/26]
----------------------------------------------------------------------------
 
 Virtual FTP-servers with wu-ftpd     Winfried Tr〓per <winni@xpilot.org>
 --------------------------------     with help from
                                      Brian Grossman <brian@SoftHome.Net>
                                      Version 1.1                22.10.96
 
 
  1. はじめに
 
        Linux は複数の“ホスト”を1台のマシン上で稼動できます。多くの
        ユーザーが既に1つ以上の WWW サービスを Linux ボックス上で動か
        しています。
        例えば:
 
                www.sharpers.com        (192.168.55.37)
                www.usurers.com         (192.168.55.38)
                www.swindlers.com       (192.168.55.39)
 
        これらはあたかも3つの異なるホストのように見えますが、実は
        たった1台の Linux PC によりサービス提供されています。
         
        この技術は“マルチホーミング”と呼ばれる機能と Linux の持つ、
        複数の IP アドレスを1つのインターフェース( イーサネットカード
        またはモデム)に割当てられる機能によるものです。このおかげで、ネット
        上で複数のアドレスやホスト名に対応する Linux システムを構築する場合
        でも、複数のイーサネットカードは必要ありません。
        Linux は追加 IP アドレスを“仮想インターフェース”と呼ばれる形で制御
        します。“仮想インターフェース”は物理的には同じハードウェアに対応
        していながら、論理的にはソフトウェア(とカーネル)によって IP アドレス
        として区別されます。
        
        仮想インターフェースはメインインターフェースと同様の名前が付けられ、
        単にサフィックスとして割当てられた番号でそれぞれを区別します。
        “IP エイリアス”はこの仮想インターフェースに対する用語です。
        上記の仮想ホストは "ifconfig" コマンドで見ると以下のようになります
        (編集してあります):

        interface IP-address     broadcast-address       netmask
        ------------------------------------------------------------
        eth0      192.168.55.37    192.168.55.63     255.255.255.224
 
        eth0:0    192.168.55.38    192.168.55.63     255.255.255.224
        eth0:1    192.168.55.39    192.168.55.63     255.255.255.224
        eth0:2    192.168.55.40    192.168.55.63     255.255.255.224
        eth0:3    192.168.55.41    192.168.55.63     255.255.255.224
             ^-- IP エイリアス番号

        IP エイリアスの機能を使うには Linux カーネル に“モジュール”が
        必要です。このモジュールはカーネルのコンパイル時、またはランタ
        イムに以下のコマンド(root として実行)によって使えるようになります:

                insmod ipalias

        最近の配布パッケージではこのモジュールは提供されているはずなので、
        ここではどのようにモジュールを作成するかといったことについては触れ
        ません(ヒント:分からなければ Linux Kernel-HOWTO を参照)。

        前述のホストの IP エイリアスは、起動時に、簡単なシェルスクリプトで
        作成されます。

 8<----- ここから切り取る 8<-----
 #!/bin/sh
 
 NETMASK="255.255.255.224"      # あなたのネットマスクに変更
 BROADCAST="192.168.55.63"      # あなたのブロードキャストアドレスに変更
 MAIN_IF="eth0"                 # メインインターフェース
 
 IPALIASES="192.168.55.38   192.168.55.39   192.168.55.40 \
            192.168.55.41   192.168.55.42   192.168.55.43 \
            192.168.55.44   192.168.55.45   192.168.55.46"
 
 # 以下は変更しないで下さい。
 i=0
 for ALIAS in $IPALIASES
 do
     /sbin/ifconfig  ${NETTYPE}:${i}  ${ALIAS} \
                     broadcast ${BROADCAST}  netmask ${NETMASK}
     /sbin/route add -host ${ALIAS} dev ${NETTYPE}:${i}
     i=$[$i+1]
 done
 8<----- ここまで切り取る 8<-----

        IP エイリアスに関し、まだ疑問がある場合は Linux "IP Alias mini-HOWTO"
        と Linux カーネルソースの "Documentation/aliases.txt" を参照して
        下さい。(通常は "/usr/src/linux" にあります。)


   2. 仮想サービスとサーバー
        
        ホスト名が仮想インターフェースに対応する場合は、一般的にそのホストを
        “仮想ホスト”と呼びます。
        仮想ホスト(または仮想インターフェース)でサービスを動かしている
        デーモンを“仮想サーバー”と呼びます。


   2.1. 仮想 WWW サーバー

        既に3つの仮想 WWW サーバーの例を前記で紹介しました:

                www.sharpers.com, www.usurers.com, www.swindlers.com

        著者の知る限り、すべてのメジャーな http デーモン(例:うまく設計され
        ている "Roxen Challenger" や広く使われている "Apache")の仮想ホストの
        設定方法は非常に容易でドキュメント類も既に整備されています。
        簡単に言えば、 単に www ポート(ポート番号 80)を WWW サーバーを動かし
        たい IP アドレス/ホスト名に割当てた仮想ネットワーク・インターフェースに
        バインドするだけです。なにもトリックはありません。

        これに関する詳細は Linux "Virtual Web mini-HOWTO" を参照して下さい。


  2.2. 仮想メールアドレス

        最も単純なケースとして以下のような仮想ホストと所属しているドメイン宛て
        のすべてのメールを受けとる場合:

                www.sharpers.com, www.usurers.com, www.swindlers.com,
                    sharpers.com,     usurers.com,     swindlers.com
 
        "smail" や "sendmail"(Linux マシンでメール処理を行っているデーモン)の
        設定は比較的簡単なもので、追加ホスト名/ドメインを以下のファイルに書く
        だけです:
         "/etc/smail/config" ('hostnames=' と 'domains=' エントリ) 
        あるいは
         "/etc/mail/sendmail.cw" (別々の行にそれぞれのホスト名)


   2.3. 仮想 ftp サーバー

        仮想 ftp サーバーというコンセプトは、著者の知る限り、どの ftp デーモン
        でもサポートされていません。

        広く使われている "wu-ftpd" では Brian Grossman  <brian@SoftHome.Net> 
        が作成した anonymous FTP サービス を仮想インターフェースごとに区別する
        ためのパッチがあります。入手方法とパッチ方法は3章で紹介します。

        これ以外に同様のパッチは見当たりません。

        Brian のマルチホーム・パッチの基本的な考え方は wu-ftpd の "chroot()" 
        を単に  

        HOME_DIRECTORY_OF_ftp-ACCOUNT/

        としないで

        HOME_DIRECTORY_OF_ftp-ACCOUNT/HOSTNAME_THE_USER_TALKS_TO/

        とするものです。

        以下の例では anonymous ftp 経由で "ftp.swindlers.com" に接続している
        ユーザーは "/home/ano-ftp/" でなく "/home/ano-ftp/ftp.swindlers.com/" 
        に接続されます。
        基本的な設定は単純で、通常の一つだけの anoymous ftp-account の設定と
        大きく違わないことが分かるでしょう。

        この簡単で効率的な設定方法を考えた Brian に賞賛を!

        このパッチを当てたスペシャル版の wu-ftpd を既に自分でコンパイルしている
        かバイナリを入手していることを確認したうえで、取り敢えず他の疑問点は
        すべてこのドキュメントの最後までおいておきましょう。

        まず現実的な例を示したうえで、著者があるお客様のためにどのようにしたか
        紹介します(ただマシン名を架空のものにしただけです)。

        (a) 異なる anonymous ftp サーバーを構成するため "/home/ano-ftp" 
            ディレクトリを作成します。

            mkdir  /home/ano-ftp  &&  cd /home/ano-ftp
            mkdir  ftp.sharpers.com  ftp.usurers.com  ftp.swindlers.com

            作成したディレクトリ構成は以下のとおりです:

            /home/ano-ftp/
                     |-- ftp.sharpers.com
                     |-- ftp.swindlers.com
                     `-- ftp.usurers.com

        (b) anonymous ftp サービスに必要なファイルを既に設定してある 
            anonymous-ftp ディレクトリ "/home/ftp" から、新たに作成した
            ディレクトリにコピーします。

                 cd     /home/ano-ftp/ftp.sharpers.com
                 cp -a  /home/ftp/* .
 
                 cd     ../ftp.swindlers.com
                 cp -a  /home/ftp/* .
 
                 cd     ../ftp.usurers.com
                 cp -a  /home/ftp/* .
 
        "pub/" にある不要なファイルを後で削除するのを忘れないようにしましょう
        (あるいははじめからコピーしない)。
        参考として Debian 配布パッケージでの "/home/ftp" を紹介します:

        /home/ftp                     Permissions    Owner  Group   Size
              |-- bin                 d--x--x--x   2 root   root
              |   |-- gzip            ---x--x--x   1 root   root   45121
              |   |-- ls              ---x--x--x   1 root   root   22945
              |   `-- tar             ---x--x--x   1 root   root   77769
              |
              |-- etc                 d--x--x--x   2 root   root
              |   |-- group           -r--r--r--   1 root   root      18
              |   |-- passwd          -r--r--r--   1 root   root      44
              |   `-- pathmsg         -r--r--r--   1 root   root     172
              |
              |-- lib                 d--x--x--x   2 root   root
              |   |-- ld-linux.so.1   -r-xr-xr-x   1 root   root   21375
              |   |-- libc.so.5.2.18  -rwxr-xr-x   1 root   root  536252
              |   `-- libc.so.5 -> libc.so.5.2.18
              |
              |-- pub                 dr-xr-xr-x   3 root   root
              |   `-- whatever
              |
              `-- welcome.msg         -rw-r--r--   1 root   root     323
 
        (c) "/etc/passwd" ファイルを編集して anonymous ftp アカウントのホーム
           ディレクトリを "/home/ano-ftp" に変更します。

           ftp:*:11:11:Anonymous FTP:/home/ano-ftp:/bin/sh
                                   ^^^^^^^^^^^^^
                                   ホームディレクトリ

           以上の3ステップが基本設定で、これで3つの仮想ホストはそれぞれ分けら
           れた ftp エリア を使用できます。
           著者の場合、本当の作業はここからで、それぞれの incoming ディレクトリ
           毎にディスク割当量を設定(各グループにディスクスペースの使用量を
           制限)しなければならなかったのでちょっと複雑になります。

        (d) wu-ftpd の設定ファイル "/etc/ftpd/ftpaccess" で upload エリア を
            使えるようにします。

8<----- ここから切り取る 8<-----
upload /home/ano-ftp/www.sharpers.de  *         no
upload /home/ano-ftp/www.sharpers.de  /incoming yes sharpers ftp 0660 nodirs
upload /home/ano-ftp/www.swindlers.de *         no
upload /home/ano-ftp/www.swindlers.de /incoming yes swindler ftp 0660 nodirs
upload /home/ano-ftp/www.usurers.de   *         no
upload /home/ano-ftp/www.usurers.de   /incoming yes usurers  ftp 0660 nodirs
#                                                |     |      |    |     |
#                           アップロードの許可 --+     |      |    |     |
#        アップロードファイルのオーナーを設定 ---------+      |    |     |
#        アップロードファイルのグループを設定 ----------------+    |     |
#  アップロードファイルのアクセス許可権の設定 ---------------------+     |
#                   ディレクトリの作成不許可 ---------------------------+
8<----- ここまで切り取る 8<-----

           これで ftp サーバーにアップロードされるファイルはそれぞれ異なる
           ユーザーに属するようになり、ディスク割当量の設定が行えるように
           なります。

        (e)ディスク割当量の設定

           まずは "/usr/doc/quotas.txt" と Linux "Quota mini-HOWTO" を参照しま
           しょう。

           * "/etc/fstab" の "/home/an-ftp" パーティションのマウントオプション
             に"usrquota=/etc/quota/ano-ftp.users" を追加します。

           * "touch" コマンドで "/etc/quota/ano-ftp.users" を作成します。

           * "quotaon" を実行して割当てを有効にします。

           * 割当てを "edquota swindlers" 等で設定します。

           user swindlers の割当て:
           /dev/sdb8: blocks in use: 0, limits (soft = 0, hard = 10000)
                      inodes in use: 1, limits (soft = 0, hard = 1000)
 
           対応するディスクスペースはファイルシステム作成時のブロックサイズ
           により異なります(標準は 1ブロック = 1 kb)。

     3. 入手方法とパッチ方法

          wu-ftpd のマルチホーム・パッチ(20kb)は以下よりダウンロードできます:

       ftp://ftp.softhome.net/pub/users/brian/multihomed-wu-ftpd-2.4-23.patch

          入手の際は copyright をよく読んで下さい。

          "wu-ftpd" のソースはネット上のいたるところにあります。 archie を
          使って一番近いサーバーを探して入手して下さい。ソースを解凍した際
          に作成されたディレクトリに移動して以下を実行します:

             patch < ../multihomed-wu-ftpd-2.4-23.patch

          これでソースにパッチが当てられます。


[協力:Linux JFプロジェクト]
[翻訳:吉峯 幸郎, yoshimin@ms.civilnet.com.tw]

次のページ 前のページ 目次へ