<!doctype linuxdoctr system>
<article>
<title>Virtual FTP-server with wu-ftpd</title>
<author>Winfried Trumper, &lt;winni@pilot.org&gt;</author>
<date>v1.2, January 27 1997</date>
<trans>吉峯 幸郎, &lt;yoshimin@ms.civilnet.com.tw&gt;</trans>
<tdate>v1.2j, May 26 1997</tdate>

<abstract>
仮想匿名 ftp サイトを設定する方法
</abstract>


<![ IGNORE [
Virtual FTP-servers with wu-ftpd           Winfried Trumper <winni@xpilot.org>
--------------------------------           with help from
                                           Brian Grossman <brian@SoftHome.Net>
                                           Version 1.2                27.01.97
]]>

<p>
JF より：この文書は、1997年1月時点での原文の翻訳です。
現在と事情が異なる場合があるので、ご注意ください。
</p>

<sect><!--  1. Introduction-->はじめに
<p>
<!--
        Linux has the ability to run several "hosts" on one machine.
        Many people already use this to run more than 1 WWW-Service on
        their Linux box, e.g. 
-->
Linux は複数の“ホスト”を１台のマシン上で稼動できます。多くの
ユーザーが既に１つ以上の WWW サービスを Linux ボックス上で動か
しています。
例えば：

<tscreen><verb>
www.sharpers.com                (192.168.55.37)
www.usurers.com                 (192.168.55.38)
www.swindlers.com               (192.168.55.39)
</verb></tscreen>

<!--
        appear as if they were 3 different hosts but in fact there is
        only one Linux-PC serving them.
-->
これらはあたかも３つの異なるホストのように見えますが、実は
        たった１台の Linux PC によりサービス提供されています。

<!--
        The technique behind this feature is called "multihoming" and
        based on the ability of Linux to assign several IP-addresses
        to one network-interface (ethernet-card or modem). In effect,
        you do not need several ethernet-cards to make Linux listen to
        several addresses/hostnames on the net.
        Linux handles the additional IP-addresses through so called 
        "virtual interfaces" which physically represent the same 
        hardware but are logically distinguished with their ip-addresses
        by the software (and the kernel).
-->
        この技術は“マルチホーミング (multihoming)”と呼ばれる機能と Linux 
        の持つ、
        複数の IP アドレスを１つのインターフェース（ イーサネットカード
        またはモデム）に割当てられる機能によるものです。このおかげで、ネット
        上で複数のアドレスやホスト名に対応する Linux システムを構築する場合
        でも、複数のイーサネットカードは必要ありません。
        Linux は追加 IP アドレスを“仮想インターフェース”と呼ばれる形で制御
        します。“仮想インターフェース”は物理的には同じハードウェアに対応
        していながら、論理的にはソフトウェア（とカーネル）によって IP アドレス
        として区別されます。

<!--
        Those virtual interfaces are labeled similar than the main
        interface they "point" to and are simply suffixed by a (more or
        less) arbitrary number.
        The proper term for such a virutal interfaces is "ip-alias". For
        the virtual hosts above, the command "ifconfig" gives the (heavily
        edited) output:
-->
       仮想インターフェースはメインインターフェースと同様の名前が付けられ、
        単にサフィックスとして割当てられた番号でそれぞれを区別します。
        “IP エイリアス”はこの仮想インターフェースに対する用語です。
        上記の仮想ホストは "<tt>ifconfig</tt>" コマンドで見ると以下のように
        なります
        （編集してあります）：


<![IGNORE[
<tscreen><verb>
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
     ^-- no. of the ip-alias
</verb></tscreen>
]]>
<tscreen><verb>
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 エイリアス番号
</verb></tscreen>

<!--
        To be able to use the facility of ip-aliases you need a "module"
        for the Linux-kernel that can be fixated into the kernel when
        compiling or loaded at run-time by issuing the command (as root):
-->
        IP エイリアスの機能を使うには Linux カーネル に“モジュール”が
        必要です。このモジュールはカーネルのコンパイル時、またはランタ
        イムに以下のコマンド（root として実行）によって使えるようになります：

<tscreen><verb>
insmod ipalias
</verb></tscreen>

<!--
        Most modern distributions should provide this module so I don't
        want to waste time in describing how to create it (hint: if it's
        missing, read the Linux Kernel-HOWTO).
