  Red Hat Linux 6.Xで構築するホームネットワークのインターネッ
  トゲートウェイ
  Paul Ramsey <pramsey@refractions.net>

  2000年6月22日
  鈴木 康弘(ysuzuki@bb.mbn.or.jp)
  2000年10月30日

  家庭や事務所内の小規模なネットワークのゲートウェイにRed Hat 6系のディ
  ストリビューションを運用するための設定について述べた簡単な入門文書で
  す。マスカレードとDNS・DHCP・基本的なセキュリティについて説明します。

  ______________________________________________________________________

  目次

  1. はじめに
     1.1 更新履歴
     1.2 著作権

  2. 機器の接続
     2.1 ハブを使う
     2.2 ハブを使わない
     2.3 ネットワークカードが1枚だけのとき

  3. ネットワークの設定
     3.1 ネットワークドライバーの設定
        3.1.1 同型のネットワークカードが2枚あるとき
     3.2 内部ネットワークの設定
        3.2.1 ネットワークデバイス
        3.2.2 DHCPサーバ
        3.2.3 クライアントコンピュータ
        3.2.4 DNSサーバ
        3.2.5 内部ネットワークの試験
     3.3 外部ネットワークの設定
        3.3.1 固定IPアドレスの場合
        3.3.2 DHCPの場合
        3.3.3 特殊な場合
           3.3.3.1 EthernetでのPPP(PPPoE)
           3.3.3.2 特異なDHCPへの対応
           3.3.3.3 Road Runner
        3.3.4 ネットワーク設定の確認
     3.4 安全確保

  4. IPマスカレードの設定
  5. 障害対応
     5.1 ICQが動作しない
     5.2 Red Hat 6.XでなくCaldera 2.Xの場合
     5.3 内部ネットワークのコンピュータをWebサーバーにする

  ______________________________________________________________________

  1.  はじめに

  この文書は、家庭内や小さな事務所内のコンピュータネットワークのインター
  ネットゲートウェイとしてRed Hat 6.Xを設定するための、簡潔な手順書で
  す。特別なケースは考慮していませんし、使用するネットワークアドレスにつ
  いていくつか仮定しています。もっとも重要な仮定を以下に示します。

  o  ケーブルテレビ回線やADSLでインターネットへ常時接続している

  o  最低 1台のコンピュータに、きちんとRed Hat 6.Xがインストールされてい
     る。なおこの文書は、Macmillan Publishingが様々な名前で配布してい
     るMandrake 6.X (日本では五橋研究所が「マイスターLinux Mandrake」と
     いう名前で9月から販売しています)など、Red Hat系のディストリビュー
     ションにも有効です。

  o  あなたのLinuxコンピュータに、Linuxで利用可能なネットワークカード
     が2枚挿さっている

  o  2台以上のコンピュータでネットワークを構築しているのならばEthernetハ
     ブを1台、また1台のコンピュータだけでならばクロスケーブルを持ってい
     る

  o  Linuxコンピュータでテキストファイルを編集する方法を知っている

  o  rootでログインでき、LinuxのCD-ROMからRPMパッケージをインストールで
     きる

  もし以上の仮定のいずれかに合わないのならば、おそらくこの文書はあなた向
  きではありません。

  インストールの際に特別なことをする必要はありません。あなたの好みに合わ
  せてインストールしてください。この文書は、ネットワーク構築に必要なもの
  を最初からすべてインストールする方法を示します。つまり、インストール中
  の特別な設定や特別なソフトウェアのインストールを前提としていません。動
  作を確実にし、設定情報がどのファイルにあるか混乱するのを防ぐため、シス
  テム設定ファイルを直接編集します。Red Hatが提供するGUI設定ツールは使用
  しません。すこし難しくなるかもしれませんが、逆に、他のディストリビュー
  ションや、異なる状況でもあなたの知識を生かせるようになるでしょう(Xが動
  かない場合や、モニターのないサーバなどです)。

  1.1.  更新履歴

  この文書の最新版は常時、HTML形式なら
  ばhttp://www.coastnet.com/~pramsey/linux/homenet.htmlで、 SGML形式なら
  ばhttp://www.coastnet.com/~pramsey/linux/homenet.sgmlで、それぞれ得る
  ことができるはずです(訳注: 日本語訳は
  http://www.linux.or.jp/JF/JFdocs/Home-Network-mini-HOWTO.htmlで入手で
  きます)。

  o  1999年12月21日 : 第1版

  o  2000年1月2日 : 外部ネットワーク接続で起きる不具合についてJohn
     Mellorからの提案を受け入れる

  o  2000年1月22日 : 同じ型のネットワークカードを複数 使用する場合につい
     て小さな修正を行い、Chris LeaからIPエイリアスに関する情報の提供を受
     ける

  o  2000年3月16日 : Nelson Gibbsから得たネームサーバのセキュリティ情報
     とCaldera Linux対応について、更新

  o  2000年6月22日 : Red Hat 6.2のコンフィギュレーション時の問題について
     追加し、 Kerr Firstから情報をもらいPPPoEについて補足

       日本語翻訳版の更新履歴は以下の通りです。

       o  2000年7月30日：原文の2000年1月22日版を元に翻訳。翻訳につ
          いて、以下の方にコメントを頂きました(順不同、敬称略)。あ
          りがとうございました。

          o  武井 伸光

          o  加茂 智之

     o  Masaharu Goto

     o  森本 淳

     o  konkiti

     o  Hiro YAMAZAKI, Ph.D

     o  菊谷 誠

     o  山下 義之

     o  佐野 武俊

     o  羽根 秀也

  o  2000年10月30日：原文の2000年6月22日版を元に翻訳。翻訳につ
     いて、以下の方にコメントを頂きました(順不同、敬称略)。あ
     りがとうございました。

     o  武井 伸光

     o  MIZUHARA Bun

  1.2.  著作権

  Copyright (C) 2000, Paul Ramsey.

  以下の制限に従えば、この文書の全体または一部を無料で複写してかまいませ
  ん。

  o  全体をコピーする場合でも一部分だけをコピーする場合でも、上記の著作
     権表示とこの複写許可条項を完全な状態で変更なしに含まなければなりま
     せん

  o  この文書の翻訳や、この文書が元になって生まれた作業の結果を配布する
     際は、事前に書面でこの文書の著者に承認を得なければなりません

  o  この文書の一部分だけを配布する際は、この文書全体を得る方法をその中
     に含め、その手段を提供しなければなりません

  o  批評のための実例や他のプロジェクトで引用するためならば適切な参考文
     献表示をつけてこの文書の一部だけを、この許可条項なしに複写してかま
     いません

  これらの制限の例外として、学術目的の利用を認めることがあります。著者に
  連絡してください。これらの制限は著者たちを守るために設けました。皆さん
  の学習や教育を制限することが目的ではありません。

       訳注: 条件に従い、原文を以下に示します。

       This manual may be reproduced in whole or in part, without
       fee, subject to the following restrictions:

       o  The copyright notice above and this permission notice
          must be preserved complete on all complete or partial
          copies.

       o  Any translation or derived work must be approved by the
          author in writing before distribution.
  o  If you distribute this work in part, instructions for
     obtaining the complete version of this manual must be
     included, and a means for obtaining a complete version
     provided.

  o  Small portions may be reproduced as illustrations for
     reviews or quotes in other works without this permission
     notice if proper citation is given.

  Exceptions to these rules may be granted for academic
  purposes: Write to the author and ask. These restrictions
  are here to protect us as authors, not to restrict you as
  learners and educators.

  2.  機器の接続

  ハブの有無で、ネットワークのトポロジーはわずかに異なります。この文書
  は、 RJ45コネクタのケーブル(電話線に似たケーブル、訳注:10BASE-Tなど)を
  使ったネットワークだけを扱います。細い同軸ケーブル(訳注:10BASE2など)は
  対象外です。この細い同軸ケーブルを使えばハブを使わずに、複数のコンピュ
  ータでネットワークを組むことができますが、接続の終端処理などに注意しな
  ければなりません。ネットワークについてすでに知識がある方には蛇足かもし
  れませんが。

  2.1.  ハブを使う

  もしハブがあるならば、あなたのネットワークはこのようなもの
  <http://www.coastnet.com/~pramsey/linux/w_hub.gif> になるでしょう。

  取り付けの際にサービスプロバイダが提供したケーブル、またはあなたの環境
  で動作することがわかっているケーブルを用いて、Linuxボックスのeth0カー
  ドをケーブルモデムやADSLボックスへ接続します。これは重要です。なぜな
  ら、ケーブルモデムには、クロスケーブルで接続することもあればストレート
  ケーブルで接続することもあるからです。しかしプロバイダが提供したケーブ
  ルを使えば問題はありません。

  ストレートケーブルで、Linuxボックスのeth1カードをハブと接続します。そ
  れ以外のすべてのコンピュータもストレートケーブルでハブと接続してくださ
  い。

  2.2.  ハブを使わない

  ハブがなくても、クロスケーブルを使ってあなたのLinuxボックスをもう1台の
  コンピュータと接続することができます。このトポロジーはこのようなもの
  <http://www.coastnet.com/~pramsey/linux/wo_hub.gif> になるでしょう。

  サービスプロバイダから提供されたケーブルで、Linuxボックスのeth0カード
  をケーブルモデムやADSLボックスと接続します。そして、そのLinuxボックス
  の eth1カードをクロスケーブルで他のコンピュータと接続してください。

  2.3.  ネットワークカードが1枚だけのとき

  このような設定は推奨しませんが、可能です。でも、あなたの場合にどうなる
  かは保証できませんので、悪しからず。このような設定をすると、あなたの
  ネットワークの内と外が物理的に同じネットワークとなります。このため理論
  的にはクラッキングに弱くなります。実際には、その危険性はおそらくとても
  低いですが。

  Linuxのカーネルは、IPエイリアスをサポートしているので、一つ
  のEthernetカードへ同時に二つの異なるIPアドレスを割り振ることができま
  す。Red HatとMandrakeで提供されるカーネルは最初からIPエイリアスをサポ
  ートしています。一枚のEthernetカードだけでゲートウェイを立ち上げるとき
  は、以下の説明文でeth1の箇所を eth0:0と置き換えて読んでください。
  ネットワークカードが1枚だけのときにDHCPサーバを立ち上げることは、お勧
  めしません。

  すべてのコンピュータとケーブルモデムやADSLボックスを、ハブへ接続してく
  ださい。そして、お好きなおまじないを唱えてから、次へ進んでください。

  3.  ネットワークの設定

  すでに、ゲートウェイコンピュータにLinuxがインストールされているはずで
  す。さらに、ネットワークカードの1枚をすでに設定し、インターネットとの
  接続を完了しているかもしれません。しかし、我々はゼロから始めます。設定
  が一つもおこなわれていない状況を想定します。

  まず、rootでログインしてください。この文書では、あなたがrootでログイン
  しているものとして操作方法を述べていきます。

  Linuxのカーネルは、あなたの2枚のEthernetカードをeth0とeth1 として認識
  します。ですからこの文書でもこれから同じように記述します。問題は、どち
  らのカードがどちらであるか、です。ここでは、少なくとも50%の確率で大丈
  夫であると保証できる、"簡単な"方法を示します。カバーを外して作業をする
  ときの要領で、マザーボードが水平になるようにあなたのコンピュータを机の
  上におき、コンピュータの背面を見たときに、左端になるカードがeth0です。
  マスキングテープなどでラベルを作り貼っておくと良いかもしれません。そし
  て紙に、 eth0とeth1カード両方の製造元とモデルをメモしてください。

  それでは、eth0カードとeth1カードをカーネルが自動的に認識しているか、見
  てみましょう。ifconfig eth0やifconfig eth1 とタイプしてください。とも
  に、カーネルがネットワークカードを認識しているならば、以下のように表示
  されます(数字などが異なるかもしれません)。

  eth0   Link encap: Ethernet   HWaddr 00:60:67:4A:02:0A
         inet addr:0.0.0.0  Bcast:0.0.0.0  Mask:255.255.255.255
         UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
         RX packets:466 errors:0 dropped:0 overruns:0 frame:0
         TX packets:448 errors:0 dropped:0 overruns:0 carrier:0
         collisions:85 txqueuelen:100
         Interrupt:10 Base address:0xe400

  カーネルがネットワークカードを認識していないと、このような表示になるで
  しょう。

  eth0: error fetching interface information: Device not found.

  3.1.  ネットワークドライバーの設定

  両方のネットワークカードがカーネルに認識されていたら、この節はとばして
  ください。そうでない方は、この節を読んでください。

  というわけで、カーネルがネットワークカードを1枚または両方とも認識しま
  せんでしたが、本当のところ、これは問題ではありません。カードを認識させ
  る方法をもっとはっきりとカーネルへ伝えればよいだけのことです。キリがあ
  りませんのですべての場合をカバーすることはしません。面倒なことが起こっ
  たら、Ethernet HOWTO を思い出してください(訳注:和訳もあります）。ここ
  では、いくつかアドバイスを要約して紹介します。

  o  カードが最新鋭でドライバーがなければ話は別ですが、一般的にPCIバスの
     ネットワークカードならば事態は楽観できます。ネットワークカードにつ
     いて (それ以外のものについてもですが)、しばしば多くの情報
     が/proc/pci ファイルに記されています。製造元とモデルをメモしてくだ
     さい。

  o  ISAバスのネットワークカードならば、カードが使うIOベースアドレス
     とIRQが必要になることがあります。マニュアルがありますね。ありますよ
     ね。もしなければ、製造元のウェッブサイトをのぞいて、オンラインのリ
     ファレンスを公開しているか確認してください。昔のDOS用の設定ディスク
     があるならば、DOSを起動して、アドレスと IRQを参照し設定するセット
     アッププログラムを探してください。

  o  ISAバスのプラグ&プレイカードをお持ちならば、まず設定方法を学ばなけ
     ればならないでしょう。Plug'n'Play HOWTOを読んでください(訳注:和訳も
     あります)。さいわい、一度設定したことがあれば、IOベースアドレス
     とIRQを正確にわかっているでしょう。

  eth0とeth1の製造元とモデルがわかりましたから、Ethernet HOWTO (和
  訳)のcompatibility page(ベンダー/メーカー/モデル固有の情報)を見てくだ
  さい。あなたのカードをこの中から探し、推奨されているドライバーと、必要
  かもしれない特別なオプションに関する情報をすべて、メモしてください。

  それでは、設定ファイルを編集しましょう。編集するのは/etc/conf.modules
  です。このファイルを、使い慣れたテキストエディタで開いてください。この
  ファイルにはいろいろなことが書き込めますから、私が使っているゲートウェ
  イのファイルを例示しておきます。私が使っているのは、VIA Rhineのチップ
  が載っているPCIバスの 10/100Mbカードと、なんの変哲もないISAバスの10Mb
  NE2000互換カードです。100Mbのカードを内部ネットワークへの接続に使
  い、10Mbのカードで外部へ接続しています。私の/etc/conf.modulesファイル
  は、このようになっています。

  alias parport_lowlevel parport_pc
  alias eth0 ne
  options ne io=0x300 irq=10
  alias eth1 via-rhine

  私のconf.modulesの内容を解説すると、

  o  最初の行はパラレルポートをプリンターに使うための設定です。同じよう
     な行があなたのファイルにもあることでしょう。変更しないでください。

  o  第2行目(alias eth0 ne)はカーネルへ、eth0デバイスにneドライバを使う
     よう指示しています。

  o  第3行目のoptions ne io=0x300 irq=10はneドライバーへ、ISAカードの
     IOアドレスとIRQ割込みを通知します。もしISAカードをお持ちならおそら
     くこのように、カードに合った正しいドライバーとIO、IRQへ書き換える必
     要があるでしょう。

  o  第4行目(alias eth1 via-rhine)はeth1にvia-rhineドライバーを使うよう
     カーネルへ指示しています。私のeth1カードはPCIカードですから、
     IOやIRQについての情報を通知する必要はありません。PCIサブシステムが
     自動的にカードの設定をおこないます。

  あなたの2枚のネットワークカードのエイリアスと、すべてのISAカードの正し
  いオプション行が/etc/conf.modulesファイルに記述されているか確認しま
  しょう。なお、インストールのときに設定したすべてのイーサーネットカード
  については、そのときの設定がすでに/etc/conf.modulesファイルへ書き込ま
  れているかもしれません。

  conf.modulesファイルの編集を終えたら、ifconfig eth0と ifconfig eth1を
  もう一度 試してみてください。製造元からのマニュアルがなくIOアドレス
  とIRQがわからなければ、何度か試行錯誤を繰り返さないとダメかもしれませ
  ん。

  3.1.1.  同型のネットワークカードが2枚あるとき

  本当に賢明なことに、Linuxゲートウェイ用に同じ型のネットワークカード
  を2枚も購入し、うまく動作してくれない、そんなことがあるかもしれませ
  ん。でも、心配は不要。2枚のカードを共存させるには、単
  に/etc/conf.modulesファイルを正しい文法にしたがって記述すればよいだけ
  のことです。ここでは例としてNE2000互換カード (よくある選択です)を一組
  購入した場合について、アドレスとIRQ番号を適当に決めて説明します。あな
  たの/etc/conf.modulesファイルはこのようになります。

  alias eth0 ne
  alias eth1 ne
  options ne io=0x330,0x360 irq=7,9

  関連するオプションは1行にまとめます。各オプションの、最初の数字
  がeth0、 2番目の数字がeth1のものです。

  3.2.  内部ネットワークの設定

  "内部ネットワーク"とは、家庭や社内にあるすべてのコンピュータが情報をや
  りとりするネットワークのことです。"外部ネットワーク"はLinux コンピュー
  タのもう一つの端につながっている、大きくて恐ろしいインターネットのこと
  です。一般的にLinuxボックスが内部と外部との間でそれなりに強力なファイ
  アーウォールとなるため、内部ネットワークは外部ネットワークから完全に切
  り離されます。

  3.2.1.  ネットワークデバイス

  ドライバーが正常に動作しifconfigでeth0とeth1の両方を確認できるようにな
  りましたので、内部のホームネットワークを立ち上げましょう。ここで
  は、eth1に内部ネットワーク、eth0に外部ネットワークを接続していると仮定
  します。

  あなたの内部ネットワークは、公開されることはないでしょうから、内部ネッ
  トワークのために予約されている特別なネットワーク、192.168.1.0、となる
  でしょう。これは、"非公開のクラスCネットワーク"です。覚えておけば、友
  達に感心してもらえるかも。

  まず最初にネットワークを起動しておかなければなりません。
  /etc/sysconfig/networkファイルを確認して、以下の行がなければ記入してく
  ださい。

  NETWORKING=yes
  FORWARD_IPV4=yes

  第1行目はLinuxに、ブート時にネットワークデバイスが起動してほしいことを
  伝えます。第2行目はIPフォワーディングを可能にするようLinuxへ伝えます。
  第4節でマスカレードの設定を始めるときに必要となります。

  Red Hat 6.2 の注意事項: IPフォワードとマスカレードをRed Hat 6.2できち
  んと動作させるには、/etc/sysctl.confファイルを修正しなければなりませ
  ん。以下の行を追加し、正しい値に設定してください。

  net.ipv4.ip_forward = 1
  net.ipv4.ip_always_defrag = 1

  Red HatとRed Hatから派生したディストリビューションでは、すべてのネット
  ワークインターフェースの設定は/etc/sysconfig/network-scriptsディレクト
  リ中のファイルに含まれています。このディレクトリに移って、新しくifcfg-
  eth1 ファイルを作成し、以下の内容を記述してください。

  DEVICE=eth1
  IPADDR=192.168.1.1
  ONBOOT=yes

  これはネットワークスクリプトへ、eth1をブート時に設定し指定されたIPアド
  レスを与えるよう指示しています。次のコマンドで、この新しい設定を用いて
  あなたのネットワークを動かしましょう。/etc/rc.d/init.d/network
  restartとコマンドを打ち込んでください。

  3.2.2.  DHCPサーバ

  DHCPサーバは自動的に、内部のホームネットワークのデバイスにIPアドレスを
  設定します。ラップトップを使っている人達にはとても便利です。コンピュー
  タをネットワークにつなげるだけですぐに適切な設定がなされます。内部ネッ
  トワークにDHCPサーバが不要ならば次の節へ飛んでください。

  まずDHCPサーバがインストールされている必要があります。Linux CD-ROMをマ
  ウントして、 dhcp RPMをインストールしてください。そして/etc/dhcpd.conf
  ファイルを編集し、以下の内容にしてください。

  subnet 192.168.1.0 netmask 255.255.255.0 {
    range 192.168.1.2 192.168.1.60;
    default-lease-time 86400;
    max-lease-time 86400;
    option routers 192.168.1.1;
    option ip-forwarding off;
    option broadcast-address 192.168.1.255;
    option subnet-mask 255.255.255.0;
  }

  もしLinuxコンピュータをキャッシュ用のDNSサーバとしたいのならば、以下の
  オプションも入れてください。

  option domain-name-servers 192.168.1.1;

  もし外部のDNSアドレスを知っていて、LinuxコンピュータをDNSとするつもり
  がないならば、次のオプションを記入してください。x.x.x.xとy.y.y.yは、外
  部 DNSサーバのIPアドレスです。

  option domain-name-servers x.x.x.x, y.y.y.y;

  もしWindowsコンピュータとファイルを共有するため、SambaをLinuxボックス
  で動かすならば、LinuxコンピュータをデフォルトのWINSとブラウザサーバと
  して使うため以下のオプションを追加してください。

  option netbios-name-servers 192.168.1.1;
  option netbios-dd-server 192.168.1.1;
  option netbios-node-type 8;
  option netbios-scope "";

  SambaとWINSの設定はこの文書の範囲を越えています。もし必要ならば、 SMB
  HOWTO を参照してください(訳注:和訳もあります。日本Sambaユーザ会のサイ
  トも参考になります)。

  まだいくつか作業が必要です。次に、/etc/rc.d/init.d/dhcpdファイルの最後
  に以下の行を追加してください。

  /sbin/route add -host 255.255.255.255 dev eth1

  WindowsのDHCPクライアントは、DHCPの応答に特定のブロードキャストアドレ
  スを必要とします。このコマンドはLinuxのTCP/IPスタックにそれを生成させ
  ます。もしこの行がない場合はファイルに記述してください。同じような行が
  あっても、デバイスがeth1になっているか確認してください。

  次に、/etc/rc.d/init.d/dhcpdファイルを変更し、eth1をデフォルトデバイス
  とします。次の行を、

  daemon /usr/sbin/dhcpd

  以下の行で置き換えます。

  daemon /usr/sbin/dhcpd eth1

  これでDHCP起動の準備ができました。まず、コマンド/etc/rc.d/init.d/dhcpd
  startでDHCPサーバを起動してください。

  最後に、コンピュータを再起動してDHCPサーバが立ち上がるか確認しま
  す。DHCPサーバの一部のRPMバッケージは、起動時にDHCPサーバが立ち上がら
  ない設定になっています。ですから、chkconfig dhcpd onコマンドを実行して
  確実に起動するようにします。

  このコマンドはRed Hatに、dhcp起動スクリプトを、/etc/rc.dディレクトリ以
  下のさまざまなランレベルのディレクトリへ追加させます。ランレベル3と5
  (マルチユーザーのコンソール画面とXウィンドウ画面)でDHCPサーバは起動し
  ます。ランレベル0と1・6(シャットダウンとシングルユーザーモード・再起
  動)でDHCPサーバは終了します。

  3.2.3.  クライアントコンピュータ

  DHCPを立ち上げてしまえば、クライアントコンピュータの設定はとても簡単で
  す。DHCPの設定を有効にすれば良いだけです。Windowsコンピュータなら
  ば、"コントロールパネル"を開き、"ネットワーク"を選択し、"TCP/IP" プロ
  トコルの"設定"を選択します。"TCP/IPアドレスの自動設定" ボックスを
  チェックし、変更を反映させて、再起動してください(訳注:Windows 95の場合
  は、"コントロールパネル"から"ネットワーク"を選択し、 "ネットワークの選
  択"でTCP/IPアダプタのプロパティを選びます。そして "IPアドレス"タブ
  で、"IPアドレスを自動的に取得"をチェックしてください)。

  クライアントコンピュータの再起動の前に、Linuxボックスでtail -f
  /var/log/messagesコマンドを実行すると良いかもしれません。Linuxのシステ
  ムログを見続けることができます。万事 調子が良ければ、Windowsコンピュー
  タが再起動のときにIPアドレスを要求しDHCPサーバが応答していることがわか
  るでしょう。コマンド tail -fから抜け出すには、Control-Cを使ってくださ
  い。

  もしDHCPサーバを立ち上げなくても、クライアントコンピュータの設定はかな
  り簡単です。 IPアドレスを設定するにはもう一度、"コントロールパネル"か
  ら" ネットワーク"を開き、TCP/IPプロトコルの設定を選んでください(訳
  注:Windows 95 の場合は、"コントロールパネル"から"ネットワーク"を選択
  し、 "ネットワークの選択"でTCP/IPアダプタのプロパティを選び、"IP アド
  レス"タブを開いてください)。ネットワークアドレスの192.168.1.0とブロー
  ドキャストアドレスの192.168.1.255、Linuxサーバの192.168.1.1以外の、
  ネットワーク192.168.1.0内の任意のアドレスをクライアントコンピュータに
  割り当てることができます。決して、2台のコンピュータに同じIPアドレスを
  与えないでください。 "ゲートウェイ"アドレスには192.168.1.1を指定しま
  す。こうすれば、外部へのトラフィックはLinuxゲートウェイへ向かいます。

  クライアントの設定については、IP Masquerading HOWTO(訳注: 和訳ありま
  す) のConfiguration Section(訳注: その他のIPマスカレードの問題とソフト
  ウェアサポート)にとても詳細な情報があります。

  DHCPを使う場合も、そうでなくゲートウェイが192.168.1.1のネットワー
  ク192.168.1.Xのアドレスを使う場合も、クライアントコンピュータでDNSの設
  定をする場合 一般的に、ネットワークDNSキャッシュサーバを動かすなら
  ば192.168.1.1、そうでなければプロバイダーが指定するDNSサーバのアドレス
  を指定してください。

  3.2.4.  DNSサーバ

  Linuxボックスをキャッシュ用のDNSサーバとすれば、あなたのネットサーフィ
  ンのスピードが若干 速くなります。よく使われるドメイン名があなたのネッ
  トワーク内部にキャッシュされ外部から引き出す必要がなくなるからです。

  本格的なDNSに興味があるならば、複雑な事柄をたくさん学ばねばなりませ
  ん。 DNS HOWTO があります(訳注:和訳もあります)し、書籍ならばDNS and
  BINDが良い (そしてとても網羅的な)紙の参考書になることでしょう。

  クライアントマシンがキャッシュ用DNSサーバの恩恵を受けるためには、プラ
  イマリーDNS サーバとしてLinuxゲートウェイを使うようクライアントコン
  ピュータで設定する必要があります。一つの方法を、DHCPについて説明し
  た3.2.2節で示しました。御自分でクライアントコンピュータを設定するので
  あれば、IPアドレスの設定と同じコントロールタブでDNSの設定を変更するこ
  とができます。

  DNSサーバをインストールする際は、まず最初にbind RPMをインストールし、
  次にcaching-nameserver RPMをインストールしてください。これで、準備はほ
  とんど完了です。

  インストールすればキャッシュ用DNSサーバは正常に動作します。しかしイン
  ターネットプロバイダのDNSサーバのIPアドレスをご存知でした
  ら、/etc/named.conf ファイルを編集し以下の行をdirectory行の次に追加す
  ると、性能が少しだけ向上します。ここでx.x.x.xとy.y.y.yはDNSサーバのプ
  ライマリーアドレスとセカンダリーアドレスです。

  forwarders { x.x.x.x; y.y.y.y; };

  こうするとあなたのDNSサーバは、指示されたアドレスを探してインターネッ
  トをさ迷う前に、まずプロバイダのDNSサーバへ問い合わせます。プロバイダ
  のDNSサーバは豊富なDNS情報をキャッシュに保持していますから、多くの場
  合、あなたのサーバよりもずっと速く答えを出すことができます。

  ここ1年でnamedデーモンにセキュリティの問題がいくつか見つかっています。
  ですから、必ず最新バージョンを使ってください。そしてセキュリティを上げ
  るため、デフォルトの設定からいくつかの点を変更してください。

  1. まずbindのバージョンをチェックし、8.2.2以降であることを確認してくだ
     さい。そして、Red Hat Updatesや Mandrake Updates を参照し、最新のバ
     ージョンをチェックしてください。

  2. ネームサーバーへの接続をローカルネットワークからに限定するため、
     /etc/named.confファイルのforwarders行の後ろへ allow-query {
     192.168.1/24; 127.0.0.1/32; };という行を追加してください。

  3. ネームサーバーをrootで動かさないでください。もしrootで動いている
     と、ネームサーバの利用者がroot権限を得てしまいます。権限の低いユー
     ザー、たとえば nobodyならば、ネームサーバの実行で引き起こされ得る危
     険性が下がります。サーバをnobodyで動かすために
     は、/etc/rc.d/init.d/namedファイルを編集し、daemon named行をdaemon
     named -u nobody -g nobodyと変更してください。

  ブート時にDNSサーバが確実に起動するよう、chkconfig named onコマンドを
  実行してください。こうすれば、普通のランレベル(3と5)の起動時にネームサ
  ーバが動き始めます。

  これらをきちんと終えれば、次のコマンドでDNSサーバを起動できます:
  /etc/rc.d/init.d/named start

  3.2.5.  内部ネットワークの試験

  外部ネットワークを設定しないとDNSサービスは動きません。なぜなら、イン
  ターネット上の他のDNSサーバと情報を交換する必要がありますから。しか
  し、 pingプログラムで、内部ネットワークがきちんとつながっているかはテ
  ストできます。

  クライアントコンピュータで、ターミナルウィンドウ(MS-DOS)を開いて、
  ping 192.168.1.1と打ち込んでください。このコマンドは、あなたの Linuxコ
  ンピュータへ規則的な間隔でパケットを送出します。Linuxコンピュータはこ
  れに反応してパケットを送り返します。もし正常ならば、パケットの往復時間
  が表示されるはずです。

  3.3.  外部ネットワークの設定

  これで、外部ネットワークを設定する準備が整いました。あなたのインター
  ネットプロバイダのLinuxサポート体制によりますが、接続の設定が難しい場
  合もあります。困難に直面したら、かなり詳細にADSLを解説しているADSL
  HOWTOがあります (訳注:和訳もあります)。なお、もしCable Modem HOWTOが
  あったら、そちらへもリンクしたいと思います(訳注:Cable Modem Provider
  HOWTOがあります。和訳も存在します)。

  外部への接続でおもに問題になるのは、IPアドレスの取得です。ケーブルや
  ADSLで接続している顧客へ固定IPアドレスを配布するプロバイダならば、設定
  は簡単です。しかし多くのプロバイダは動的設定、そうですDHCPです、を採用
  するようになって来ています。つまりあなたのLinuxコンピュータは、eth1側
  ではDHCP サーバとなり、eth0側ではDHCPクライアントとなります。

  さらに、顧客がWindowsコンピュータを使っていると仮定して、標準に準拠し
  ない特別な方法でサービスを提供しているプロバイダが多いのです。このよう
  な場合のいくつかについて、3.3.2節の最後で述べます。

  3.3.1.  固定IPアドレスの場合

  インターネットプロバイダが固定IPアドレスをあなたに付与してくれたなら
  ば、ラッキーです。まず、新規に以下の内容のインタフェース設定ファイル
  /etc/sysconfig/network-scripts/ifcfg-eth0を作成してください。

  DEVICE=eth0
  IPADDR=x.x.x.x
  NETMASK=y.y.y.y
  ONBOOT=yes

  ここで、x.x.x.xとy.y.y.yはそれぞれ、インターネットプロバイダが指示した
  値で置き換えてください。そして/etc/resolv.confファイルを編集し、以下の
  情報を入力します。

  search provider_domain_here
  nameserver n.n.n.n
  nameserver m.m.m.m

  ここで、provider_domain_hereの値はインターネットプロバイダから指示を受
  けているはずです。そしてプライマリーとセカンダリーのDNSサーバのIPアド
  レスを、n.n.n.nと m.m.m.mのところへ記述してください。もしLinuxコンピュ
  ータでDNSサーバを走らせるのならば、他のネームサーバの行の前
  に、nameserver 127.0.0.1 という行を追加できます 。こうするとあなた
  のLinuxサーバは、DNS情報を外部のサーバへ尋ねる前にキャッシュサーバを使
  うようになります。

  3.3.2.  DHCPの場合

  もしあなたのインターネットプロバイダがDHCPによる設定を採用しているとき
  は、以下の内容のインターフェース設定ファイ
  ル/etc/sysconfig/network-scripts/ifcfg-eth0を新規に作成する必要があり
  ます。

  DEVICE=eth0
  BOOTPROTO=dhcp
  ONBOOT=yes

  そして、DHCPクライアントのデーモンdhcpcdを確実にインストールしてくださ
  い。 Linux CD-ROMを準備し、dhcpcd RPMパッケージをインストールします。

  それでは、新しいネットワークの設定をテストします。コマンド
  /etc/rc.d/init.d/network restartを打ち込んでください。そして外部への接
  続をpingでテストします。インターネット上のコンピュータ、たとえば
  www.yahoo.comをpingしてみて、応答があるか確かめます(訳注: 一部のサイト
  はpingに反応しないような設定になっている場合もあるそうです)。

  3.3.3.  特殊な場合

  あなたの状況は、今まで述べて来たようなとても単純な状況とは異なるかもし
  れません。ここでは、さまざまな困難について短い注釈をいくつか示します。
  また、より信頼のできる情報源へリンクし、そのアドレスを示します。リンク
  を提供してくれて、この節を追加するきっかけとなったJohn Mellorに感謝し
  ます。

  3.3.3.1.  EthernetでのPPP(PPPoE)

  ベル・アトランティックなどいくつかのADSLプロバイダは新規の顧客
  に、"Ethernet でのPPP(PPP over Ethernet、PPPoE)"プロトコルによる接続を
  求めています。そのためWindows上のクライアントプログラムを提供していま
  すが、Linuxユーザーには不便です。幸いPPPoEは単純なプロトコル
  で、Linuxでサポートするためいくつかのプロジェクトが進行中です。

  o  Kerr Firstによると、Roaring Penguin PPPoE Clientは読んでおくとかな
     り役立ちます

  o  PPPoE on Linux for Bell Sympatico

  o  Sympatico用のLinux版PPPoE(一般情報(General Info)) (Linux情報(Linux
     Info))

  3.3.3.2.  特異なDHCPへの対応

  ネットワークプロバイダは、顧客が使えるホスト名やネットワークインター
  フェースカードをただ一つに限定することを好みます。おそらく、ハブを使っ
  てあなたがEhternet ポートへ複数のコンピュータを接続することを防ぐため
  でしょう。もちろんハブではなく LinuxとIPマスカレードを使えば同じような
  効果が得られます。安全性もそのほうが高くなりますし、ケーブル会社にもバ
  レません(訳注: このような接続を禁止しているプロバイダーも中にはあるそ
  うです。契約内容を確認してください)。

  プロバイダがあなたにホスト名を指示し、接続するときはあなたのWindowsコ
  ンピュータにそのホスト名をつけるよう要求する場合、あなたのLinuxコン
  ピュータがプロバイダの DHCPサーバへアドレスを要求するときはそのホスト
  名を名乗るようにしなければなりません。

  インターフェース設定ファイルでBOOTPROTOにdhcpとセットすれば、Red Hat
  DHCP クライアントが呼ばれます。しかしホスト名は参照しません。Red
  Hat6.1で、ホスト名を指定してクライアントを呼ぶに
  は、/etc/sysconfig/networkファイルを編集し、以下の行を変更してくださ
  い。

  HOSTNAME=

  以下のように修正します。

  HOSTNAME=プロバイダが指定したホスト名

  Red Hatから派生したディストリビューションのなかには、これではうまく動
  かないものがあるかもしれません。その際は/sbin/ifupスクリプト
  でdhcpcdとpumpを呼び出すときに、-h $HOSTNAMEスイッチが指定されているか
  チェックしてください。もしこのスイッチがなければ追加します。つまり、
  /sbin/dhcpcd -i $DEVICE -h $HOSTNAMEと /sbin/pump -i $DEVICE -h
  $HOSTNAMEとなります。

  3.3.3.3.  Road Runner

  Road Runner ケーブルサービスのログインは特別です。サーバを使えるように
  なる前に、ログインプロセスが動いていなければなりません。幸い、詳細
  なLinux Road Runner HOWTOがあります。

  3.3.4.  ネットワーク設定の確認

  これまでのあなたの努力の成果を見てみましょう。ifconfigとタイプし、設定
  したデバイスをすべて見ましょう。私のゲートウェイコンピュータではこのよ
  うになりました。

  eth0  Link encap:Ethernet  HWaddr 00:60:67:4A:02:0A
        inet addr:24.65.182.43  Bcast:24.65.182.255  Mask:255.255.255.0
        UP BROADCAST RUNNING MULTICAST  MTU:1500 Metric:1
        RX packets:487167 errors:0 dropped:0 overruns:0 frame:0
        TX packets:467064 errors:0 dropped:0 overruns:0 carrier:0
        collisions:89 txqueuelen:100
        Interrupt:10 Base address:0xe400
  eth1  Link encap:Ethernet  HWaddr 00:80:C8:D3:30:2C
        inet addr:192.168.1.1  Bcast:192.168.1.255  Mask:255.255.255.0
        UP BROADCAST RUNNING MULTICAST  MTU:1500 Metric:1
        RX packets:284112 errors:0 dropped:0 overruns:0 frame:1
        TX packets:311533 errors:0 dropped:0 overruns:0 carrier:0
        collisions:37938 txqueuelen:100
        Interrupt:5 Base address:0xe800
  lo    Link encap:Local Loopback
        inet addr:127.0.0.1  Mask:255.0.0.0
        UP LOOPBACK RUNNING  MTU:3924  Metric:1
        RX packets:12598 errors:0 dropped:0 overruns:0 frame:0
        TX packets:12598 errors:0 dropped:0 overruns:0 carrier:0
        collisions:0 txqueuelen:0

  注意してください。外部IPアドレスを持っているのがeth0で、内部のプライベ
  ートIPアドレスを持っているのがeth1です。

  ネットワークの経路を見るには、routeコマンドを使います。私のゲートウェ
  イコンピュータでは以下のようになりました。

    Kernel IP routing table
    Destination     Gateway      Genmask         Flags Metric Ref Use Iface
    255.255.255.255 *            255.255.255.255 UH    0      0     0 eth1
    192.168.1.0     *            255.255.255.0   U     0      0     0 eth1
    24.65.182.0     *            255.255.255.0   U     0      0     0 eth0
    127.0.0.0       *            255.0.0.0       U     0      0     0 lo
    default         24.65.182.1  0.0.0.0         UG    0      0     0 eth0

  これで、外部ネットワークと内部ネットワーク、ローカルデバイス、特別な
  255.255.255.255ブロードキャストアドレス、デフォルトの経路がインター
  ネットプロバイダのゲートウェイへ向く、などの設定が終りました。完璧で
  す。

  外部ネットワークと、そして内部ネットワークができました。あとは両者の間
  の扉を開けるだけです。ただし最初に、外部から悪い奴等が侵入できないよう
  にしましょう。

  3.4.  安全確保

  ADSLやケーブルでインターネットへ常時接続すると、あなたのコンピュータの
  機密が毎日24時間、週に7日間、潜在的な脅威にさらされるという欠点があり
  ます。Linuxをゲートウェイに採用すると、他のコンピュータを隠すことがで
  きますから、危険は減ります。すくなくとも外部のインターネットから接続で
  きるのは、あなたのLinux ボックスだけです。つまりあなたのネットワークの
  安全性は、Linuxボックスの安全性より高くなることはありません。ここで
  は、あなたのLinuxコンピュータの安全性をさらに高めるための基本的なヒン
  トを2・3紹介します。

  まず、悪い奴等を締め出さねばなりません。ファイル/etc/hosts.denyを編集
  し、以下のようにします。

  #
  # hosts.deny  This file describes the names of the hosts which are
  #             *not* allowed to use the local INET services, as decided
  #             by the '/usr/sbin/tcpd' server.
  #
  #            The portmap line is redundant, but it is left to remind you that
  #        the new secure portmap uses hosts.deny and hosts.allow. In particular
  #             you should know that NFS uses portmap!
  ALL: ALL

  これで、"TCP wrapper"は、すべてのホストからのすべての接続を拒否します
  (ちなみに"TCP wrapper"は外部からの接続の95%を制御しています)。すばらし
  いルールです。しかしこれでは、あなたのホームネットワーク内部からも、
  Linuxコンピュータへ接続できません。これでは困ります。そこで一つの例外
  を設けます。 /etc/hosts.allowを編集し、以下のようにしてください。

  #
  # hosts.allow  This file describes the names of the hosts which are
  #              allowed to use the local INET services, as decided
  #              by the '/usr/sbin/tcpd' server.
  #
  ALL: 127.0.0.1
  ALL: 192.168.1.

  "TCPラッパー"はすべてのサービスについて、ローカルデバイス(127.0.0.1)と
  あなたのホームネットワーク内のすべてのコンピュータ(192.168.1.)からだけ
  接続を許可します。

  これで、頑丈な南京錠をかけて、悪い奴等を締め出しました。もっと守りを固
  めるために鉄格子と警報システムが欲しければ、さらに凝らなければなりませ
  ん。あなたのLinux コンピュータの安全についてもっと学びたいのであれ
  ば、Security HOWTO から始めてみるのが良いでしょう(訳注:和訳もありま
  す)。

  4.  IPマスカレードの設定

  よくできました。準備は完了です。ここからは魔法が始まります。IPマスカレ
  ードは、 Linuxが提供する本当に魔法のようなサービスの一つです。同様の機
  能を持つ商用製品が Windows用にありますが、効率の面では足元にも及びませ
  ん。IPマスカレードなら、骨董品とも言える386マシンで中規模オフィスの
  ネットワーク全体にサービスを提供することができます。しかしWindows
  95は386マシンで動作できませんし、ましてマスカレードパッケージを追加す
  ることなど不可能です(最近 読んだ記事によると、 Windows 2000はアドオン
  ソフトなしで共有接続に対応しています。共有接続用ソフトウェアを売ってい
  た企業はマイクロソフトに包囲されているようです。しかし、 386でWindows
  2000を使うことはお勧めできません)。

  Linuxのファイアーウォーリング機能はとても多様です。ここでは可能な範囲
  で、もっとも単純かつもっとも手を加えない方法で使ってみます。専門家のや
  り方を知りたければ、Firewalling HOWTO(訳注: 和訳あります)とIPChains
  HOWTOを両方 読んでください。前者は理論を説明し、後者は、新しいファイア
  ーウォールのツールで、Linux2.2.Xカーネル(Red Hat6.X)に付属する、
  ipchainsを解説します。またIP Masquerading HOWTO(訳注: 和訳あります) は
  マスカレードの小さな改良について詳細に解説しており、とても良い文書で
  す。

  いちど内部ネットワークと外部ネットワークの運用を始めてしまえば、単純な
  マスカレードの設定は、とても、とても、簡単です。ファイル
  /etc/rc.d/rc.localを編集し、以下の行をファイルの最後に追加してくださ
  い。

  # 1) Flush the rule tables.
  /sbin/ipchains -F input
  /sbin/ipchains -F forward
  /sbin/ipchains -F output
  # 2) Set the MASQ timings and allow packets in for DHCP configuration.
  /sbin/ipchains -M -S 7200 10 60
  /sbin/ipchains -A input -j ACCEPT -i eth0 -s 0/0 68 -d 0/0 67 -p udp
  # 3) Deny all forwarding packets except those from local network.
  #    Masquerage those.
  /sbin/ipchains -P forward DENY
  /sbin/ipchains -A forward -s 192.168.1.0/24 -j MASQ
  # 4) Load forwarding modules for special services.
  /sbin/modprobe ip_masq_ftp
  /sbin/modprobe ip_masq_raudio

  最後の2行はカーネルモジュールを追加し、FTPとRealAudioが内部ネットワー
  クのコンピュータで利用できるようにします。もし必要ならば他にも、いくつ
  かの特別なサービスについて以下のようなモジュールがあり、追加することが
  できます。

  o  CUSeeMe (/sbin/modprobe ip_masq_cuseeme)

  o  Internet Relay Chat (/sbin/modprobe ip_masq_irc)

  o  Quake (/sbin/modprobe ip_masq_quake)

  o  VDOLive (/sbin/modprobe ip_masq_vdolive)

  これでマスカレードを試すことができます。コマンド/etc/rc.d/rc.localでス
  クリプトrc.localを走らせて、準備は完了です。他のコンピュータでウェッブ
  サーフィンをしてみましょう。申し分なく動くはずです。

  5.  障害対応

  このように簡単な文書にしたがっていると、本当に、多くの場面で文書通りに
  進まないことがあります。特別な場合が多くありますからね。可能性として
  は、内部や外部のネットワークデバイスの設定で多くの問題が発生します。こ
  のような問題が発生した人にどこがおかしいか指摘するとともに援助の手をさ
  しのべるため、この文書に情報を追加します。お気軽
  にpramsey@refractions.netへ御連絡ください。

  5.1.  ICQが動作しない

  マスカレード環境でも、一部のICQは正常に動作することがあります。しかし
  それ以外はうまく動作しません。beta quality ICQ moduleが開発中です。マ
  スカレーディング上でICQを動かす際の欠陥について、すべてではありません
  がその一部について取り組んでいます。またソースコードと一緒に配布されて
  いるREADMEファイルには、モジュールのコンパイル方法が書かれています。コ
  ンパイルしインストールしたら、 /sbin/modprobe ip_masq_icqを実行してく
  ださい。

  5.2.  Red Hat 6.XでなくCaldera 2.Xの場合

  まずは、流行になびかないあなたに乾杯。ところでNelson
  Gibbs(ngibbs@pacbell.net) が良いニュースを送ってくれました。Caldera
  2.Xユーザーの皆さんが知っているとお得な情報です。いくつか重要な変更点
  があります。

  1. ファイル/etc/sysconfig/network-scripts/ifcfg-eth0と
     /etc/sysconfig/network-scripts/ifcfg-eth1へGATEWAY=xxx.xxx.xxx.xxxを
     記入してください(内部ネットワークインターフェースのファイルには外部
     ネットワークに接続するインターフェースの IPアドレスを指定し、外部
     ネットワークへ接続するインターフェースのファイルではプロバイダーの
     ゲートウェイのIPアドレスを記入してください)。

  2. またファイル/etc/sysconfig/daemons/dhcpdの中で、eth0でなく eth1とし
     てROUTE_DEVICEを設定してください。

  3. ファイル/etc/dhcpd.confで、どちらのネットワークインターフェースにも
     サブネットを設定してください。もしサブネットの指定が一つしかない
     とDHCPサーバーはエラーを出します。実を言うと、なぜ2番目の記述(オプ
     ションなしの subnet 216.102.154.201 netmask 255.255.255.255 {
     })でDCHPサーバが eth0とeth1で送受信を行うか、きちんと理解していない
     のですが。

  4. /etc/rc.d/init.d/dhcpdスクリプトファイルに host route
     255.255.255.255 を追加しないでください。そしてこのファイル中
     でeth0と書かれている部分をすべてeth1へ書き換えてください。

  5.3.  内部ネットワークのコンピュータをWebサーバーにする

  難しく考えないでください。IPアドレスが静的ならば容易に内部ネットワーク
  のコンピュータをWebサーバーにできます。IPアドレスが動的なときは、アド
  レスが変わったときにそれをポート転送コマンドへ反映させるためスクリプト
  を追加する必要があります。

  ただし、注意してください。外部ポートを内部ネットワークのコンピュータへ
  転送すると、そのコンピュータは外部から見えやすくなります。しかし設定は
  難しくありませんし、性能の低下はほとんどありません。Linuxカーネル
  のIPマスカレード機能を使うと、ネットワーク層でパケットにファンキーな操
  作ができてしまえるという副作用がありますが、その機能を有効に利用するた
  めipmasqadmユーティリティがあります。

  すべてのRed HatやMandrakeでipmasqadmが付属しているわけではありませんの
  で、管理者のWebサイトから持って来る必要があるかも知れません。ソースコ
  ードだけでなくRPMパッケージもあります。

  RPMパッケージをダウンロードしたら、インストールし、以下の行を
  /etc/rc.d/rc.localファイルへ追加してください。

  /usr/sbin/ipmasqadm portfw -f
  /usr/sbin/ipmasqadm portfw -a -P tcp -L x.x.x.x 80 -R 192.168.1.x 80

  最初のコマンドでポート転送ルールを白紙に戻し、2番目のコマンドで外部
  ネットワークに接続しているインターフェースの80番ポートから内部ネットワ
  ークのコンピュータの80 番ポートへ転送するよう設定しています。な
  お、x.x.x.xは外部インターフェースの IPアドレスで、192.168.1.xは内部コ
  ンピュータのIPアドレスです。

  これで、外部から80番ポートへの要求は内部ネットワークのコンピュータ
  の80番ポートへ何事もなく転送されます。ただ、内部ネットワークのコンピュ
  ータからゲートウェイの 80番ポートにtelnetなどで接続して試験することは
  できません。ポート転送は、あくまでも外部インターフェースへの接続にだけ
  機能します。

