<!-- Red Hat Linux 6.X as an Internet Gateway for a Home Network --> 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・基本的なセキュリティについて説明します。 はじめに

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

ケーブルテレビ回線やADSLでインターネットへ常時接続している 最低 1台のコンピュータに、きちんとがインストールされている。なおこの文書は、Macmillan Publishingが様々な名前で配布している (日本ではが 「マイスターLinux Mandrake」という名前で9月から販売しています)など、Red Hat系の ディストリビューションにも有効です。 あなたのLinuxコンピュータに、Linuxで利用可能なネットワークカードが2枚 挿さっている 2台以上のコンピュータでネットワークを構築しているのならばEthernetハブを1台、 また1台のコンピュータだけでならばクロスケーブルを持っている Linuxコンピュータでテキストファイルを編集する方法を知っている rootでログインでき、LinuxのCD-ROMからRPMパッケージをインストールできる

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

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

更新履歴

この文書の最新版は常時、HTML形式ならばで、 SGML形式ならばで、それぞれ得ることが できるはずです(訳注: 日本語訳は で入手できます)。

1999年12月21日 : 第1版 2000年1月2日 : 外部ネットワーク接続で起きる不具合についてJohn Mellorからの 提案を受け入れる 2000年1月22日 : 同じ型のネットワークカードを複数 使用する場合について小さな 修正を行い、Chris LeaからIPエイリアスに関する情報の提供を受ける 2000年3月16日 : Nelson Gibbsから得たネームサーバのセキュリティ情報とCaldera Linux対応について、更新 2000年6月22日 : Red Hat 6.2のコンフィギュレーション時の問題について追加し、 Kerr Firstから情報をもらいPPPoEについて補足

日本語翻訳版の更新履歴は以下の通りです。 2000年7月30日:原文の2000年1月22日版を元に翻訳。 翻訳について、以下の方にコメントを頂きました(順不同、敬称略)。ありがとうございました。 武井 伸光 加茂 智之 Masaharu Goto 森本 淳 konkiti Hiro YAMAZAKI, Ph.D 菊谷 誠 山下 義之 佐野 武俊 羽根 秀也 2000年10月30日:原文の2000年6月22日版を元に翻訳。 翻訳について、以下の方にコメントを頂きました(順不同、敬称略)。ありがとうございました。 武井 伸光 MIZUHARA Bun

著作権

Copyright (C) 2000, Paul Ramsey.

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

全体をコピーする場合でも一部分だけをコピーする場合でも、上記の著作権表示と この複写許可条項を完全な状態で変更なしに含まなければなりません この文書の翻訳や、この文書が元になって生まれた作業の結果を配布する際は、 事前に書面でこの文書の著者に承認を得なければなりません この文書の一部分だけを配布する際は、この文書全体を得る方法をその中に含め、 その手段を提供しなければなりません 批評のための実例や他のプロジェクトで引用するためならば適切な参考文献表示を つけてこの文書の一部だけを、この許可条項なしに複写してかまいません

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

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

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

The copyright notice above and this permission notice must be preserved complete on all complete or partial copies. Any translation or derived work must be approved by the author in writing before distribution. 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. 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.

機器の接続

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

ハブを使う

もしハブがあるならば、あなたのネットワークは になるでしょう。

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

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

ハブを使わない

ハブがなくても、クロスケーブルを使ってあなたのLinuxボックスをもう1台の コンピュータと接続することができます。このトポロジーは になるでしょう。

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

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

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

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

ネットワークカードが1枚だけのときにDHCPサーバを立ち上げることは、 お勧めしません

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

ネットワークの設定

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

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

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

それでは、eth0カードとeth1カードをカーネルが自動的に 認識しているか、見てみましょう。ifconfig eth0ifconfig 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.

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

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

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

カードが最新鋭でドライバーがなければ話は別ですが、一般的にPCIバスの ネットワークカードならば事態は楽観できます。ネットワークカードについて (それ以外のものについてもですが)、しばしば多くの情報が/proc/pci ファイルに記されています。製造元とモデルをメモしてください。 ISAバスのネットワークカードならば、カードが使うIOベースアドレスとIRQが 必要になることがあります。マニュアルがありますね。ありますよね。もしなければ、 製造元のウェッブサイトをのぞいて、オンラインのリファレンスを公開しているか 確認してください。昔のDOS用の設定ディスクがあるならば、DOSを起動して、アドレスと IRQを参照し設定するセットアッププログラムを探してください。 ISAバスのプラグ&プレイカードをお持ちならば、まず設定方法を 学ばなければならないでしょう。を読んでください(訳注:も あります)。さいわい、一度設定したことがあれば、IOベースアドレスとIRQを正確に わかっているでしょう。

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

それでは、設定ファイルを編集しましょう。編集するのは/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の内容を解説すると、