-->
       最近の配布パッケージではこのモジュールは提供されているはずなので、
        ここではどのようにモジュールを作成するかといったことについては触れ
        ません（ヒント：分からなければ Linux Kernel-HOWTO (<htmlurl 
url="http://www.linux.or.jp/JF/JFdocs/Kernel-HOWTO.html" 
name="日本語訳">) を参照）。

<!--
        The ip-aliases for the hosts above are created with a little
        shell-script when booting:
-->
       前述のホストの IP エイリアスは、起動時に、簡単なシェルスクリプトで
        作成されます。

<![IGNORE[
<tscreen><verb>
#!/bin/sh

NETMASK="255.255.255.224"      # replace with YOUR netmask
BROADCAST="192.168.55.63"      # replace with YOUR broadcast-address
MAIN_IF="eth0"                 # "main" interface

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"

# you should not need to modify anything below
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
</verb></tscreen>
]]>
<tscreen><verb>
#!/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
</verb></tscreen>

<!--
        If you have further questions about ip-aliases, please look at
        the Linux "IP Alias mini-HOWTO" and the file 
        "Documentation/aliases.txt" from the sources of the Linux-kernel
        (usally in the directory "/usr/src/linux"). 
-->
        IP エイリアスに関し、まだ疑問がある場合は Linux "IP Alias mini-HOWTO 
(<htmlurl url="http://www.linux.or.jp/JF/JFdocs/IP-Alias/index.html" 
name="日本語訳">)"
        と Linux カーネルソースの "Documentation/aliases.txt" を参照して
        下さい。（通常は "/usr/src/linux" にあります。）




<sect><!--  2. Virtual Services and Servers-->
仮想サービスとサーバー
<p>
<!--
        If a hostname belongs to an virtual interface, it is commonly
        called "virtual host".
        A daemon that runs a service on a virtual host (or a virtual
        interface) is called "virtual server".
-->
        ホスト名が仮想インターフェースに対応する場合は、一般的にそのホストを
        “仮想ホスト”と呼びます。
        仮想ホスト（または仮想インターフェース）でサービスを動かしている
        デーモンを“仮想サーバー”と呼びます。


<sect1><!--  2.1. Virtual WWW-Servers-->
仮想 WWW サーバー
<p>
<!--
        We already had an example for 3 virtual WWW-Servers above:
-->
        既に３つの仮想 WWW サーバーの例を前記で紹介しました：

<tscreen><verb>
www.sharpers.com, www.usurers.com, www.swindlers.com
</verb></tscreen>

<!--
        The configuration of all major http-daemons I know (e.g. the
        well-designed "Roxen Challenger" or the widespread "Apache")
        to make use of the virtual hosts is easy and already well
        documented.
        In short: just bind the www-port (no. 80) to the virtual network
        interface with the desired ip-address/hostname for each 
        WWW-server you run. There is no trick.
-->
        著者の知る限り、すべてのメジャーな http デーモン（例：うまく設計され
        ている "Roxen Challenger" や広く使われている "Apache"）の仮想ホストの
        設定方法は非常に容易でドキュメント類も既に整備されています。
        簡単に言えば、 単に www ポート（ポート番号 80）を WWW サーバーを動かし
        たい IP アドレス/ホスト名に割当てた仮想ネットワーク・インターフェースに
        バインドするだけです。なにもトリックはありません。

<!--
        Read the Linux "Virtual Web mini-HOWTO" to get more information
        on this issue.
-->
        これに関する詳細は Linux "Virtual Web mini-HOWTO" を参照して下さい。




<sect1><!--  2.2. Virtual mail-addresses-->
仮想メールアドレス
<p>
<!--
        In the simplest case you want to recieve mail for all your
        virtual hosts and for the dedicated domains:
-->
       最も単純なケースとして以下のような仮想ホストと所属しているドメイン宛て
        のすべてのメールを受けとる場合：

<tscreen><verb>
www.sharpers.com, www.usurers.com, www.swindlers.com,
    sharpers.com,     usurers.com,     swindlers.com
</verb></tscreen>

<!--
        Even the configuration of "smail" or "sendmail" (the daemons
        that handle the mail-traffic on you Linux-box) is relativly
        easy: mention the additional hostnames/domains in
        "/etc/smail/config" (entries 'hostnames='), resp.
        "/etc/mail/sendmail.cw" (each hostname on a seperate line).
-->
       "smail" や "sendmail"（Linux マシンでメール処理を行っているデーモン）の
        設定は比較的簡単なもので、追加ホスト名/ドメインを以下のファイルに書く
        だけです：

<tscreen><verb>
         "/etc/smail/config" ('hostnames=' と 'domains=' エントリ) 
</verb></tscreen>
        あるいは
<tscreen><verb>
         "/etc/mail/sendmail.cw" （別々の行にそれぞれのホスト名）
</verb></tscreen>

<!--
        To implement a "real" virtual domain featuring smail, please
        look at the smail-FAQ available from
-->
smail に「本当の」仮想ドメインを実装する場合は、下記にある smail-FAQ を
ご覧ください。

<tscreen><verb>
http://www.sbay.org/smail-faq.html
</verb></tscreen>


<sect1><!--  2.3. Virtual ftp-servers-->仮想 ftp サーバー
<p>
<!--
        The concept of a virtual ftp-server is not supported by
        default for any ftp-daemon I know.
-->
       仮想 ftp サーバーというコンセプトは、著者の知る限り、どの ftp デーモン
        でもサポートされていません。

<!--
        What regards to the widespread used daemon "wu-ftpd", there
        is a patch by Brian Grossman &lt;brian@SoftHome.Net&gt; to make the
        anonymous FTP-service distinguish between the virtual 
        interfaces. Availability is mentioned in chapter 3.
-->
       広く使われている "wu-ftpd" では Brian Grossman  
       &lt;brian@SoftHome.Net&gt; 
        が作成した anonymous FTP サービス を仮想インターフェースごとに区別する
        ためのパッチがあります。入手方法とパッチ方法は３章で紹介します。

<!--
        There seem to be no other patches around that do the same.
-->
       これ以外に同様のパッチは見当たりません。

<!--
        The main idea of the Brian's multihome-patch for is to make 
        wu-ftpd "chroot()" to
-->
       Brian のマルチホーム・パッチの基本的な考え方は wu-ftpd の "
       <tt>chroot()</tt>" 
        を単に  

<tscreen><verb>
HOME_DIRECTORY_OF_ftp-ACCOUNT/HOSTNAME_THE_USER_TALKS_TO/
</verb></tscreen>

<!--
        instead of just doing a chroot() into
-->
       としないで、

<tscreen><verb>
HOME_DIRECTORY_OF_ftp-ACCOUNT/
</verb></tscreen>

       とするものです。

<!--
        In the example shown below, the user thats connects to
        "ftp.swindlers.com" via anonymous ftp is locked up under
        "/home/ano-ftp/ftp.swindlers.com/" instead of just under
        "/home/ano-ftp/".
        You can imagine that the basic setup is straightforward and
        does not differ much from setting up a single anoymous ftp-account.
-->
       以下の例では anonymous ftp 経由で "ftp.swindlers.com" に接続している
        ユーザーは "/home/ano-ftp/" でなく "/home/ano-ftp/ftp.swindlers.com/" 
        に接続されます。
        基本的な設定は単純で、通常の一つだけの anoymous ftp-account の設定と
        大きく違わないことが分かるでしょう。

<!--
        Kudos to Brian for this easy and efficient setup-strategy.
-->
       この簡単で効率的な設定方法を考えた Brian に賞賛を！

<!--
        Let me assume you would already have this special version of
        wu-ftpd compiled youself or fetched the binaries and let me
        postpone all realated questions to the end of this document.
-->
       このパッチを当てたスペシャル版の wu-ftpd を既に自分でコンパイルしている
        かバイナリを入手していることを確認したうえで、取り敢えず他の疑問点は
        すべてこのドキュメントの最後までおいておきましょう。

<!--
        I will give you a real-world example and tell you what I did
        for one of my customers (I only changed the machine names to
        non-existant ones ...).
-->
       まず現実的な例を示したうえで、著者があるお客様のためにどのようにしたか
        紹介します（ただマシン名を架空のものにしただけです）。

<itemize>
<item>
<!--
    (a) Created a directory "/home/ano-ftp" to incorporate the different
        anonymous ftp-servers.