最初の行はパラレルポートをプリンターに使うための設定です。同じような行が あなたのファイルにもあることでしょう。変更しないでください。 第2行目(alias eth0 ne)はカーネルへ、eth0デバイスにneドライバを 使うよう指示しています。 第3行目のoptions ne io=0x300 irq=10はneドライバーへ、ISAカードの IOアドレスとIRQ割込みを通知します。もしISAカードをお持ちならおそらくこのように、 カードに合った正しいドライバーとIO、IRQへ書き換える必要があるでしょう。 第4行目(alias eth1 via-rhine)はeth1にvia-rhineドライバーを 使うようカーネルへ指示しています。私のeth1カードはPCIカードですから、 IOやIRQについての情報を通知する必要はありません。PCIサブシステムが自動的に カードの設定をおこないます。

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

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

同型のネットワークカードが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のものです。

内部ネットワークの設定

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

ネットワークデバイス

ドライバーが正常に動作しifconfigeth0eth1の両方を 確認できるようになりましたので、内部のホームネットワークを立ち上げましょう。 ここでは、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と コマンドを打ち込んでください。

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の設定はこの文書の範囲を越えています。もし必要ならば、 を参照してください(訳注:もあります。 のサイトも 参考になります)。

まだいくつか作業が必要です。次に、/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サーバ は終了します。

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

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ゲートウェイへ向かいます。

クライアントの設定については、(訳注: あります) の(訳注: )にとても詳細な 情報があります。

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

DNSサーバ

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

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

クライアントマシンがキャッシュ用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デーモンにセキュリティの問題がいくつか見つかっています。 ですから、必ず最新バージョンを使ってください。そしてセキュリティを上げるため、 デフォルトの設定からいくつかの点を変更してください。

まずbindのバージョンをチェックし、8.2.2以降であることを確認してください。 そして、 を参照し、最新のバージョンをチェックしてください。 ネームサーバーへの接続をローカルネットワークからに限定するため、 /etc/named.confファイルのforwarders行の後ろへ allow-query { 192.168.1/24; 127.0.0.1/32; };という行を 追加してください。 ネームサーバーを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

内部ネットワークの試験

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

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

外部ネットワークの設定

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

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

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

固定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情報を外部の サーバへ尋ねる前にキャッシュサーバを使うようになります。

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に反応しないような設定になっている場合もあるそうです)。

特殊な場合

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

EthernetでのPPP(PPPoE)

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

Kerr Firstによると、は読んでおくとかなり役立ちます Sympatico用のLinux版PPPoE() ()

特異な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となります。

Road Runner

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

ネットワーク設定の確認

これまでのあなたの努力の成果を見てみましょう。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ブロードキャストアドレス、デフォルトの経路がインターネット プロバイダのゲートウェイへ向く、などの設定が終りました。完璧です。

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

安全確保

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 コンピュータの安全についてもっと学びたいのであれば、 から始めてみるのが良いでしょう(訳注: もあります)。

IPマスカレードの設定

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

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

いちど内部ネットワークと外部ネットワークの運用を始めてしまえば、単純な マスカレードの設定は、とても、とても、簡単です。ファイル /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が内部ネットワークの コンピュータで利用できるようにします。もし必要ならば他にも、いくつかの特別な サービスについて以下のようなモジュールがあり、追加することができます。

CUSeeMe (/sbin/modprobe ip_masq_cuseeme) Internet Relay Chat (/sbin/modprobe ip_masq_irc) Quake (/sbin/modprobe ip_masq_quake) VDOLive (/sbin/modprobe ip_masq_vdolive)

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

障害対応

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

ICQが動作しない

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

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

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

ファイル/etc/sysconfig/network-scripts/ifcfg-eth0/etc/sysconfig/network-scripts/ifcfg-eth1 GATEWAY=xxx.xxx.xxx.xxxを記入してください(内部ネットワーク インターフェースのファイルには外部ネットワークに接続するインターフェースの IPアドレスを指定し、外部ネットワークへ接続するインターフェースのファイルでは プロバイダーのゲートウェイのIPアドレスを記入してください)。 またファイル/etc/sysconfig/daemons/dhcpdの中で、eth0でなく eth1としてROUTE_DEVICEを設定してください。 ファイル/etc/dhcpd.confで、どちらのネットワークインターフェースにも サブネットを設定してください。もしサブネットの指定が一つしかないとDHCPサーバーは エラーを出します。実を言うと、なぜ2番目の記述(オプションなしの subnet 216.102.154.201 netmask 255.255.255.255 { })でDCHPサーバが eth0とeth1で送受信を行うか、きちんと理解していないのですが。 /etc/rc.d/init.d/dhcpdスクリプトファイルに host route 255.255.255.255 を追加しないでください。そしてこの ファイル中でeth0と書かれている部分をすべてeth1へ書き換えて ください。

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

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

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

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

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などで接続して試験することはできません。ポート転送は、 あくまでも外部インターフェースへの接続にだけ機能します。