-->
       (a) 異なる anonymous ftp サーバーを構成するため "<tt>
           /home/ano-ftp</tt>" 
            ディレクトリを作成します。

<tscreen><verb>
mkdir  /home/ano-ftp  &&  cd /home/ano-ftp
mkdir  ftp.sharpers.com  ftp.usurers.com  ftp.swindlers.com
</verb></tscreen>

<!--
        Resulting in a tree:
-->
           作成したディレクトリ構成は以下のとおりです：

<tscreen><verb>
/home/ano-ftp/
          |-- ftp.sharpers.com
          |-- ftp.swindlers.com
          `-- ftp.usurers.com
</verb></tscreen>

<item>
<!--
    (b) Copied the necessary files for an anonymous ftp-service from the
        already configured anonymous-ftp-directory "/home/ftp" into the
        newly created directories
-->
       (b) anonymous ftp サービスに必要なファイルを既に設定してある 
            anonymous-ftp ディレクトリ "<tt>/home/ftp</tt>" から、新たに
            作成したディレクトリにコピーします。

<tscreen><verb>
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/* .
</verb></tscreen>

<!--
        Don't forget to delete the superfluous files under "pub/"
        afterwards (or simply don't copy them at all).
        For example, the "/home/ftp" the Debian-distribution provides looks
        like 
-->
       "<tt>pub/</tt>" にある不要なファイルを後で削除するのを忘れないように
        しましょう（あるいははじめからコピーしない）。
        参考として Debian 配布パッケージでの "/home/ftp" を紹介します：

<tscreen><verb>
/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             ----------   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
</verb></tscreen>

<item>
<!--
    (c) Changed the home-directory of the anonymous ftp-account to
        "/home/ano-ftp" by editing the file "/etc/passwd".
-->
       (c) "<tt>/etc/passwd</tt>" ファイルを編集して anonymous ftp アカウント
           のホーム
           ディレクトリを "<tt>/home/ano-ftp</tt>" に変更します。

<![IGNORE[
<tscreen><verb>
ftp:*:11:11:Anonymous FTP:/home/ano-ftp:/bin/sh
                          ^^^^^^^^^^^^^
                          home-directory
</verb></tscreen>
]]>
<tscreen><verb>
ftp:*:11:11:Anonymous FTP:/home/ano-ftp:/bin/sh
                          ^^^^^^^^^^^^^
                          ホームディレクトリ
</verb></tscreen>

<!--
        These 3 steps were the basic setup and already enabled a
        seperate ftp-areas for each of the 3 virtual hosts.
        My actual job was a little bit more complicated in that I had
        to enable disk-quotas (limiting the consumable disk-space per
        user/group) in each incoming-diretory so the story continues:
-->
          以上の3ステップが基本設定で、これで3つの仮想ホストはそれぞれ分けら
           れた ftp エリア を使用できます。
           著者の場合、本当の作業はここからで、それぞれの incoming ディレクトリ
           毎にディスク割当量を設定（各グループにディスクスペースの使用量を
           制限）しなければならなかったのでちょっと複雑になります。

<p>
<item>
<!--
    (d) Enabled upload-areas in wu-ftpds config-file "/etc/ftpd/ftpaccess"
-->
       (d) wu-ftpd の設定ファイル "<tt>/etc/ftpd/ftpaccess</tt>" で upload 
            エリア を使えるようにします。

<![IGNORE[
<tscreen><verb>
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
#                                                |      |      |    |     |
#                              uploads allowed --+      |      |    |     |
#  uploaded files should be owned by this user ---------+      |    |     |
#                           dito for the group ----------------+    |     |
#             access rights for uploaded files ---------------------+     |
#          creation of directories not allowed ---------------------------+
</verb></tscreen>
]]>
<tscreen><verb>
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
#                                                |      |      |    |     |
#                           アップロードの許可 --+      |      |    |     |
#         アップロードファイルのオーナーを設定 ---------+      |    |     |
#         アップロードファイルのグループを設定 ----------------+    |     |
#   アップロードファイルのアクセス許可権の設定  --------------------+     |
#                     ディレクトリの作成不許可 ---------------------------+
</verb></tscreen>

<!--
        Now, every file uploaded to those ftp-servers belongs to a
        seperate user for which quotas can be enabled.
-->
          これで ftp サーバーにアップロードされるファイルはそれぞれ異なる
           ユーザーに属するようになり、ディスク割当量の設定が行えるように
           なります。
<p>
<item>
<!--
    (e) Configured the disk-quotas
-->
       (e)ディスク割当量の設定
<p>
<!--
        Suggested readings: "/usr/doc/quotas.txt" and the Linux 
        "Quota mini-HOWTO".
-->
          まずは "<tt>/usr/doc/quotas.txt</tt>" と Linux "Quota mini-HOWTO 
(<htmlurl url="http://www.linux.or.jp/JF/JFdocs/Quota/index.html" 
name="日本語訳">)" を参照しま
           しょう。

<itemize>
<item>
<!--
          * Added "usrquota=/etc/quota/ano-ftp.users" to the mount-options
            of the partition "/home/an-ftp" is stored on in "/etc/fstab".
-->
          * "<tt>/etc/fstab</tt>" の "<tt>/home/an-ftp</tt>" パーティションの
             マウントオプション
             に"<tt>usrquota=/etc/quota/ano-ftp.users</tt>" を追加します。
<item>
<!--
          * Created "/etc/quota/ano-ftp.users" via the "touch"-command
-->
          * "<tt>touch</tt>" コマンドで "<tt>/etc/quota/ano-ftp.users</tt>" 
          を作成します。
<item>
<!--
          * Switched on quotas by issuing "quotaon"
-->
          * "<tt>quotaon</tt>" を実行して割当てを有効にします。
<item>
<!--
          * Set quotas with "edquota swindlers", etc.
-->
          * 割当てを "<tt>edquota swindlers</tt>" 等で設定します。
<p>
<!--
            Quotas for user swindlers:
-->
          <tt>user swindlers</tt> の割当て:

<tscreen><verb>
/dev/sdb8: blocks in use: 0, limits (soft = 0, hard = 10000)
           inodes in use: 1, limits (soft = 0, hard = 1000)
</verb></tscreen>

<!--
            The corresponding disk-space depends on the size of the blocks
            when you created the filesystem (standard is 1 block = 1 kb).
-->
          対応するディスクスペースはファイルシステム作成時のブロックサイズ
           により異なります（標準は １ブロック = 1 kb)。

</itemize>

</itemize>


<sect><!--  3. Availability-->
入手方法とパッチ方法
<p>
<!--
        The multihome-patch (20kb) for wu-ftpd can be downloaded from
-->
          wu-ftpd のマルチホーム・パッチ(20kb)は以下よりダウンロードできます：

<itemize>
<item><url 
url="ftp://ftp.softhome.net/pub/users/brian/multihomed-wu-ftpd-2.4-23.patch">
</itemize>

<!--
        Please read it to get details about the copyright.
-->
         入手の際は copyright をよく読んで下さい。

<!--
        The sources for "wu-ftpd" itself are floating around in the net,
        use archie to find the nearest server that carries them. Change
        into the directory that is created when unpacking the sources and
        type 
-->
         "wu-ftpd" のソースはネット上のいたるところにあります。 archie を
          使って一番近いサーバーを探して入手して下さい。ソースを解凍した際
          に作成されたディレクトリに移動して以下を実行します：

<tscreen><verb>
patch < ../multihomed-wu-ftpd-2.4-23.patch
</verb></tscreen>

<!--
        to merge the patch into the sources. The FAQ for wu-ftpd is
        available from
-->
         これでソースにパッチが当てられます。wu-ftpd の FAQ は、以下で
         入手できます。

<itemize>
<item><url url="http://www.hvu.nl/~koos/wu-ftpd-faq.html">
</itemize>

<!--
End of the Virtual-wu-ftpd mini-HOWTO
-->
以上です。
</sect>

<sect>日本語訳について
<p>
<verb>
&lsqb;協力：Linux JFプロジェクト&rsqb;
&lsqb;翻訳：吉峯 幸郎, yoshimin@ms.civilnet.com.tw&rsqb;(1997/05/26)
</verb>

(sgml conversion: y.senda, ysenda@pop01.odn.ne.jp, 2001/09,<newline>
なお、変換時に 1996/10/22版から1997/01/27版に更新しました。実質 5, 6
行の更新です。)

</article>