Linuxサーバー構築標準教科書

Page 1

Linux サーバー構築標準教科書 (Ver1.0.2 ベータ版)


■まえがき このたび、特定非営利活動法人エルピーアイジャパンは、Linux 技術者教育に利用していただくことを目的とし た教材、「Linux サーバー構築標準教科書」を開発し、インターネット上にて公開し、提供することとなりました。 この「Linux サーバー構築標準教科書」は、多くの教育機関から、Linux によるサーバーの構築を「基礎」から学 習するための教材や学習環境の整備に対するご要望があり、開発したものです。

公開にあたっては、「Linux サーバー構築標準教科書」に添付されたライセンス(クリエイティブ・コモンズ・ライセ ンス)の下に公開されています。

本教材は、最新の技術動向に対応するため、随時アップデートを行っていきます。 また、テキスト作成やアップデートについては、意見交換のメーリングリストで、誰でもオープンに参加できます。 メーリングリストの URL

http://list.ospn.jp/mailman/listinfo/linux-text

■執筆者・制作者紹介 岡田 賢治(執筆担当) UNIX/Linux を初めて触ってから 15 年、ユーザー・管理者そして育成に携わってきました。本テキストは、実際 に用いた説明方法などを使い、今までのノウハウを集約して執筆したつもりです。 LPIC を通しての Linux 技術者 の発展と、育成に関わる先生方のお役に立てれば幸いです。

川井 義治(執筆担当) Linux の講義をするとき、多肢に渡る知識と解説が必要で、前後の内容が複雑に絡み合うむため、教材選定に 苦労したり、自作教材を使っていました。今回は、多くの内容の中から実践として使える項目を選び、使いやすい 並びを目指して書きました。学校教材の選択肢の一つや、個人教材として使って頂ければ幸いです。

鎌滝 雅久(スタイル・レイアウト担当) 本教科書は、オープンソースのオフィススイート OpenOffice.org のワードプロセッサ機能を利用して作成しまし た。わたしは書式やレイアウトの管理を簡単に行えるスタイルを担当しました。著者の方々は原稿の執筆に専念で きたのではないでしょうか。OSS の普及に OpenOffice.org が一役買えれば幸いです。

宮原 徹(企画進行担当) 本教科書は、Linux/オープンソースソフトウェアをこれから勉強する皆さんと、熱心に指導に当たられている先 生方の一助になればと思い、作成いたしました。今後、2 度、3 度と改訂を行って、よりよい教科書にしていくため に、使ってみての感想や改善提案などお寄せいただければと思います。

遠山 洋平(校正・図版作成担当) 本教科書の校正にあたっては、Linux のサーバー構築を初めて行う方にもわかりやすいように気をつけました。 本書が一人でも多くの方のためになれば幸いです。


■著作権 本教材の著作権は特定非営利活動法人エルピーアイジャパンに帰属します。 All Rights Reserved. Copyright(C) The Linux Professional Institute Japan.

■使用に関する権利 ●表示

本教材は、特定非営利活動法人エルピーアイジャパンに著作権が帰属するものであることを表示してくださ い。

●改変禁止

本教材は、改変せず使用してください。本教材に対する改変は、特定非営利活動法人エルピーアイジャパン または特定非営利活動法人エルピーアイジャパンが認める団体により行われています。 フィードバックは誰でも参加できるメーリングリストで行われていますので、積極的にご参加ください。 http://list.ospn.jp/mailman/listinfo/linux-text

●非営利

本教材は、営利目的(※)以外で教材として自由に利用することができます。 教材として営利目的での利用は、特定非営利活動法人エルピーアイジャパンによる許諾が必要です。 本教材を利用した教育において、本教材自体の対価を請求しない場合は、営利目的の教育であっても基本 的に使用できます。 その場合も含め、LPI-Japan 事務局までお気軽にお問い合わせください。

(※)営利目的の利用とは以下のとおり規定しております。 営利企業において、当教材の複製を用いた研修や講義を行うこと、または非営利団体において有料セミナー 等に利用すること

本教材の使用に関するお問合せ先 特定非営利活動法人エルピーアイジャパン(LPI-Japan)事務局 〒102-0082

東京都千代田区一番町 15

TEL:03-3261-3660 FAX:03-3261-3661 E-Mail:info@lpi.or.jp

一番町コート 6F


■この教科書の目的 本教科書の目的は、LPIC レベル 2 の 201 試験と 202 試験の学習範囲に含まれる、サーバー構築の知識を、 構築の実習を通しながら学習することにあります。サーバーを構築した環境で、実際に Web アクセスをしたり、 メールの送受信をしたりすることで、サーバーの動作原理やプロトコルの仕組みを理解することも可能です

■想定している実習環境 本書での実習環境として、以下の環境を構築しています。 ●講師と受講生

講師 1 名と受講生が 2 名以上存在すること前提とします。これは、実習のなかで受講生同士 2 名でペアを 組み、お互いの設定したサーバーにアクセスをする作業を行うためです。 ●教室と割当

実習はコンピューターの実習室のような教室で行うことを想定してます。講師の指示に従いながら、受講生が 実習をする形式になります。 マシンは、講師・受講生に各名 1 台ずつを想定しています。 ●1 名で学習する場合

1 名で学習する場合は、最低 PC は 3 台必要になります。講師用 PC1 台と受講生用 PC2 台です。講師用 PC には、特別な設定を行います。 ●マシンの構成と HDD

マシンの構成は、市販されている一般的な構成の PC を想定しています。その PC に Linux をインストールし ます。よって、HDD の内容は完全にクリアされます。そのため HDD の中を消してよい PC を用意するか、 HDD の中身をあらかじめバックアップしておく必要があります。 ●OS

本書では、CentOS のバージョン 5.2 を利用します。本書では Linux と表記しているものに関しては全てこの OS とバージョンのこととします。 ●ネットワーク

利用する PC は、ネットワークで接続されていることが前提とします。また、ネットワークはすべての PC が 1 つ のネットワークに属していることを前提にしています。 ●仮想環境

複数台の環境が用意できない場合は仮想環境を使う方法もあります。 仮想環境とは Windows や Mac OS X 上で PC をエミュレートし、稼働している OS 上にあたかも別のマシ ンが動作しているかの様に振る舞うもので、たとえば VMware 社の VMware Workstation(Windows)や VMware Fusion(Mac OS X)、Parallels 社の Parallels Desktop(Mac OS X)や VirtualBox、QEMU 等があげられます。 これらのソフトウェアの中には、同時に複数起動できるものがあります。複数起動したマシンそれぞれを実習 用環境の PC と見なし、実習を行うことも可能です。


■全体の流れ ●本書の構成

本書では、以下の通りに実習を進めます。 1章

Linux のインストール準備と事前学習を行う。

2章

Linux のインストールと設定を行う。

3章

ネットワークの設定と確認を行う。

4章

DNS サーバーのインストールと設定を行う。

5章

Web サーバーのインストールと設定を行う。

6章

メールサーバーのインストールと設定を行う。


目次 1 章 Linux のインストール準備と事前学習を行う........................................................................................................1 1.1 OS の環境.............................................................................................................................................................4 1.1.1 利用する Linux のディストリビューション................................................................................................4 1.1.2 インストール DVD の入手方法..................................................................................................................4 1.1.3 バージョン.....................................................................................................................................................5 1.2 ネットワーク環境について.....................................................................................................................................6 1.2.1 ネットワーク環境...........................................................................................................................................6 1.3 ハードウェア...........................................................................................................................................................8 1.3.1 実習で利用するハードウェア......................................................................................................................8 1.4 高度なストレージ管理..........................................................................................................................................9 1.4.1 LVM..............................................................................................................................................................9 1.4.2 LVM の仕組み..........................................................................................................................................10 1.4.3 LVM の利点..............................................................................................................................................11 1.5 RAID...................................................................................................................................................................12 1.5.1 RAID とは..................................................................................................................................................12 1.5.2 RAID の種類.............................................................................................................................................12 1.5.3 ハードウェア RAID とソフトウェア RAID...............................................................................................13 1.6 高度なストレージの利用....................................................................................................................................14 2 章 Linux のインストール.............................................................................................................................................15 2.1 インストールの前に............................................................................................................................................17 2.1.1 用意するもの.............................................................................................................................................17 2.1.2 コンピューターの設定...............................................................................................................................17 2.1.3 HDD...........................................................................................................................................................17 2.2 インストールの開始............................................................................................................................................18 2.2.1 実習............................................................................................................................................................18 2.3 インストール直後の起動....................................................................................................................................28 2.3.1 実習............................................................................................................................................................28 3 章 ネットワーク..............................................................................................................................................................35 3.1 ネットワークの確認と設定.................................................................................................................................38 3.1.1 ネットワーク・インターフェースの確認.....................................................................................................38 3.1.2 ネットワーク・インターフェースの設定ファイルの確認..........................................................................39 3.1.3 ネットワーク・インターフェースの再設定.................................................................................................41 3.1.4 ネットワーク・インターフェースの動作確認............................................................................................42 3.1.5 ローカル・ループバック・アドレスと名前の対応を確認.........................................................................43 3.1.6 物理ネットワーク・インターフェースの IP アドレスと名前の対応を確認.............................................44 3.1.7 サービスのポート番号を確認..................................................................................................................45 3.2 Web サーバーの動作確認................................................................................................................................47 3.2.1 Web サーバーを開始...............................................................................................................................47 3.2.2 ブラウザーで確認......................................................................................................................................47 4 章 DNS サーバーの構築............................................................................................................................................49 4.1 DNS の仕組み...................................................................................................................................................51


4.2 これから構築する DNS の概略........................................................................................................................53 4.2.1 アドレス解決の流れ..................................................................................................................................55 4.3 chroot 機能を利用した BIND のセキュリティ...............................................................................................56 4.4 ドメイン情報を登録.............................................................................................................................................57 4.4.1 必要なパッケージを確認..........................................................................................................................57 4.4.2 必要なパッケージをインストール.............................................................................................................57 4.4.3 chkconfig で起動時の設定...................................................................................................................58 4.4.4 ドメインを設定する流れ............................................................................................................................58 4.4.5 正引きのゾーンを追加..............................................................................................................................59 4.4.6 BIND を起動.............................................................................................................................................61 4.4.7 nslookup コマンドで名前を確認............................................................................................................63 4.4.8 dig コマンドでドメインを確認...................................................................................................................64 4.5 ドメイン情報を公開.............................................................................................................................................66 4.5.1 ドメイン情報を公開してもらう...................................................................................................................66 4.5.2 JP ドメインのサーバーを再起動..............................................................................................................68 4.5.3 JP ドメインサーバーを登録......................................................................................................................69 4.5.4 nslookup コマンドで JP ドメインサーバーへドメインを確認................................................................69 5 章 Web サーバーの構築............................................................................................................................................71 5.1 Web サーバーの簡単な仕組み........................................................................................................................73 5.2 これから構築する Web サーバーの概略........................................................................................................74 5.2.1 必要なパッケージを確認..........................................................................................................................75 5.2.2 chkconfig で起動時の設定...................................................................................................................75 5.2.3 設定ファイルファイルを確認....................................................................................................................76 5.2.4 テストファイルを作成................................................................................................................................77 5.2.5 Apache を起動.........................................................................................................................................77 5.2.6 Web ブラウザーで自分のアドレスを確認...............................................................................................78 5.2.7 名前解決に DNS を使用しない設定......................................................................................................79 5.3 ページが見つからないとき................................................................................................................................80 5.3.1 ログファイルを確認...................................................................................................................................81 5.4 アクセス制御.......................................................................................................................................................82 5.4.1 アクセス制御を設定..................................................................................................................................82 5.4.2 テストファイルを作成................................................................................................................................83 5.4.3 制限がかかっていないことを Web ブラウザーで確認..........................................................................83 5.4.4 Apache を再起動.....................................................................................................................................83 5.4.5 Web ブラウザーで自分のアドレスを確認...............................................................................................84 5.4.6 ログファイルを確認...................................................................................................................................84 5.5 PHP 言語を使えるようにする...........................................................................................................................85 5.5.1 php5 モジュールに必要なパッケージを確認........................................................................................85 5.5.2 php5 モジュールをインストール.............................................................................................................85 5.5.3 設定ファイルファイルを確認....................................................................................................................86 5.5.4 Apache を再起動.....................................................................................................................................86 5.5.5 サンプルプログラムを作成.......................................................................................................................86 5.5.6 Web ブラウザーで自分のアドレスを確認...............................................................................................87 5.6 バーチャルホストを作る.....................................................................................................................................88 5.6.1 IP アドレスと名前の確認..........................................................................................................................88 5.6.2 バーチャルホストの設定...........................................................................................................................88 5.6.3 テストファイルを作成................................................................................................................................89


5.6.4 Web ブラウザーで自分のアドレスを確認...............................................................................................90 5.6.5 ログファイルを確認...................................................................................................................................91 6 章 メールサーバーの設定...........................................................................................................................................93 6.1 メールサーバー実習の説明.............................................................................................................................95 6.1.1 メールとメールサーバー...........................................................................................................................95 6.1.2 メールのやり取り.......................................................................................................................................96 6.1.3 実習の進め方............................................................................................................................................97 6.1.4 実習後の注意点.......................................................................................................................................98 6.2 実習で使用するソフトウェアについて.............................................................................................................99 6.2.1 Sendmail..................................................................................................................................................99 6.2.2 sendmail.cf と.mc ファイル....................................................................................................................99 6.2.3 mail コマンド..............................................................................................................................................99 6.2.4 Dovecot....................................................................................................................................................99 6.2.5 Thunderbird............................................................................................................................................99 6.2.6 saslauthd..................................................................................................................................................99 6.3 実習...................................................................................................................................................................100 6.3.1 実習の環境.............................................................................................................................................100 6.3.2 Sendmail 関連パッケージの追加.......................................................................................................100 6.3.3 設定ファイルの変更...............................................................................................................................101 6.3.4 メールの送受信......................................................................................................................................102 6.4 メールクライアントソフトでのアクセス............................................................................................................105 6.4.1 メールクライアントを使った実習...........................................................................................................105 6.4.2 パッケージの追加...................................................................................................................................106 6.4.3 Dovecot の設定....................................................................................................................................106 6.4.4 Thunderbird の設定............................................................................................................................107 6.4.5 メールのやり取りをする..........................................................................................................................112 6.4.6 まとめ........................................................................................................................................................113


1章 Linux のインストール 準備と事前学習を行う この章の狙い

本書では、Linux をインストールし、サーバー環境を構築する実習 をしながら、LPIC201/202 の範囲の理解と取得を目指します。第 1 章では、2 章以降に行う実習に必要な、環境の確認と知識の確 認を行います。

この章の流れ 1.1 OS の環境 1.2 ネットワーク環境について 1.3 ハードウェア 1.4 高度なストレージ管理


1章

Linux のインストール準備と事前学習を行う

■ 用語集 ●Linux

Linus Torvalds 氏により開発された、UNIX 系 OS です。ソースコードが公開され、世界中の開発 者の協力により、開発が行われています。 ●ディストリビューション

Linux は OS の中心部(=カーネル)のみでした。それ以外の、Linux が UNIX 系 OS として機能す るための、さまざまなソフトウェアやインストーラを追加して、利用できるようにしたのがディストリ ビューションです。ディストリビューションごとに運営方針があり、それに沿ってソフトウェアがまとめら れたり、リリースが行われています。 ●CentOS

Linux のディストリビューションの 1 つです。Red Hat Enterprise Linux という商用のディストリ ビューション互換の環境を無償で提供しているディストリビューションで、 CentOS コミュニティに よってリリースされています。 ●ネットワークアドレス

IP ネットワークを小さく分割して利用するときに、ネットワークアドレス部とホストアドレス部に分かれ ます。ネットワークアドレスの識別に利用されるのが、ネットワークアドレス部です。 ●IP アドレス

インターネットにおいて、IP で通信が行われる場合、端末一つ一つに IP アドレスが割り当てられま す。IP アドレスとはインターネット上での端末の所在地を示す”住所”にあたります。 ●サブネットマスク

IP アドレスのうちネットワークアドレスとホストアドレスを識別するための数値のことを言います。通常 8 ビット毎に.(ドット)で区切って入力されます。 ●DNS サーバーアドレス

IP アドレスと FQDN(=ホスト名+ドメイン名)の変換を行うのが DNS サービスであり、そのサービ スを提供する DNS サーバーの IP アドレスのことです。 ●ホスト名

ネットワークに接続されたコンピューターに割り当てられた名称のことを言います。特定のホストを識 別するために使われます。 ●ドメイン名

インターネット上に存在するコンピューターやネットワークを識別するために付けられている名前の一 種のことを言います。ドメイン名はアルファベット、数字、一部の記号の組み合わせで構成されます が、日本語.jp のような国際化ドメインも使われるようになって来ています。

1-2


1章

Linux のインストール準備と事前学習を行う

●DVD

光学メディアの 1 種類で、ビデオ再生での利用で普及し、現在ではデータ記録の用途でも利用され ている。約 700MB の CD-ROM に比べ、約 4.7GB と大容量でも利用できることから、OS のインス トールディスクとしても利用されています。 ●HDD

磁気を用いた記憶媒体であり、パソコンの記憶媒体他、音楽プレーヤ・ビデオなどの記憶媒体として も用いられています。 ●LVM

LVM(logical volume manager)とは,複数のハード・ディスクやパーティションにまたがった記憶 領域を一つの論理的なディスクとして扱うことのできるディスク管理の機能のことです。Linux をはじ めとした UNIX 系 OS 上で利用できます。 ●RAID

複数のハードディスクをまとめて 1 台のハードディスクとして管理する技術のことで、1987 年カリ フォルニア大学バークリー校の David A.Patterson 氏、Garth Gibson 氏、Randy Katz 氏の 3 人 によって提唱されました。 RAID を使うことによりデータを分散して記録するため、高速化や安全性の向上が 期待できます。 RAID の方法には、専用のハードウェアを使う方法(ハードウェア RAID)とソフトウェアで実現する方 法(ソフトウェア RAID)があり、高速性や安全性のレベルにより、RAID 0 から RAID 5 まで 6 つのレ ベルがあります。

1-3


1章

Linux のインストール準備と事前学習を行う

1.1 OS の環境 1.1.1 利用する Linux のディストリビューション 利用する OS は、Linux のディストリビューションである、CentOS を利用します。バージョンは 5.2 を利用 します。 ■ CentOS 公式サイト

http://www.centos.org/ CentOS は、大手商用ディストリビューションである Red Hat の互換ディストリビューションとして提供さ れ続けています。本家 Red Hat とのバイナリ互換を保ちながら、サポートも同等を目指すという方針で開 発されています。利用に際し、費用が発生することはない、無償で提供されている OS です。

1.1.2 インストール DVD の入手方法 今回インストールには、DVD のインストーラーを利用します。CentOS のインストール用 DVD の入手方 法には次の 2 通りが存在します。 ■ ISO イメージをダウンロードする

CentOS が配布している ISO イメージを、ダウンロードします。ダウンロード元の URL は以下のとおりで す。CentOS の最新版の、ISO イメージのページへのリンクになっています。 http://isoredirect.centos.org/centos/5/isos/i386/

図 1-1: ISO イメージの配布をしている公式サイト

1-4


1.1 OS の環境 この URL をクリックすると、多くのミラーサイトが表示されます。その中でバージョン 5.2 の ISO イメージ をダウンロードします。例えば、riken(理化学研究所)が提供しているミラーサイトの URL であれば次のよ うになります。 http://ftp2.riken.jp/Linux/centos/5.2/isos/i386/CentOS-5.2-i386-bin-DVD.iso ISO イメージは合計で 3.7GB あります。転送に時間がかかりますので、注意してください。またミラーサイ トによっては、複数枚の CD の ISO イメージはあるものの、DVD の ISO イメージを置いていないサイトも 存在します。サイトを選ぶときは注意してください。 ダウンロードした ISO イメージは、DVD のライティングソフトウェアを使って DVD に焼いてください。デー タとしてではなく、イメージとして書き込む点に注意してください。 ■ 雑誌や解説書の付録

CentOS は雑誌に付属していたり、CentOS の解説書が多く出版されています。それらに付属しているイ ンストール DVD を利用してもかまいません。

1.1.3 バージョン 本書では、CentOS 5.2 を利用した構築方法について解説しています。雑誌や解説書などの付録など、入 手の方法によっては 5.2 ではないバージョンの CentOS を手にすることがあるかもしれません。しかし、 バージョン 5.x 系であれば、大きな差は無いようです。従って CentOS の 5.x 系であれば本書の学習はそ のまま利用できると判断できます。

1-5


1章

Linux のインストール準備と事前学習を行う

1.2 ネットワーク環境について 1.2.1 ネットワーク環境 本書での実習で、ネットワークを利用します。ネットワークは、利用する環境により異なります。設定項目の 内容として、数点確認する必要がありますので、別紙「確認シート」を作成しながら設定を行いましょう。 利用するネットワークの割り当てが、組織のネットワーク管理担当者から指示されている場合は、その旨を 「確認シート」に記述してください。本書では特定の IP アドレスを用いて設定しますが、それを適宜自分の 環境に読み替えてください。 逆に、自由に設定できる状態になっている場合は、本書で用いているネットワークの設定を施すと良いで しょう。ネットワークの環境としては、1 つのコンピューター実習教室を想定しています。その部屋には、PC が最低 3 台以上あり、講師用 PC が 1 台と受講生用 PC が 2 台以上あるとします。ネットワークは、講師 用・受講生用 PC の区別無く、すべての PC が 1 つのネットワークに接続されていることを想定していま す。 ■ ネットワークアドレス

ネットワークアドレスは、PC の IP アドレスとそれを含むネットワークのアドレスを示します。設定項目は次の 3 つです。 ●ネットワークアドレス ●IP アドレス ●サブネットマスク

ネットワークアドレスは、PC が含まれているネットワークのアドレスです。ネットワークアドレスについては、 講師の指示に従ってください。本書では 192.168.1.0 とします。確認のため「確認シート」に記述してくだ さい。 IP アドレスは、PC の IP アドレスです。これも講師の指示に従ってください。本書では、講師用 PC の IP ア ドレスを 192.168.1.10、受講生用 PC の IP アドレスを 192.168.1.101~192.168.1.254 までとしてい ます。座席の列や、PC の通し番号と関連させるなど、わかりやすい番号にすると便利でしょう。確認のため 「確認シート」に記述してください。 サブネットマスクは、IP アドレスのネットワーク部とホスト部を分ける値です。講師から教えてもらってくださ い。本書では 255.255.255.0(/24)とします。確認のため「確認シート」に記述してください。 ■ デフォルトゲートウエイ

同じサブネット内での通信には必要のない値ですが、これについても講師の指示に従ってください。本書 では 192.168.1.1 とします。確認のため「確認シート」に記述してください。

1-6


1.2 ネットワーク環境について

■ DNS サーバーアドレス

ホスト名と IP アドレスの対応を解決する、DNS(ドメインネームシステム)という機構があります。DNS を 利用するためには DNS サーバーの IP アドレスが必要です。本書では 4 章で、実際に DNS サーバーを 設定し動作させます。本書の実習では、それを参照するため、DNS サーバーアドレスを自分の IP アドレス とします。確認のため「確認シート」に記述してください。 ■ ホスト名

自分の PC に設定するホスト名です。今回は host とします。確認のため「確認シート」に記述してくださ い。 ■ ドメイン名

ドメイン名は、DNS サーバーを設定するときに必要になります。受講生同士が同じドメイン名にならなけれ ば、各自自由なドメイン名をつけてかまいません。 このドメイン名は、あくまでこのネットワーク内のみで有効なドメイン名で、外部の DNS とは隔離された状 態にあります。本書では、domXX.jp(XX は IP アドレスの第 4 オクテット、192.168.1.101 であれば、 dom101.jp といった具合)とします。確認のため「確認シート」に記述してください。

1-7


1章

Linux のインストール準備と事前学習を行う

1.3 ハードウェア 1.3.1 実習で利用するハードウェア 本書の実習では、市販されてるような一般的な構成の PC に Linux を導入して、その環境上に様々なサー バーを導入し実際に動作させます。この実習で必要な、ハードウェアの仕様は次の通りです。 ■ 本体

Windows や Linux が動作する、いわゆる「パソコン」を想定しています。 ■ DVD 光学ドライブ

本書の実習では、インストール用 DVD を利用するので、その光学ドライブが DVD を読み取りできる必要 があります。 また一部のノートパソコン等で、光学ドライブが無いマシンもあります。そういったときは、USB 等で接続す る DVD ドライブを用意してください。それを利用することにより、インストール DVD を起動することができ ます。 ■ ハードディスクドライブ(HDD)

Linux をインストールするためには記憶装置が必要です。ここでは記憶装置として HDD を使います。イン ストールにはハードディスクに約 10GB の空き領域があれば十分なので、一般的な構成の PC では十分 満たしていると思います。 また HDD をフォーマット(初期化)して Linux をインストールします。従って、HDD の中身は全部消去さ れます。その為、HDD を削除していい PC を利用するか、バックアップを取ってから作業を行ってください。 ■ その他周辺機器

本体や DVD、光学ドライブ、ハードディスクドライブの他にも、一般的に利用するためにはキーボード・マウ ス・ディスプレイ等の周辺機器が必要です。 キーボードは、日本語か英語かで設定が異なりますので、日本語キーボード・英語キーボードの区別を「確 認シート」に記述してください。

1-8


1.4 高度なストレージ管理

1.4 高度なストレージ管理 ここでは、高度なストレージ管理として LVM(Logical Volume Manager)と RAID(Redundant Arrays of Inexpensive Disks)について説明します。インストールを開始すると、LVM の設定が施されるところ があり、それについての説明です。少々高度な内容になるため、インストール作業後に読んでもかまいませ ん。

1.4.1 LVM Logical Volume Manager(LVM)という機構は、一言で言えば「ディスク管理操作を非常に便利にして くれる機構」と言えます。 HDD を利用する際には、多くの場合 HDD を分割して利用します。この分割した領域のことを「パーティ ション」と呼びます。Windows のみならず、Linux でもパーティションを分割する作業を行います。 パーティション分割作業は、容量を決めるのに非常に困難が伴います。「思ったより利用が多く、足りなく なってしまった」「念のため多めにパーティションを割り当てたら、あまり利用されず、大半が未使用になって しまった」といった具合です。 だからといって、パーティションを再分割することは非常に手間がかかります。HDD の内容を、一度全部 消してしまうからです。再度インストール作業を行なった後、設定を行い、データを復元する作業は、相当な 時間や手間を使います。 LVM を用いると、パーティションを柔軟に取り扱うことが出来ます。どのような仕組みになっているのか、次 で説明します。

1-9


1章

Linux のインストール準備と事前学習を行う

1.4.2 LVM の仕組み LVM の仕組みは、次のようになっています。

図 1-2:LVM の仕組み

PV(Physical Volume)・・・ディスクの物理領域です。パーティションの 1 区画であったり、ディスク 1 台 丸ごと PV ということもありえます。 VG(Volume Group)・・・一つ以上のの PV を集めてできたのが Volume Group です。 LV(Logical Volume)・・・VG から、領域を切り出して利用します。その切り出した領域のことを LV といい ます。LV は、大きさを自由に増やしたり減らしたりすることが可能です。LV の容量の合計が、切り出し元 の VG より大きくなることはありません。 OS から、ディスクとして実際に書き込むのは LV の領域にあたります。従って、LV の領域をフォーマットし て、そこにデータが置かれます。

1-10


1.4 高度なストレージ管理

1.4.3 LVM の利点 LVM を用いると、どんな点が便利なのでしょうか?実際にケーススタディで学習してみましょう。 ■ ディスク領域が足りなくなった

LV に保存したデータが増加し、割り当てた LV の容量では足りなくなったとします。そのときは、LV の大き さを増やします。フォーマットしているファイルシステムによっては、OS を止めることなくファイルシステムを 増やすことも可能です。 逆に大きく切り出しすぎて、余ってしまったということもありえます。そのときは、ファイルシステムを縮めた 後 LV を小さくします。これで VG の未使用領域が増え、他の LV を増やしたり、新しく LV を切り出したり するときに利用できます。 ■ HDD を増設したい

LV の利用率も増え、その元である VG の空き容量が少なくなったとします。そのときは、HDD を増やし増 設しますが、LVM を用いると作業は簡単です。 HDD を取り付けて、その HDD を PV とします。その PV を VG に追加すると、VG 全体の容量が増えま す。増えた VG から新しく LV を切り出したり、既存の LV のサイズを増やしたりすることに利用できる、領 域を増やすことが出来ます。

1-11


1章

Linux のインストール準備と事前学習を行う

1.5 RAID 1.5.1 RAID とは RAID とは Redundant Arrays of Independent Disks の略で、ディスクの耐障害性を高めたり、機能 を高めたりすることに用いられます。重要なデータを置いておく場合や、ディスクのアクセス性能を上げた い場合に利用します。

1.5.2 RAID の種類 RAID にはその機能でさまざまな種類があります。ここでは広く用いられる RAID 0,1,5 について説明しま す。 ■ RAID 0(ストライピング)

複数台のディスクをまとめて、見た目は 1 台のディスクにします。そのため、ディスクの容量が増えます。ま た、書き込み時にそれぞれのディスクに分散書き込みを行いますので、書き込みのための時間を大幅に減 らすことができます。 欠点は、すべてのディスクを同時に利用しているので、1 台でもディスクが壊れると元データを復元できな いことにあります。 ■ RAID 1(ミラーリング)

ディスクを 2 台用意し、内容をミラーします。見た目は 1 台ですが、書き込みが発生したら 2 台に書き込み ます。従って、片方が壊れてももう片方が正常であれば、データを失うことがありません。これにより、ディス クの障害に強い構成を実現できます。片方が壊れた場合、壊れたディスクを新しいものと入れ替え、再度ミ ラーを行うことにより、内容を復元できます。 欠点は、利用できる容量が総容量の半分になってしまうことです。例えば容量 100GB のディスクを 2 台 用意しても、使用できる容量は 100GB のままです。 ■ RAID 5(パリティ分散)

パリティという特別な考え方を用いることで、ディスクの冗長化を図っています。RAID 5 には 3 台以上の ディスクが必要ですが、どのディスクであっても 1 台の故障であれば、データを失うことはありません。その ディスクを交換しリビルドすることで、引き続き RAID 5 での運用ができます。RAID 1 で問題になった容 量ですが、RAID 5 はディスク容量 × (台数-1)の容量が使えますので、ディスクの利用効率も良いこ とになります。 欠点はデータの書き込み時には、パリティを算出・生成する必要があるほか、パリティ生成のため 1 組の データ・ブロックをいったんディスクから読み出さなければならず、オーバーヘッドが大きいという仕様か ら、RAID 5 の書き込み性能は決して高くはない点、故障に耐えられるディスクが 1 台までなので、運悪く 2 台以上同時に壊れると元データの復元ができないといった点が挙げられます。

1-12


1.5 RAID ■ その他の RAID

RAID には、他にも 2,3,4 がありますが、あまり使われていません。また、RAID 6 という機構があり、まだ高 価ですが最近使われてきています。RAID 6 は、パリティの算出・生成を RAID5 のそれと別の形式にし、 ディスクが 2 台まで故障してもデータの損失にはならず、RAID 5 の欠点を補っています。 そして RAID 10 という機構もあります。これは、RAID 1+0 と記述することもあり、文字通りミラーしたディ スク(RAID 1)をストライピングする(RAID 0)といった仕組みで、RAID 0 と RAID 1 の機能を合わせるこ とで、お互いの弱点を補っています。

1.5.3 ハードウェア RAID とソフトウェア RAID RAID ではハードウェア RAID とソフトウェア RAID が存在します。 ハードウェア RAID は、RAID の処理をハードウェアが行います。従って、OS・マザーボード側から見ると、 ディスクが 1 台存在しているように見えるだけです。RAID コントローラは OS・マザーボードにディスクが 1 台と「見せかけながら」、その背後で RAID の処理を行っています。 利点としては、見かけがディスクなので、特別なドライバーが必要ないことと、OS・ハードウェアに負荷がか からないことです。欠点として、特別なコントローラが必要であるため、費用がかかる点にあります。 ソフトウエア RAID は、OS やドライバーが RAID 作業を行います。ソフトウェア RAID は特別なコントロー ラが必要ではないため、コストを抑えることが出来ますが、逆に OS の対応やドライバーの存在が必要であ ることや、ハードウェア RAID と比べて OS・ハードウェア(特に CPU)に負荷がかかることが欠点として挙 げられます。

1-13


1章

Linux のインストール準備と事前学習を行う

1.6 高度なストレージの利用 高度なストレージとして、LVM と RAID を紹介しました。ではどのような場面で利用するのが好ましいで しょうか? Linux では(後に紹介しますが)、ディレクトリがパーティションになります。/var と/home というディレクト リが存在します。 /var には、さまざまな作業記録や実行ファイル、メールのデータもこの中におかれます。/home は、ユーザ が作成したデータが置かれます。この 2 つのディレクトリは非常に重要であり、なおかつ利用量が非常に 変化しやすいディレクトリなので、このようなディレクトリを LVM や RAID を用いて冗長化されるよう構成 することが望ましいと言えます。

1-14


2章 Linux のインストール この章の狙い

本章では、実習を行います。実際にインストールを行いながら、設 定を行います。内容はインストールと設定だけですが、次章につな がる重要な内容ですので、しっかり学習しましょう。

この章の流れ 2.1 インストールの前に 2.2 インストールの開始 2.3 インストール直後の起動


2章

Linux のインストール

■ 用語集 ●メディアの整合性

作成されたメディアが、配布されたオリジナルの内容と違いが無いかどうかはメディアの整合性が取 れているかどうかで確認できます。何らかの原因により整合性が取れていない場合、ソフトウェアのイ ンストールに失敗してしまいます。CentOS ではインストール手順の開始時、メディアの整合性が取 れているかどうかチェックが行えるようになっています。 ●BIOS

PC の周辺機器を制御するプログラムのことを言います。PC には必ずこの BIOS が内蔵され、BIOS が起動後、OS が起動します。内蔵の時計や、起動デバイスの選択等を設定できる。設定は、マザー ボード上のフラッシュメモリに保存されています。 ●起動順序

どの記憶装置から OS を起動するか、起動デバイスの優先順位をつけることを言います。 BIOS で設 定することができます。HDD 他 CD/DVD 等の光学ドライブ、USB のストレージデバイス、FDD 等 を選ぶことができます。 ●Timezone/時間帯

Linux の動作時に、時刻を設定します。通常の時刻を設定するほか、そのマシンが起動している場所 の時間帯を設定出来ます。日本で動作させるときは、日本標準時(=JST)に設定します。 ●フォーマット

HDD 等を OS で読み書きできる状態にすることを言います。初期化ともいいます。フォーマットを実 行すると、ディスクのデータはすべて削除されます。 ●ファイアウォール

インターネットにコンピューターを直接接続すると不正にアクセスされるおそれがあるため、ファイア ウォールを構築します。ファイアウォールを動作させることで、ネットワークのセキュリティ機能を高める ことができます。通常の利用では有効化することが推奨されます。 ●SELinux

Linux 上に特別なセキュリティ機能を導入し、Linux の標準機能よりも高度なセキュリティを機能さ せることができます。ファイアウォール同様、有効化することが推奨されます。

2-16


2.1 インストールの前に

2.1 インストールの前に 2.1.1 用意するもの ■ 確認シート

インストールの前に、1 章で記入した「確認シート」を手元に用意してください。この内容を確認しながら、イ ンストール作業を行います。 ■ インストール DVD

CentOS 5.2 のインストール DVD を用意してください。

2.1.2 コンピューターの設定 インストールを開始するにあたり、コンピューターの設定を確認してください。確認する内容は、 BIOS で設 定する「起動順序」です。起動順序を、必ず光学ドライブ優先にしてください。光学ドライブより HDD の優 先度が高いと、HDD にインストールされている OS が起動してしまいます。

2.1.3 HDD この本書に従い、CentOS をインストールすると HDD の中身は消えてしまいます。従って HDD の中身を 削除して良い PC を利用するか、HDD の中身のバックアップを取ってから作業を行うようにしてください。

2-17


2章

Linux のインストール

2.2 インストールの開始 2.2.1 実習 それでは、インストールを開始します。インストール DVD をセットし、マシンを起動してください。

①起動画面が現れます。「boot:」と表示されるので、エンターキーを押してください。しばらくそのままにし ても、自動的に動作します。「CD Found」のダイアログが現れます。メディアの内容の整合性をチェック します。チェックにはしばらく時間がかかります。チェックをする場合は「OK」、しない場合は「Skip」を選 択してください。

図 2-1:インストール DVD の起動画面

図 2-2:メディアの統合性のチェック

2-18


2.2 インストールの開始

少々待つと、GUI のインストーラーが起動します。 ②インストーラーのトップ画面が表示されますので、右下の「Next」を押してください。

図 2-3:インストール開始の画面

③インストール時に利用する言語を選択します。「Japanese(日本語)」を選択し、右下の「Next」を押して ください。

図 2-4:言語選択の画面

2-19


2章

Linux のインストール

④キーボードの選択画面が現れます。確認シートから、キーボードの種類を確認してください。日本語キー ボードのときは「日本語」、英語キーボードのときは「英語(アメリカ合衆国)」を選択し、右下の「次」を押 してください。

図 2-5:キーボード選択の画面

2-20


2.2 インストールの開始

⑤HDD をフォーマットする方法を尋ねられます。「選択したドライブ上のすべてのパーティションを削除し てデフォルトのレイアウトを作成します。」を選択してください(リストボックスで選択できる 4 つの一番上 の部分)。HDD が未フォーマットのときは「パーティションが見つかりません」という旨のダイアログが現 れます。 右下の「次」を押してください。

図 2-6:インストールするドライブについての画面

⑥パーティションの内容を全部削除する旨の、確認のためダイアログが出ますので「はい」を押してくださ い。

図 2-7:データ削除の確認画面

2-21


2章

Linux のインストール

ネットワークの設定画面が現れます。 ⑦eth0 が選択されている状態で「編集」を押してください。

図 2-8:インターフェースの設定画面

「Edit Interface」のダイアログが現れます。 「Enable IPv4 support」の下の「Manual configuration」のボタンを選択してください。「IP Address」 と「Prefix(Netmask)」のテキストボックスが入力可能になります。それぞれ、確認シートの「 IP アドレス」と 「サブネットマスク」を入力してください。 その下の「Enable IPv6 support」の選択を外してください。 右下の「OK」を押してください。

2-22


2.2 インストールの開始

図 2-9:IP アドレスの設定

⑧先ほどのネットワークの設定画面で、ホスト名が「手動設定」で選択できるようになっています。 「ゲートウエイ」には、確認シートの「デフォルトゲートウエイ」の IP アドレスを記述します。 「1 番目の DNS」には、確認シートの「DNS サーバーアドレス」の内容を記述します。「Edit Interface」で 設定した「IP Address」と同じ自分自身の IP アドレスを設定します。 右下の「次」を押してください。

図 2-10:インターフェイスの設定画面2

2-23


2章

Linux のインストール

⑨時間帯を設定します。「アジア/東京」が選択されていることを確認し、「システムクロックで UTC を使 用」のチェックを外して、右下の「次」を押してください。

図 2-11:時間帯/Timezone の設定

「システムクロックで UTC を使用」でチェックをはずすのは、 PC が持つ内部時計(=BIOS の時計)を UTC(=世界標準時)とみなしてしまうためです。多くの場合、内部時計は現在の時刻を現在の時間帯 (=日本では JST)で設定されているので、UTC と見る機能を OFF にするため、チェックをはずします。

2-24


2.2 インストールの開始

⑩root のパスワードを尋ねられますので、パスワードを入力して右下の「次」を押してください。

図 2-12:root パスワードの設定画面

⑪インストールするソフトウェアのグループを設定します。「 Desktop – Gnome」が選択されていると思い ますので、そのままの状態で「次」を押してください。

図 2-13:デフォルトのソフトウェアの設定

2-25


2章

Linux のインストール

⑫インストール開始確認の画面が現れます。右下の「次」を押して、インストールを開始してください。

図 2-14:インストール開始の画面

⑬HDD をフォーマットし、インストールが開始されます。

図 2-15:インストール中の画面

2-26


2.2 インストールの開始

⑭インストールが終了すると、再起動が要求されます。右下の「再起動」を押してください。

図 2-16:再起動の要求の画面

再起動時する前に、DVD を取り出してください。もしくは、BIOS を起動して起動順序の優先順位を、 HDD を最初にしてください。そうしないと、次回の起動時もインストール DVD から起動してしまいます。

2-27


2章

Linux のインストール

2.3 インストール直後の起動 インストール直後、最初の起動時に様々な設定を求められます。次に、その設定を行いましょう。

2.3.1 実習 ①インストールしたマシンを起動します。2.2 から引き続いて作業するときは、そのままです。ブートローダ が起動する OS の選択を求めますので、そのまま待つかエンターキーを押してください。

図 2-17:CentOS の起動画面

2-28


2.3 インストール直後の起動

②起動プロセスが進み「ようこそ」の画面が現れます。右下の「進む」を押してください。

図 2-18:起動跡の設定開始画面

③ファイアウォールの設定画面が現れます。通常の運用ではファイアウォールは有効にするのが推奨され ますが、今回は実習環境の構築を行うため、機能を無効にします。上部の「ファイアウォール」を「無効」 にして、右下の「進む」を押してください。ファイアウォールをオフにする理由は章末のコラムに記載して います。

図 2-19:ファイアウォールの設定画面

2-29


2章

Linux のインストール

④無効を選択すると、確認のダイアログが出ます。「はい」を押してください。

図 2-20:ファイアウォール無効化の確認画面

⑤SELinux の設定画面が現れます。通常の運用では SELinux は有効にするのが推奨されますが、ファ イアウォールの設定同様 SELinux 設定は「無効」にして、右下の「進む」を押してください。無効にした 理由は章末のコラムに記載しています。

図 2-21:SELinux の設定画面

⑥SELinux の設定変更に、再起動が要求される旨のダイアログが出ます。「はい」を押してください。

図 2-22:SELinux 無効化による再起動の確認画面

2-30


2.3 インストール直後の起動

⑦日付と時刻の設定画面が現れます。正しく設定し、右下の「進む」を押してください。

図 2-23:日時の設定画面

⑧ユーザーの作成の画面が現れます。ここでは作成せず、右下の「進む」を押してください。

図 2-24:ユーザー作成の画面

2-31


2章

Linux のインストール

⑨個人アカウント作成を推奨する旨が表示されますが、今回は作成せず進めますので「続ける」を押してく ださい。

図 2-25:ユーザーアカウントを作成しないことの確認画面

これは、ここではユーザーを作成せず、後の実習の中でユーザー作成を行う手順になっているためです。 ⑩サウンドカードの設定画面になります。本書では、サウンド機能は特に利用しませんので、右下の「進む」 を押してください。

図 2-26:サウンドカードの設定画面

2-32


2.3 インストール直後の起動

⑪追加の CD の画面になります。追加ソフトウェアをインストールできますが、ここでは必要がないので、右 下の「終了」を押してください。

図 2-27:追加ソフトウエアのインストール CD 要求画面

⑫SELinux の設定変更により、再起動を促されるダイアログが出ます。「OK」を押してください。

図 2-28:再起動の確認画面

これでインストール作業は終了です。

2-33


2章

Linux のインストール

ファイアウォール ファイアウォールはネットワークにおいて様々なアクセス制限を行い、ネットワークから の攻撃や不正なアクセス等を防いだりすることが可能な機能です。 従って、実運用で利用する場合はサーバー用 OS として、クライアント用 OS として 使うに関わらず、ファイアウォールは有効にすべきです。しかし、本書ではサーバー構 築の方法をよりわかりやすく説明するためファイアウォールは無効にしました。 なお、ファイアウォールを有効にしてサーバー構築を行う場合は、そのサービスが外 部との接続に使うポートをネット接続できるようにポート開放しなければなりません。た とえば、Web サーバーを許可する場合、80 ポートなどを開放する必要があります。

SELinux UNIX/Linux 上には、ユーザー権限等でアクセス権を設定することができます。 SELinux では、さらにそれよりも高度なセキュリティモデルを導入し、Linux/UNIX の アクセス権以上の高度なアクセス権を実現します。セキュリティのことを考えれば、ファ イアウォール同様、有効化して運用すべきですが、ここでは無効にして作業を行いま す。

2-34


3章 ネットワーク この章の狙い

インストール後の設定作業として、ネットワーク環境を利用するた めに必要な設定を確認し、必要であれば再設定をしてもらいます。 確認のために、ネットワーク・インターフェースを調べるコマンドと (ifconfig, ping, netstat, lsof)、設定ファイルの変更や設定スクリ プトを利用します。ネットワーク機能を利用可能とする設定は、以 降の章のネットワークサービスの下準備となるため、必要不可欠 な知識です。

この章の流れ 3.1 ネットワークの確認と設定 3.2 Web サーバーの動作確認


3章

ネットワーク

■ 用語集 ●ネットワーク・インターフェース

ケーブルを接続して PC 間でデータをやり取りする物理的なインターフェースと、プログラム間でデータ をやり取りする仮想的なインターフェースがあります。 ●ループバック・インターフェース

テストや同じ Linux システム上で動いているプログラム間のみで利用できる仮想的なネットワーク・イ ンターフェースです。 ●IP アドレス

ネットワークに接続した PC 間でデータを交換する場合、IP アドレスと呼ばれる番号を PC に割り振りま す。IP アドレスはお互いを区別する住所なので、ユニークに(重複しない様に)割り振る必要があります。 現在一般的なインターネットというときに 4 バイトを使って IP アドレスを表す IPv4 が使われています。 ●IPv4(Internet Protocol version 4)

4 バイトを使って IP アドレスを表し、1 バイトごとに . (ドット)で区切られ、192.168.1.1 の様に表現され ます。 ●FQDN

インターネットで使われる PC は他の PC や機器と重複しない様に名前付けし、学校や会社などのドメ イン名と各 PC のホスト名を組み合わせた FQDN(Fully Qualified Domain Name)を使います。各 団体はドメイン名に副次的な名前のサブドメインを作って利用することもできます。 ●IP アドレスのクラス

インターネットでは APNIC(Asia-Pacific Network Information Centre)や APNIC から任命され た団体が IP アドレスを管理・配布しています。IPV4 の IP アドレスであれば、配布先の学校や会社の 規模により連続した IP アドレスを区切っています。IP アドレスの区切り方により次表の様な A から E の クラスがあります。一方、学校や会社などのローカルネットワークには重なっても良い様なアドレス(プラ イベートネットワークアドレス空間)が用意されており、各自が独自に割り振ることもできます。 クラス

アドレス範囲

説明

クラス A

0.0.0.0-127.255.255.255

ネットワークアドレス長は 8 ビット、ホストアド レス長は 24 ビット

クラス B

128.0.0.0-191.255.255.255

ネットワークアドレス長は 16 ビット、ホストア ドレス長も 16 ビット

クラス C

192.0.0.0-223.255.255.255

ネットワークアドレス長は 24 ビット、ホストア ドレス長は 8 ビット

クラス D

224.0.0.0-239.255.255.255

IP マルチキャスト専用

クラス E

240.0.0.0-255.255.255.255

表 3-1:アドレスクラスの表

3-36


3章

ネットワーク

●デフォルトゲートウェイ

インターネットは小さなネットワークが相互に接続したネットワークです。小さなネットワーク間を接続す る機器としてルーター(ゲートウェイ)が使われます。学校や会社のネットワークも必ずゲートウェイとな るルーターを介してインターネットへ接続しています。 ●ポート番号とサービス

インターネットのサービスはサービスを提供するサーバーの IP アドレスに加え、プログラムがサービス を提供するポート番号を使います。 0~ 1023 は WELL KNOWN PORT NUMBERS 、1024~ 49151 は REGISTERED PORT NUMBERS としてそれぞれ予約されています。予約されたポート 番号の用途の多くは/etc/services ファイルに定義されています。 ●TCP と UDP

TCP(Transmission Control Protocol)はセッション方式で欠損パケット再送などのエラー訂正機 能を持つデータ転送、HTTP(Web)や FTP(ファイル転送)などに使われます。UDP(User Datagram Protocol)はコネクションレスで送達確認などしないデータ転送、音声や画像のストリーミング(放送)な どに使われます。 ●/etc/sysconfig ディレクトリ

CentOS な ど の Red Hat 系 Linux は /etc/sysconfig デ ィ レ ク ト リ に 独 自 の 設 定 フ ァ イ ル を 置 き、/etc/init.d ディレクトリにあるサービス・スクリプトでシステムの設定に利用します。 ●DHCP(Dynamic Host Configuration Protocol)

PC がネットワーク接続する際に必要な情報を自動的に割り当てるプロトコル。BOOTP の上位互換。 ●BOOTP(BOOTstrap Protocol)

用意された MAC アドレスと IP アドレスとホスト名の対応表を使い、ネットワークに接続された PC に IP アドレスを配布するプロトコルのことです。 ●ping

ping コマンドは ICMP の"echo request"パケットを対象ノード(PC や機器)へ投げ、対象ノードか ら"echo reply"が返ることで到達するか否かを確認するコマンドのことです。 ●ICMP(Internet Control Message Protocol)

データの転送エラーやデータ転送量などの情報を通知するためのプロトコルのことです。

3-37


3章

ネットワーク

3.1 ネットワークの確認と設定 PC にはネットワークにつなぐためのネットワーク・インターフェースがあり、ネットワーク・インターフェースと してはケーブルを差し込む物理的な端子であるインターフェースがあります。物理的なインターフェースに 対し、テストや同じ Linux システム上で動いているプログラム間の通信にのみ使えるループバック・イン ターフェースがあります。

3.1.1 ネットワーク・インターフェースの確認 Linux をインストールした PC には物理的なネットワーク・インターフェースが標準的に用意されています。 インストール時に設定したネットワーク・インターフェースの状態を ifconfig コマンドで確認してください。 # ifconfig eth0

lo

Link encap:Ethernet HWaddr 08:00:27:BF:33:1E inet addr:192.168.1.101 Bcast:192.168.1.255 Mask:255.255.255.0 inet6 addr: fe80::a00:27ff:febf:331e/64 Scope:Link UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:7680 errors:0 dropped:0 overruns:0 frame:0 TX packets:5191 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:650437 (635.1 KiB) TX bytes:765315 (747.3 KiB) Interrupt:11 Base address:0xc020 Link encap:Local Loopback inet addr:127.0.0.1 Mask:255.0.0.0 inet6 addr: ::1/128 Scope:Host UP LOOPBACK RUNNING MTU:16436 Metric:1 RX packets:37 errors:0 dropped:0 overruns:0 frame:0 TX packets:37 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:0 RX bytes:2635 (2.5 KiB) TX bytes:2635 (2.5 KiB)

ifconfig コマンドで表示された eth0 が物理的なインターフェース、lo が仮想的なループバック・インター フェースです。eth0 は利用上の便宜を図ったエイリアス名で、物理的なネットワーク・インターフェースの 本当の名前はハードウェア(ネットワーク・インターフェースに使われているチップなど )の名前が付いてい ます。/etc/modprobe.conf 設定ファイルにネットワーク・インターフェースのエイリアス定義が記述され ているので、確認してみてください。 # grep eth0 /etc/modprobe.conf alias eth0 pcnet32

コマンドを打った結果が例えば上記のように表示された場合、 AMD 社のチップセット用の pcnet32 とい うインターフェイスが設定されていることがわかります。

3-38


3.1 ネットワークの確認と設定

3.1.2 ネットワーク・インターフェースの設定ファイルの確認 キーボードやマウスなどの様に複雑な設定をしなくても直ぐに使えるハードウェアに対し、ネットワーク・イン ターフェースは設定が必要です。もちろん、インストール時の設定でご利用のネットワーク環境と整合性が 取れていれば、更なる設定変更は不必要です。 lo の 設 定 フ ァ イ ル で あ る /etc/sysconfig/network-scripts/ifcfg-lo と 、 eth0 の 設 定 フ ァ イ ル で あ る/etc/sysconfig/network-scripts/ifcfg-eth0 を参照してみてください。 # cat /etc/sysconfig/network-scripts/ifcfg-lo DEVICE=lo IPADDR=127.0.0.1 NETMASK=255.0.0.0 NETWORK=127.0.0.0 # If you're having problems with gated making 127.0.0.0/8 a martian, # you can change this to something else (255.255.255.255, for example) BROADCAST=127.255.255.255 ONBOOT=yes NAME=loopback # cat /etc/sysconfig/network-scripts/ifcfg-eth0 # Advanced Micro Devices [AMD] 79c970 [PCnet32 LANCE] DEVICE=eth0 BOOTPROTO=static BROADCAST=192.168.1.255 HWADDR=08:00:27:BF:33:1E IPADDR=192.168.1.101 NETMASK=255.255.255.0 NETWORK=192.168.1.0 ONBOOT=yes

ifcfg-lo 設定ファイルはどのマシンでも同じ設定内容となり、ifcfg-eth0 設定ファイルは PC 毎に設定が 違うファイルとなるでしょう。ifcfg-eth0 設定ファイルは、#で始まる行はコメントとなり、設定する項目名と 設定内容が=で結ばれた形(「項目名=設定内容」という記述)で複数の設定が並べられています。設定項 目と内容は次の表の様になります。

3-39


3章

ネットワーク 項目

内容

設定例

DEVICE

ネットワーク・インターフェース名

eth0

IPADDR

インターフェースの IP アドレス

192.168.1.101

NETMASK

所属ネットワークを区切るためのサブネッ 255.255.255.240 トマスク

NETWORK

所属ネットワークを指定するネットワーク IP アドレス

ONBOOT

起動時にネットワーク・インターフェースを yes…有効、no…無効 有効とするか否か

BOOTPROTO

他機器から設定を受け取るプロトコル

192.168.2.0

none…プロトコルを利用しない、 dhcp…DHCP を利用、BOOTP… BOOTP を利用

表 3-2:ネットワーク・インターフェースの設定項目の表

ネットワーク・インターフェースの設定ファイル以外に、ネットワークの Red Hat 系の基本設定ファイルであ る/etc/sysconfig/network も見てみてください。 # cat /etc/sysconfig/network NETWORKING=yes NETWORKING_IPV6=no HOSTNAME=localhost.localdomain GATEWAY=192.168.1.1

/etc/sysconfig/network 設定ファイルで書き換えなどが必要な項目と内容は次の表の様になります。 項目

内容

設定例

NETWORKING

ネットワーク機能を有効にするか 否か

yes…有効、no…無効

GATEWAY

他のネットワークへの出入り口と なるアドレス

192.168.1.1

表 3-3:ネットワークの設定項目の表

設定ファイルがなければファイルを作る必要があり、設定内容と PC を接続するネットワークの整合性が取 れていなければ設定を修正する必要があります。Red Hat 系の Linux には、設定をする setup スクリプト も用意されており、setup スクリプトは CUI(キャラクタベースのインターフェス)で用意された項目を設定 することもできます。

3-40


3.1 ネットワークの確認と設定

3.1.3 ネットワーク・インターフェースの再設定 ifconfig コマンドでネットワークの設定が見れない時や、インストール時に IP アドレスの設定を間違えた時 などは、ネットワーク・インターフェースを再設定します。ネットワーク・インターフェースを再設定する作業と し て 、 前 の 節 で 説 明 し た /etc/sysconfig/network-scripts/ifcfg-eth0 フ ァ イ ル と/etc/sysconfig/network ファイルの書き換えが必要です。 設定した内容をネットワーク・インターフェースに反映させるため、/etc/init.d/network スクリプトが用意 されています。/etc/init.d/network スクリプトには次の様なオプションがあり、ここでは start オプション を使い、サービスを起動します。ネットワークを開始したら、ifconfig コマンドでネットワーク・インターフェー スの状態を再確認してください。 start

サービスを開始

stop

サービスを停止

restart

サービスを再起動(停止してから開始)

status

サービスの状況を表示

表 3-4:オプション一覧

次の例は、起動後に eth0 に設定された IP アドレスが 192.168.1.100 だったので、192.168.1.101(第 4 オ ク テ ッ ト を 101 に 変 更 し 保 存 終 了 ) に 変 更 し た 場 合 の 例 で す 。 変 更 す る に は/etc/sysconfig/network-scripts/ifcfg-eth0 ファイルをエディタで編集し、ネットワークを再開したら、 ifconfig コマンドでネットワーク・インターフェースの状態を再確認してください。 # ifconfig eth0 eth0 Link encap:Ethernet HWaddr 08:00:27:BF:33:1E inet addr:192.168.1.100 Bcast:192.168.1.255 Mask:255.255.255.0 inet6 addr: fe80::a00:27ff:febf:331e/64 Scope:Link UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:7680 errors:0 dropped:0 overruns:0 frame:0 TX packets:5191 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:650437 (635.1 KiB) TX bytes:765315 (747.3 KiB) Interrupt:11 Base address:0xc020 # vi /etc/sysconfig/network-scripts/ifcfg-eth0 # Advanced Micro Devices [AMD] 79c970 [PCnet32 LANCE] DEVICE=eth0 BOOTPROTO=static BROADCAST=192.168.1.255 HWADDR=08:00:27:BF:33:1E IPADDR=192.168.1.101 NETMASK=255.255.255.0 NETWORK=192.168.1.0 ONBOOT=yes

3-41


3章

ネットワーク

# /etc/init.d/network restart インターフェース eth0 を終了中: ループバックインターフェースを終了中 ループバックインターフェイスを呼び込み中 インターフェース eth0 を活性化中:

[ [ [ [

OK OK OK OK

] ] ] ]

# ifconfig eth0 eth0 Link encap:Ethernet HWaddr 08:00:27:BF:33:1E inet addr:192.168.1.101 Bcast:192.168.1.255 Mask:255.255.255.0 inet6 addr: fe80::a00:27ff:febf:331e/64 Scope:Link UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:7680 errors:0 dropped:0 overruns:0 frame:0 TX packets:5191 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:650437 (635.1 KiB) TX bytes:765315 (747.3 KiB) Interrupt:11 Base address:0xc020

3.1.4 ネットワーク・インターフェースの動作確認 ループバック・インターフェースやネットワーク・インターフェースが機能しているかは ping コマンドで確認 します。ping コマンドで確認する IP アドレスとして自分のローカル・ループバック・アドレス(lo:127.0.0.1) と物理ネットワーク・インターフェースの IP アドレス(eth0:192.168.1.101)、講師の PC の IP アドレス (192.168.1.10)や隣の PC の IP アドレス(192.168.1.102 など)を指定してください。ping コマンドは [Control]+[c]で中止できます。 # ping 127.0.0.1 PING 127.0.0.1 (127.0.0.1) 56(84) bytes of data. 64 bytes from 127.0.0.1: icmp_seq=1 ttl=64 time=0.103 ms 64 bytes from 127.0.0.1: icmp_seq=2 ttl=64 time=0.046 ms 64 bytes from 127.0.0.1: icmp_seq=3 ttl=64 time=0.079 ms [Control]+[c] --- 127.0.0.1 ping statistics --3 packets transmitted, 3 received, 0% packet loss, time 2011ms rtt min/avg/max/mdev = 0.046/0.076/0.103/0.023 ms

ローカルループバック

# ping 192.168.1.101 PING 192.168.1.101 (192.168.1.101) 56(84) bytes of data. 64 bytes from 192.168.1.101: icmp_seq=1 ttl=64 time=0.096 ms 64 bytes from 192.168.1.101: icmp_seq=2 ttl=64 time=0.055 ms 64 bytes from 192.168.1.101: icmp_seq=3 ttl=64 time=0.048 ms [Control]+[c] --- 192.168.1.101 ping statistics --3 packets transmitted, 3 received, 0% packet loss, time 2000ms rtt min/avg/max/mdev = 0.048/0.066/0.096/0.022 ms

自分の eth0

# ping 192.168.1.10

その他のホスト

3-42


3.1 ネットワークの確認と設定

PING 192.168.1.10 (192.168.1.10) 56(84) bytes of data. 64 bytes from 192.168.1.10: icmp_seq=1 ttl=64 time=0.096 ms 64 bytes from 192.168.1.10: icmp_seq=2 ttl=64 time=0.055 ms 64 bytes from 192.168.1.10: icmp_seq=3 ttl=64 time=0.048 ms [Control]+[c] --- 192.168.1.10 ping statistics --3 packets transmitted, 3 received, 0% packet loss, time 2000ms rtt min/avg/max/mdev = 0.048/0.066/0.096/0.022 ms

ルーターの設定によっては、ping コマンドで使われる ICMP が他のネットワークへ送られないこともありま す。他のネットワークへ ICMP が送られない理由はセキュリティ関連です。同じ理由から、重要で存在を広 く告知させたくない PC や機器が ping に反応しない場合も多々あります。

3.1.5 ローカル・ループバック・アドレスと名前の対応を確認 /etc/hosts ファイルに設定されている静的な名前と IP アドレスの対応を確認してください。 # cat /etc/hosts # Do not remove the following line, or various programs # that require network functionality will fail. 127.0.0.1 host.dom01.jp host localhost.localdomain localhost ::1 localhost6.localdomain6 localhost6

ローカル・ループバック・アドレスに対して localhost.localdomain や localhost という名前が定義されて います。インストール時にホスト名として host.dom01.jp を入力した場合は host.dom01.jp と host が設 定されています。 ping コマンドに localhost.localdomain と localhost を指定してループバック・インターフェースが認識 されるか確認してください。ping コマンドは[Control]+[c]で止められます。 # ping localhost.localdomain PING localhost.localdomain (127.0.0.1) 56(84) bytes of data. 64 bytes from localhost.localdomain (127.0.0.1): icmp_seq=1 ttl=64 time=0.043 ms 64 bytes from localhost.localdomain (127.0.0.1): icmp_seq=2 ttl=64 time=0.049 ms 64 bytes from localhost.localdomain (127.0.0.1): icmp_seq=3 ttl=64 time=0.047 ms [Control]+[c] --- localhost.localdomain ping statistics --3 packets transmitted, 3 received, 0% packet loss, time 2000ms rtt min/avg/max/mdev = 0.043/0.046/0.049/0.006 ms # ping localhost PING localhost.localdomain (127.0.0.1) 56(84) bytes of data. 64 bytes from localhost.localdomain (127.0.0.1): icmp_seq=1 ttl=64 time=0.048 ms 64 bytes from localhost.localdomain (127.0.0.1): icmp_seq=2 ttl=64 time=0.050 ms 64 bytes from localhost.localdomain (127.0.0.1): icmp_seq=3 ttl=64 time=0.096 ms

3-43


3章

ネットワーク

[Control]+[c] --- localhost.localdomain ping statistics --3 packets transmitted, 3 received, 0% packet loss, time 1999ms rtt min/avg/max/mdev = 0.048/0.064/0.096/0.024 ms

3.1.6 物理ネットワーク・インターフェースの IP アドレスと名前の対応を確認 /etc/hosts ファイルに PC のネットワーク・インターフェース(eth0)の IP アドレス(192.168.1.101)と対 応する名前の定義を追加します。ここではホスト名として host を、ドメイン名として dom01.jp を使いま す。インストール時に host.dom01.jp を入力して 127.0.0.1 で始まる行に host.dom01.jp の定義が記 述されている場合は、127.0.0.1 が定義されている行から host.dom01.jp と host を取り除いてくださ い。

変更前の/etc/hosts ファイル 127.0.0.1 ::1

host.dom01.jp host localhost.localdomain localhost localhost6.localdomain6 localhost6

変更後の/etc/hosts ファイル 127.0.0.1 localhost.localdomain localhost ::1 localhost6.localdomain6 localhost6 192.168.1.101 host.dom01.jp host

PC の IP アドレス(eth0)にホスト名を定義したら、reboot コマンドで Linux を再起動してください。 # reboot

PC を reboot コマンドで再起動したら、hostname コマンドでホスト名を確認できます。 # hostname host.dom01.jp

3-44


3.1 ネットワークの確認と設定

ping コマンドに host.dom01.jp と host を指定してネットワーク・インターフェースが認識されているか確 認してください。ping コマンドは[Control]+[c]で止められます。 # ping host.dom01.jp PING host.dom01.jp (192.168.1.101) 56(84) bytes of data. 64 bytes from host.dom01.jp (192.168.1.101): icmp_seq=1 ttl=64 time=0.031 ms 64 bytes from host.dom01.jp (192.168.1.101): icmp_seq=2 ttl=64 time=0.049 ms 64 bytes from host.dom01.jp (192.168.1.101): icmp_seq=3 ttl=64 time=0.104 ms [Control]+[c] --- host.dom01.jp ping statistics --3 packets transmitted, 3 received, 0% packet loss, time 2003ms rtt min/avg/max/mdev = 0.031/0.061/0.104/0.031 ms # ping host PING host.dom01.jp (192.168.1.101) 56(84) bytes of data. 64 bytes from host.dom01.jp (192.168.1.101): icmp_seq=1 ttl=64 time=0.044 ms 64 bytes from host.dom01.jp (192.168.1.101): icmp_seq=2 ttl=64 time=0.049 ms 64 bytes from host.dom01.jp (192.168.1.101): icmp_seq=3 ttl=64 time=0.056 ms [Control]+[c] --- host.dom01.jp ping statistics --3 packets transmitted, 3 received, 0% packet loss, time 2002ms rtt min/avg/max/mdev = 0.044/0.049/0.056/0.009 ms

3.1.7 サービスのポート番号を確認 どんなネットワーク・サービスが自分の PC で動いているかを、netstat コマンドと lsof コマンドで確認してく ださい。

netstat -at コマンドの実行例 # netstat -at Active Internet connections (servers and established) Proto Recv-Q Send-Q Local Address Foreign Address tcp 0 0 localhost.localdomain:2208 *:* tcp 0 0 *:sunrpc *:* tcp 0 0 host.domain13.jp:domain *:* tcp 0 0 localhost.localdomai:domain *:* tcp 0 0 localhost.localdomain:rndc *:* tcp 0 0 *:smtp *:* tcp 0 0 localhost.localdomain:2207 *:* tcp 0 0 ::1:domain *:* tcp 0 0 *:ssh *:* tcp 0 0 ::1:rndc *:* # lsof -i COMMAND PID portmap 4144

USER rpc

FD 3u

State LISTEN LISTEN LISTEN LISTEN LISTEN LISTEN LISTEN LISTEN LISTEN LISTEN

TYPE DEVICE SIZE NODE NAME IPv4 7854 UDP *:sunrpc

3-45


3章

ネットワーク

portmap 4144 rpc hpiod 4464 root python 4469 root sshd 4489 root master 4566 root avahi-dae 4688 avahi avahi-dae 4688 avahi avahi-dae 4688 avahi avahi-dae 4688 avahi named 6103 named named 6103 named named 6103 named named 6103 named named 6103 named named 6103 named named 6103 named named 6103 named named 6103 named named 6103 named

4u 0u 4u 3u 11u 13u 14u 15u 16u 20u 21u 22u 23u 24u 25u 26u 27u 28u 29u

IPv4 IPv4 IPv4 IPv6 IPv4 IPv4 IPv6 IPv4 IPv6 IPv6 IPv6 IPv4 IPv4 IPv4 IPv4 IPv4 IPv6 IPv4 IPv6

7855 8627 8645 8715 8977 9674 9675 9676 9677 14040 14041 14042 14043 14044 14045 14046 14047 14048 14049

TCP *:sunrpc (LISTEN) TCP localhost.localdomain:2208 (LISTEN) TCP localhost.localdomain:2207 (LISTEN) TCP *:ssh (LISTEN) TCP *:smtp (LISTEN) UDP *:mdns UDP *:mdns UDP *:filenet-tms UDP *:filenet-rpc UDP [::1]:domain TCP [::1]:domain (LISTEN) UDP localhost.localdomain:domain TCP localhost.localdomain:domain (LISTEN) UDP host.domain13.jp:domain TCP host.domain13.jp:domain (LISTEN) UDP *:domain UDP *:domain TCP localhost.localdomain:rndc (LISTEN) TCP [::1]:rndc (LISTEN)

netstat コマンドは-a オプションでサービスの状態を表示、-t オプションで TCP(Transmission Control Protocol)のサービスが使うポートなどの情報のみを表示します。lsof コマンドは-i オプションでサービス を受けているポートと対応するプログラムの情報を表示します。 ポ ー ト 番 号 と サ ー ビ ス の 対 応 (WELL KNOWN PORT NUMBERS:0 ~ 1023 や REGISTERED PORT NUMBERS:1024~49151)が定義されている/etc/services ファイルも確認してみてください。 # cat /etc/services : tcpmux 1/tcp # TCP port service multiplexer tcpmux 1/udp # TCP port service multiplexer rje 5/tcp # Remote Job Entry rje 5/udp # Remote Job Entry echo 7/tcp echo 7/udp discard 9/tcp sink null discard 9/udp sink null :

3-46


3.2 Web サーバーの動作確認

3.2 Web サーバーの動作確認 ネットワーク・インターフェースが動いたので Web サーバーを動かし、ネットワーク・インターフェースが本 当に動作しているのかを確認しておきましょう。

3.2.1 Web サーバーを開始 Web サービスである Apache を開始してみます。/etc/init.d/httpd スクリプトに start オプションを付け て Apache を起動してください。 # /etc/init.d/httpd start httpd を起動中: [

OK

]

3.2.2 ブラウザーで確認 Apache の動作を確認するために、Web ブラウザーで自分のアドレスにアクセスしてみます。 http://192.168.1.101/

自分のアドレスを確認した後は、周りの人のアドレスにアクセスして確認してみてください。 http://192.168.1.102/

3-47


3章

3-48

ネットワーク


4章 DNS サーバーの構 築 この章の狙い

ネットワーク・サービスを使うための土台となる名前解決のサービ ス(DNS)を設定します。設定した DNS サーバを親ドメインの DNS サーバーに登録してもらい、サブドメインとすることで、ドメインツ リーのつながりも確認します。ドメインや名前を確認するコマンド (nslookup, dig)に慣れ、ドメインを管理する BIND プログラムの 設定ファイルを扱います。

この章の流れ 4.1 DNS の仕組み 4.2 これから構築する DNS の概略 4.3 ドメイン情報を登録 4.4 サブドメインの情報を登録


4章

DNS サーバーの構築

■ 用語集 ●DNS(Domain Name System)

IP アドレスと対応する名前を登録しておき、プログラムなどの問い合わせに応じて対応する名前や IP アドレスを返答するサービス。DNS サーバーは互換性などの問題もあるので一般的に BIND が広く 使われています。 ●リゾルバ

DNS の DNS サーバーへアクセスしドメイン名前空間から任意のノードの情報を取得する機能。 ●ドメインとゾーン

組織に割り当てられてインターネットで使われる名前をドメイン名と呼び、ドメイン名は ICANN(The Internet Corporation for Assigned Names and Numbers)により管理されています。BIND でド メイン名を設定するときは、ドメインではなく「ゾーン」と呼びます。 ●キャシング・ネームサーバー

プログラムからの名前問い合わせにを代行して DNS サーバーへ名前問い合わせをおこない、結果を キャッシュします。同じ名前を 2 回以上問い合わせられたら、キャッシュの情報を返す DNS サーバー です。 ●NS(Name Server)レコード

BIND の設定でドメイン名のゾーン情報が登録されている DNS サーバーを指定するためのレコード です。 ●MX(Mail eXchange)レコード

BIND の設定でドメイン名のメールサーバーを指定するためのレコードです。メールサーバーの障害に も対応するために、複数個のメールサーバーを記述できます。 ●グルーレコード

コンテンツサーバーが委任されたサブドメインの NS を返す際に使われる情報(NS レコード)です。グ ルーレコードが解決できない名前であればループ(繰り返し問い合わせ)してしまうので、問い合わせに 対して NS レコードに対応する A レコード(IP アドレス)も返します。

4-50


4.1 DNS の仕組み

4.1 DNS の仕組み インターネットでサーバーマシンとクライアントマシン間で通信をするとき、相手の IP アドレスへコマンドや データを送り届け、こちらの位置も IP アドレスで通信相手に知らせます。一方、クライアントマシンを人間が 使うときにインターネット上の全てのサーバーを IP アドレスで指定するのは非現実的なので、インターネッ ト上のサーバーを名前で指定できる DNS(Domain Name System)という仕組みが用意されています。

図 4-1:DNS サーバーのツリー

DNS サーバーに名前と IP アドレスを登録しておくと、名前を指定して問い合わせると対応する IP アドレ スを返します。DNS は分散型のシステムでトップのドメインを管理するサーバーから所属するサブドメイン を管理するサーバーがツリー状につながった形となります。

4-51


4章

DNS サーバーの構築

名前を解決するには、マシンが自分の組織やプロバイダーで中継する DNS サーバーへ問い合わせ、中 継する DNS サーバーが対応するトップレベルドメインの DNS サーバーへ問い合わせます。トップレベル の DNS サーバーは所属するサブドメインの DNS サーバーのアドレスを中継の DNS サーバーへ返しま す。中継する DNS サーバーは、サブドメインの DNS サーバーへ問い合わせ、マシンへ結果を返します。

図 4-2:DNS を使った名前の問い合わせ

4-52


4.2 これから構築する DNS の概略

4.2 これから構築する DNS の概略 各自が JP ドメインのサブドメインを管理する DNS サーバーを作る演習を進めてもらうので、ドメインを管 理する次の 3 台以上のマシンがある環境が望ましいです。

図 4-3:マシンの構成図

講師マシン…JP ドメインを受け持つ DNS 受講生マシン…JP ドメインのサブドメインを受け持つ DNS サーバー 受講生マシン…JP ドメインのサブドメインを受け持つ DNS サーバー

講師マシンが JP ドメインを管理するので、教室の環境はインターネットにつながっていなくてもよいです。 以降の章(特にメール)では DNS サーバーが正しく設定されていることを前提としているので、この章の 演習内容が完全に終わっている必要があります。

4-53


4章

DNS サーバーの構築

図 4-4:利用する IP アドレスとドメイン名

講師マシン:JP ドメインマシンの IP アドレス:192.168.1.10 受講生(自分の)マシンの IP アドレス:192.168.1.101 受講生(自分の)ドメイン名:dom01.jp 受講生(隣の人の)マシンの IP アドレス:192.168.1.102 受講生(隣の人)ドメイン名:dom02.jp

ここで、受講生マシン(192.168.1.101)が www.dom02.jp を解決するときの動きを追ってみましょう。

4-54


4.2 これから構築する DNS の概略

4.2.1 アドレス解決の流れ ① 受講生が www.dom02.jp を Web ブラウザなど(以降アプリケーション)に入力します ② アプリケーションは Linux のシステムのリゾルバに問い合わせします ③ リゾルバは resolv.conf ファイルで指定されている講師マシン(192.168.1.10)へ問い合わせます ④ 講師マシン(192.168.1.10)は dom02.jp サブドメインを管理している受講生マシンの IP アドレス (192.168.1.102)を受講生マシン(192.168.1.101)へ返答します ⑤ 受講生マシン(192.168.1.101)は隣の受講生マシン(192.168.1.102)へ www.dom02.jp の IP ア ドレスを問い合わせします ⑥ 隣の受講生マシン(192.168.1.102)は www.dom02.jp のアドレス 192.168.1.102 を受講生マシン (192.168.1.101)へ返答します

図 4-5:名前のやり取りでない取りするデータ

4-55


4章

DNS サーバーの構築

4.3 chroot 機能を利用した BIND のセキュリティ BIND と一緒に基本的な設定ファイルである caching-nameserver パッケージを次の節でインストール します。インストールする設定ファイルは本来あるべき位置ではなく、 /var/named/chroot ディレクトリに インストールされ、作業時にシンボリックリンクを作るなどの手間がかかるようになっています。本来置くべ き位置でないディレクトリにコピーされるのは、セキュリティを考慮して chroot 機能を利用しているためで す。

図 4-6:BIND で見える範囲

chroot はプログラムを特定のディレクトリのみが見えるようにするための機能です。BIND を実行する時、 bind ユーザーの権限で bind プログラムが実行され、bind プログラムは/var/named/chroot ディレク トリの中しか見れなくなります。bind プログラムが/をアクセスすると/var/named/chroot/ディレクトリが 見え、/etc をアクセスすると/var/named/chroot/etc が見られる様に、bind プログラムは本来あるディ レクトリと隔離されます。隔離されると、指定された/var/named/chroot ディレクトリにあるライブラリやデ バイスファイルなどが優先してアクセスされるようになるだけです。 BIND はインターネット上の名前を扱うサービスで、不特定多数のサーバーやクライアントと情報を交換 するという複雑な動作をします。複雑な動作をするために、間違った情報が入り込むなどのバグから発生 する問題が発生しやすいでしょう。BIND はアクセスできるディレクトリが制限できるので、乗っ取られるな どのセキュリティ的な危機に陥っても chroot 以下のファイルにしかアクセスできません。バグのために BIND が踏み台になって危機的な状況となることを阻止するため、 chroot 機能の導入はセキュリティの 観点において重要と言ってもよいでしょう。

4-56


4.4 ドメイン情報を登録

4.4 ドメイン情報を登録 4.4.1 必要なパッケージを確認 DNS サーバーの構築に必要なパッケージを確認します。DNS の機能を提供するプログラムとして BIND があり、bind パッケージと bind-chroot パッケージが必要です。BIND プログラムの設定ファイ ルとして caching-nameserver パッケージが用意されています。rpm コマンドに-q オプションとパッ ケージ名を指定し、3 つのパッケージがインストールされているか確認してください。 パッケージがインストールされている場合は次の様に表示されます。 # rpm -q bind bind-chroot caching-nameserver bind-9.3.4-6.P1.el5 bind-chroot-9.3.4-6.P1.el5 caching-nameserver-9.3.4-6.P1.el5

パッケージがインストールされていない場合は次の様に表示されます。 # rpm -q bind bind-chroot caching-nameserver パッケージ bind はインストールされていません。 パッケージ bind-chroot はインストールされていません。 パッケージ caching-nameserver はインストールされていません。

4.4.2 必要なパッケージをインストール DNS サーバーの構築に必要なパッケージがインストールされていないときは、rpm コマンドでインス トールをしてください。 # rpm --import /media/CentOS_5.2_Final/RPM-GPG-KEY-CentOS-5 # cd /media/CentOS_5.2_Final/CentOS # rpm -ivh bind-9.3.4-6.P1.el5.i386.rpm bind-chroot-9.3.4-6.P1.el5.i386.rpm 準備中... ########################################### [100%] 1:bind ########################################### [ 50%] 2:bind-chroot ########################################### [100%] # rpm -ivh caching-nameserver-9.3.4-6.P1.el5.i386.rpm 準備中... ########################################### [100%] 1:caching-nameserver ########################################### [100%] # cd

ここでは、automount 機能が動作していて DVD-ROM が自動的にマウントされた状態でインストー ル作業を進めています。DVD-ROM の公開鍵を登録してからインストールすると警告メッセージが出 ないので、インストールをする前に rpm コマンドに—import オプションと公開鍵のファイルを指定して 登録しています。最後に、DVD-ROM のディレクトリ上で作業をしたので、cd コマンドでワークディレクト リへ移動しています。

4-57


4章

DNS サーバーの構築

4.4.3 chkconfig で起動時の設定 BIND をインストールして設定が終わると Linux の起動時に BIND を必ず起動する必要が出てきます。 Red Hat 系 の デ ィ ス ト リ ビ ュ ー シ ョ ン の BIND パ ッ ケ ー ジ に は BIND を 起 動 す る た め の/etc/init.d/named スクリプトが用意されています。/etc/init.d/named スクリプトは chkconfig コマ ンドにより Linux 起動時に開始するか否かを設定できます。chkconfig コマンドに—list オプションを付け ると、起動するか否かが確認できます。 # chkconfig --list named named 0:off 1:off

2:off

3:off

4:off

5:off

6:off

named の後に出てくる数字はランレベルという起動するときのモードで、通常は 3 または 5 が使われま す。chkconfig コマンドに named スクリプトの名前と on を指定し、BIND を起動するようにしてください。 # chkconfig named on # chkconfig --list named named 0:off 1:off

2:on

3:on

4:on

5:on

6:off

4.4.4 ドメインを設定する流れ ドメイン(以降ではゾーンと記述)を追加するために必要な作業は次となります。 1. named.conf ファイルにゾーンを追加 2. ゾーンファイルを記述 ドメインに含まれるゾーン(ゾーン⊆ドメイン)を DNS サーバーである bind で取り扱うために、BIND の基 本的な設定ファイルである/etc/named.conf ファイルがあります。/etc/named.conf に基本的な設定と ゾーンの定義を追加したら、ゾーンの詳細を定義するゾーンファイルを/var/named ディレクトリに作りま す。

4-58


4.4 ドメイン情報を登録

4.4.5 正引きのゾーンを追加 2つに分かれている BIND の設定ファイルの 1 つとなる name.conf は、CentOS では下記のように更に 2 つに分かれています。 •

/var/named/chroot/etc/named.caching-nameserver.conf

/var/named/chroot/etc/named.rfc1912.zones

は じ め に 読 み 込 ま れ る named.caching-nameserver.conf フ ァ イ ル は named.conf に リ ネ ー ム し て/var/named/chroot/etc/ にコピーすることで、 標準の設定ファイルとして利用できます。なお、 named.conf で BIND の設定をする前に、必ず設定ファイルの所有権を変更しておいてください。 # cd /var/named/chroot/etc # cp -p named.caching-nameserver.conf named.conf # cd /etc # ln -s /var/named/chroot/etc/named.conf named.conf # chgrp named named.conf # ls -l /var/named/chroot/etc/named.conf /etc/named.conf -rw-r----- 1 root named 1280 3 月 23 00:01 /var/named/chroot/etc/named.conf lrwxrwxrwx 1 root named 32 3 月 23 00:38 /etc/named.conf -> /var/named/chroot/etc/named.conf

設定ファイルのシンボリックリンクを作成した時に所有権を変更するのは、BIND がファイルの所有権によ り起動できなくなるのを回避するためです。

/etc/named.conf に追加 options { listen-on port 53 { 127.0.0.1; 192.168.1.101; }; listen-on-v6 port 53 { ::1; }; directory "/var/named"; dump-file "/var/named/data/cache_dump.db"; statistics-file "/var/named/data/named_stats.txt"; memstatistics-file "/var/named/data/named_mem_stats.txt"; //query-source port 53; //query-source-v6 port 53; allow-query { any; }; }; logging { channel default_debug { file "data/named.run"; severity dynamic; }; }; view localhost_resolver { match-clients { any; }; match-destinations { localhost; }; recursion yes;

4-59


4章

DNS サーバーの構築

include "/etc/named.rfc1912.zones"; zone "dom01.jp" IN { type master; file "dom01.jp.zone"; allow-update { none; }; }; };

コピーした named.conf ファイルは 127.0.0.1(ローカルループバックインターフェース)への問い合わせ にしか返答しない設定なので、外部からの問い合わせを受けられるように、 192.168.1.101;(物理的な ネットワーク・インターフェースの eth0)を listen-on に追加します。受講生ドメインの dom01.jp のゾーン 定義は localhost_resolver ビュー(view)に zone "dom01.jp" IN {~}を追記します。 dom01.jp ゾーンの詳細な情報は、ゾーンファイルとして記述します。 ゾーンファイルを編集時、よくあるミスとしては、括弧の不足、セミコロンの不足などがあります。編集後、 BIND を起動する前に編集したゾーンファイルに間違いがないかよく確認しましょう。

なお、named.conf で「allow-query { any; };」とここでは設定しましたが、この設定はどこから問い合わ せがあったとしても DNS 問い合わせに応答するという設定になっており(実際はサーバーが外部公開さ れているか否かによって問題にならない場合もありますが)、実際の運用ではセキュリティの観点から修正 が必要です。 詳しくは 4-4-5 単元末のコラム「allow-query の設定について」をご覧ください。

# cd /var/named/chroot/var/named # cp -p localdomain.zone dom01.jp.zone # ln -s /var/named/chroot/var/named/dom01.jp.zone /var/named/. # chgrp named /var/named/dom01.jp.zone # ls -l /var/named/dom01.jp.zone lrwxrwxrwx 1 root named 41 3 月 23 00:03 /var/named/dom01.jp.zone -> /var/named/chroot/var/named/dom01.jp.zone

ゾーンファイルをコピーした時に所有権を変更するのは、BIND がファイルの所有権により起動できなくな るのを回避するためです。

4-60


4.4 ドメイン情報を登録

/var/named/chroot/var/named/dom01.jp.zone ファイルの変更・追加 $TTL 86400 $ORIGIN dom01.jp. @ IN SOA

localhost www mail vhost1 vhost2

IN NS IN MX IN A IN A IN A IN A IN A

host root (

10

2009032300 3H 15M 1W 1D ) host.dom01.jp. mail.dom01.jp. 192.168.1.101 192.168.1.101 192.168.1.101 192.168.1.101 192.168.1.101

; serial (d. adams) ; refresh ; retry ; expiry ; minimum

localhost というホスト名の箇所は host に変更しました。変更が発生するゾーンファイルは SOA レコード のシリアルナンバー(serial)を、2 桁から西暦(4 桁の年)と月日(2 桁ずつ)の後に 00 から 99 までの数字 (2 桁)が付いた 10 桁の数字で指定します。ホスト名またはホスト名+ドメイン名からなる FQDN が入る箇 所はどちらでも対応でき、以降は推奨の書き方です。 MX レコードは受講生ドメインのメールサーバーを定義します。A レコードで受講生マシンのホスト名で ある host や、以降の章で使うサーバーの名前である mail と vhost1 と vhost2 から IP アドレスへの対応 を記述しました。NS や MX の定義では右側に FQDN を入れ、最後に必ず「.」を付けてください。「IN A」 で名前と IP アドレスの対応を定義する箇所は、左側にホスト名、右側に IP アドレスが入ります。最後に「.」 が付かない名前にはこのファイルで定義しているゾーン(ここでは dom01.jp.)が自動的に追加されます。

4-61


4章

DNS サーバーの構築

allow-query の設定について 本書ではサーバー構築の方法をよりわかりやすく説明するため、すべての IP からの DNS 問い合わせに対して応答するように、 「allow-query { any; };」と設定しまし た。しかし、DNS サーバーを実運用で動かす場合、いかなる場合も内部情報を表示で きてしまうのは好ましい状態ではないため、named.conf 設定ファイルでアドレス許可 リストを設定して DNS 問い合わせに対する結果表示を規制することが推奨されます。 named.conf の修正と追記 named.conf を開いて、以下のように修正してください。 options{ : //allow-query { any; }; allow-query { trust; };

コメントアウトする 許可リスト trust で指定した端末からは問合わせ許可

}; acl trust{ 192.168.1.0/24; localhost; }; : このように設定すると、ネットワークアドレス 192.168.1.0 以下にある端末と DNS サーバーが動いている localhost(127.0.0.1)以外からの外部からのアクセスに対し ては DNS 問い合わせには応答しなくなります。 また、localhost と特定の IP からのみ DNS 問い合わせを実行できるようにするには、 アクセス許可リストに以下のように許可したい IP を列挙していきます。 acl trust{ 192.168.1.102; localhost; }; 上記のように設定した場合は、たとえば同じネットワークアドレス上にある 192.168. 1.101 の端末からの DNS 問い合わせについてはエラーとなります。 なお、セキュリティを考慮したそのほかの対策としては BIND のバージョンを隠すこと も有効です。named.conf の options 内で「version “none”;」 などと書くことで、 BIND の正確なバージョンを表示させないようにすることができます。

4-62


4.4 ドメイン情報を登録

4.4.6 BIND を起動 各自のドメインを定義したら BIND を起動してみましょう。BIND の起動は/etc/init.d/named スクリプト に start オプションを指定してください。 # /etc/init.d/named start named を起動中:

[

OK

]

既 に BIND を 起 動 し て あ る の に 止 め な い で BIND を 開 始 す る と エ ラ ー と な る の で 、 こ の 場 合 は/etc/init.d/named スクリプトに restart オプションを付けて BIND を再起動してください。 # /etc/init.d/named restart named を停止中: named を起動中:

[ [

OK OK

] ]

BIND(named という名前のデーモン)が起動しているか確認するには、/etc/init.d/named スクリプトに status オプションを指定してください。 # /etc/init.d/named status number of zones: 8 debug level: 0 xfers running: 0 xfers deferred: 0 soa queries in progress: 0 query logging is OFF recursive clients: 0/1000 tcp clients: 0/100 server is up and running named (pid 18749) を実行中...

BIND が正しく起動したか確認するには、ログファイルを参照すると早いでしょう。 /var/log/messages ログファイルを見てください。 # tail /var/log/messages : : Mar 23 00:45:29 localhost named[17699]: starting BIND 9.3.4-P1 -u named -t /var/named/chroot Mar 23 00:45:29 localhost named[17699]: found 1 CPU, using 1 worker thread Mar 23 00:45:29 localhost named[17699]: loading configuration from '/etc/named.conf' Mar 23 00:45:29 localhost named[17699]: listening on IPv6 interface lo, ::1#53 Mar 23 00:45:29 localhost named[17699]: listening on IPv4 interface lo, 127.0.0.1#53 Mar 23 00:45:29 localhost named[17699]: command channel listening on 127.0.0.1#953 Mar 23 00:45:29 localhost named[17699]: command channel listening on ::1#953 Mar 23 00:45:29 localhost named[17699]: zone 0.in-addr.arpa/IN/localhost_resolver: loaded serial 42 Mar 23 00:45:29 localhost named[17699]: zone 0.0.127.in-addr.arpa/IN/localhost_resolver: loaded serial 1997022700 Mar 23 00:45:29 localhost named[17699]: zone 255.in-addr.arpa/IN/localhost_resolver: loaded serial 42

4-63


4章

DNS サーバーの構築

Mar 23 00:45:29 localhost named[17699]: zone 0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.ip6.arpa/IN/localhost_resolver: loaded serial 1997022700 Mar 23 00:45:29 localhost named[17699]: zone localdomain/IN/localhost_resolver: loaded serial 42 Mar 23 00:45:29 localhost named[17699]: zone localhost/IN/localhost_resolver: loaded serial 42 Mar 23 00:45:29 localhost named[17699]: zone dom01.jp/IN/external: loaded serial 2009032300 Mar 23 00:45:29 localhost named[17699]: running : :

ログファイルの各行の先頭は日時で始まっており、日時の後の zone がある箇所に続けて追加したドメイ ン名がある行でシリアル番号(serial)までが表示されていればドメインの登録は正常です。シリアル番号 が出ていないときはエラーなので対処してください。 次はゾーンファイル名を dom02.jp.zone と間違えて、ファイルがないというエラーが出た場合です。 # tail /var/log/messages : : Mar 23 00:45:29 localhost named[17699]: zone localhost/IN/localhost_resolver: loaded serial 42 Mar 23 00:45:29 localhost named[17699]: zone dom01.jp/IN: loading master file dom02.jp.zone: file not found Mar 23 00:45:29 localhost named[17699]: running : :

他にも listen-on port の{~}にアドレスを追加するときに IP アドレスの後に ; を入れ忘れたり、allowquery の{~}の any の後に ; を入れ忘れるなどに注意してください。

4.4.7 nslookup コマンドで名前を確認 nslookup コマンドで名前から IP アドレスを確認してください。 # nslookup host.dom01.jp Server: 192.168.1.101 Address: 192.168.1.101#53 Name: host.dom01.jp Address: 192.168.1.101 # nslookup www.dom01.jp Server: 192.168.1.101 Address: 192.168.1.101#53 Name: www.dom01.jp

4-64


4.4 ドメイン情報を登録

Address: 192.168.1.101 # nslookup mail.dom01.jp Server: 192.168.1.101 Address: 192.168.1.101#53 Name: mail.dom01.jp Address: 192.168.1.101

ここでは/etc/resolv.conf ファイルの定義をリゾルバ経由で使い、自分自身へ問い合わせています。 DNS サーバーを指定して問い合わせたい場合は nslookup コマンドにホスト名を指定した後に問い合わ せたい DNS サーバーの IP アドレスを付けて問い合わせてみてください。 # nslookup host.dom01.jp 192.168.1.101 Server: 192.168.1.101 Address: 192.168.1.101#53 Name: host.dom01.jp Address: 192.168.1.101 # nslookup host.dom02.jp 192.168.1.102 Server: 192.168.1.102 Address: 192.168.1.102#53 Name: host.dom02.jp Address: 192.168.1.102

4.4.8 dig コマンドでドメインを確認 dig コマンドでゾーン情報を確認してみてください。 # dig dom01.jp axfr ; <<>> DiG 9.3.4-P1 <<>> dom01.jp axfr ;; global options: printcmd dom01.jp. 86400 IN SOA 900 604800 86400 dom01.jp. 86400 IN NS dom01.jp. 86400 IN MX host.dom01.jp. 86400 IN A mail.dom01.jp. 86400 IN A vhost1.dom01.jp. 86400 IN A vhost2.dom01.jp. 86400 IN A www.dom01.jp. 86400 IN A dom01.jp. 86400 IN SOA 900 604800 86400 ;; Query time: 10 msec ;; SERVER: 192.168.1.101#53(192.168.1.101) ;; WHEN: Mon Mar 23 15:15:14 2009

host.dom01.jp. root.dom01.jp. 2009032300 10800 host.dom01.jp. 100 mail.dom01.jp. 192.168.1.101 192.168.1.101 192.168.1.101 192.168.1.101 192.168.1.101 host.dom01.jp. root.dom01.jp. 2009032300 10800

4-65


4章

DNS サーバーの構築

;; XFR size: 9 records (messages 1)

ドメイン名の後に axfr を指定するとゾーンに登録されている全ての情報が表示されます。dig コマンドの 結果に、ANSWER SECTION があれば正常であり、ANSWER SECTION が無ければ結果が返らない 状態のエラーです。 # dig dom01.jp ns ; <<>> DiG 9.3.4-P1 <<>> dom01.jp ns ;; global options: printcmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 41657 ;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1 ;; QUESTION SECTION: ;dom01.jp. ;; ANSWER SECTION: dom01.jp.

86400

IN

NS

IN

NS

;; ADDITIONAL SECTION: host.dom01.jp. 86400 IN A ;; Query time: 12 msec ;; SERVER: 192.168.1.101#53(192.168.1.101) ;; WHEN: Mon Mar 23 15:15:38 2009 ;; MSG SIZE rcvd: 61

host.dom01.jp.

192.168.1.101

ドメイン名の後に ns を指定するとドメインに登録されている NS レコード(ネームサーバーの情報)が表示 されます。 # dig dom01.jp mx ; <<>> DiG 9.3.4-P1 <<>> dom01.jp mx ;; global options: printcmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 6048 ;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 2 ;; QUESTION SECTION: ;dom01.jp.

IN

MX

86400

IN

MX

100 mail.dom01.jp.

;; AUTHORITY SECTION: dom01.jp. 86400

IN

NS

host.dom01.jp.

;; ADDITIONAL SECTION: mail.dom01.jp. 86400

IN

A

192.168.1.101

;; ANSWER SECTION: dom01.jp.

4-66


4.4 ドメイン情報を登録

host.dom01.jp.

86400

IN

A

192.168.1.101

;; Query time: 9 msec ;; SERVER: 192.168.1.101#53(192.168.1.101) ;; WHEN: Mon Mar 23 15:16:05 2009 ;; MSG SIZE rcvd: 98

ドメイン名の後に mx を指定するとドメインに登録されている MX レコード(メールサーバーの情報)が表示 されます。 ここでは/etc/resolv.conf ファイルの定義を使い自分自身へ問い合わせています。DNS サーバーを指 定して問い合わせたい場合は、dig コマンドに@と DNS サーバーのアドレスを付けて問い合わせてくださ い。 # dig dom01.jp @192.168.1.101 axfr # dig dom02.jp @192.168.1.102 axfr

ここまでは、以降へ続く設定となるので必ず名前が解決できる必要があります。受講生ドメインのゾーン情 報を nslookup コマンドと dig コマンドまで確認できたら、次へ進んでください。

4-67


4章

DNS サーバーの構築

4.5 ドメイン情報を公開 4.5.1 ドメイン情報を公開してもらう 各受講生が設定した DNS サーバーのドメインは JP ドメインの下位ドメインとなる domXX.jp です(XX は 01 や 02 などの数字)。他の受講者からドメイン情報の問い合わせを受けるには、親となる JP ドメイン を管理する DNS サーバー(講師サーバー)に受講生ドメインを登録してもらう必要があります。この時に上 位 DNS に登録するのが、ドメイン名と IP アドレスをつなげる「グルーレコード」です。 受講生マシンの/etc/named.conf と同じく、講師マシンの/etc/named.caching-nameserver.conf ファイルから/etc/named.conf ファイルへコピーし、JP ドメインの定義と問い合わせに応じる設定を修正 してください。 # cd /var/named/chroot/etc # cp -p named.caching-nameserver.conf named.conf # ln -s /var/named/chroot/etc/named.conf /etc/named.cond # chgrp -h named /etc/named.conf # ls -l /var/named/chroot/etc/named.conf /etc/named.conf lrwxrwxrwx 1 root named 32 3 月 23 00:38 /etc/named.conf -> /var/named/chroot/etc/named.conf -rw-r----- 1 root named 1280 3 月 23 00:01 /var/named/chroot/etc/named.conf

設定ファイルをコピーした時に所有権を変更するのは、BIND がファイルの所有権により起動できなくなる のを回避するためです。

講師の/etc/named.conf への追加 options { listen-on port 53 { 127.0.0.1; 192.168.1.10; }; listen-on-v6 port 53 { ::1; }; directory "/var/named"; dump-file "/var/named/data/cache_dump.db"; statistics-file "/var/named/data/named_stats.txt"; memstatistics-file "/var/named/data/named_mem_stats.txt"; //query-source port 53; //query-source-v6 port 53; allow-query { any; }; }; logging { channel default_debug { file "data/named.run"; severity dynamic; }; }; view localhost_resolver { match-clients { any; }; match-destinations { localhost; };

4-68


4.5 ドメイン情報を公開

recursion yes; include "/etc/named.rfc1912.zones"; zone "jp" IN { type master; file "jp.zone"; allow-update { none; }; }; };

JP ドメインのゾーンファイルも localdomain.zone をコピーして作ります。受講生マシンのゾーンファイル と違うところは、受講生ドメインと受講生ドメインの DNS サーバーの組を複数定義するところです。 # cd /var/named/chroot/var/named # cp -p localdomain.zone jp.zone # ln -s /var/named/chroot/var/named/jp.zone /var/named/jp.zone # chgrp -h named /var/named/jp.zone # ls -l /var/named/chroot/var/named/jp.zone /var/named/jp.zone -rw-r----- 1 root named 262 3 月 23 00:03 /var/named/chroot/var/named/jp.zone lrwxrwxrwx 1 root named 41 3 月 23 00:03 /var/named/dom01.jp.zone -> /var/named/chroot/var/named/jp.zone

ゾーンファイルをコピーした時に所有権を変更するのは、BIND がファイルの所有権により起動できなくな るのを回避するためです。 ゾーンファイルを作成したら、講師のゾーンファイルに生徒のドメインを追加します。JP ドメインに登録する ことで、同じネットワーク中にあるマシンから設定したアドレスでアクセスできるようになります。

/var/named/chroot/var/named/jp.zone ファイルの変更・追加 $TTL 86400 $ORIGIN jp. @

IN SOA

host root ( 2009032400 3H 15M 1W 1D )

dom01.jp. dom02.jp. host host.dom01.jp. host.dom02.jp.

IN NS IN NS IN NS IN A IN A IN A

; serial (d. adams) ; refresh ; retry ; expiry ; minimum

host host.dom01.jp. host.dom02.jp. 192.168.1.10 192.168.1.101 192.168.1.102

4-69


4章

DNS サーバーの構築

4.5.2 JP ドメインのサーバーを再起動 講師マシンに JP ドメインと下位ドメインの定義を追加したら、JP ドメインを管理する講師マシンの BIND を再起動してください。 # /etc/init.d/named restart named を停止中: [ OK ] named を起動中: [ OK ] # tail /var/log/messages Mar 6 06:43:22 localhost named[25474]: shutting down: flushing changes Mar 6 06:43:22 localhost named[25474]: stopping command channel on 127.0.0.1#953 Mar 6 06:43:22 localhost named[25474]: stopping command channel on ::1#953 Mar 6 06:43:22 localhost named[25474]: no longer listening on ::1#53 Mar 6 06:43:22 localhost named[25474]: no longer listening on 127.0.0.1#53 Mar 6 06:43:22 localhost named[25474]: no longer listening on 192.168.1.10#53 Mar 6 06:43:22 localhost named[25474]: exiting Mar 6 06:43:24 localhost named[25570]: starting BIND 9.3.4-P1 -u named -t /var/named/chroot Mar 6 06:43:24 localhost named[25570]: found 1 CPU, using 1 worker thread Mar 6 06:43:24 localhost named[25570]: loading configuration from '/etc/named.conf' Mar 6 06:43:24 localhost named[25570]: listening on IPv6 interface lo, ::1#53 Mar 6 06:43:24 localhost named[25570]: listening on IPv4 interface lo, 127.0.0.1#53 Mar 6 06:43:24 localhost named[25570]: listening on IPv4 interface eth0, 192.168.1.10#53 Mar 6 06:43:24 localhost named[25570]: command channel listening on 127.0.0.1#953 Mar 6 06:43:24 localhost named[25570]: command channel listening on ::1#953 Mar 6 06:43:24 localhost named[25570]: zone 0.in-addr.arpa/IN/localhost_resolver: loaded serial 42 Mar 6 06:43:24 localhost named[25570]: zone 0.0.127.in-addr.arpa/IN/localhost_resolver: loaded serial 1997022700 Mar 6 06:43:24 localhost named[25570]: zone 255.in-addr.arpa/IN/localhost_resolver: loaded serial 42 Mar 6 06:43:24 localhost named[25570]: zone 0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.ip6.arpa/IN/localhost_resolver: loaded serial 1997022700 Mar 6 06:43:24 localhost named[25570]: zone jp/IN/localhost_resolver: loaded serial 2009032300 Mar 6 06:43:24 localhost named[25570]: zone localdomain/IN/localhost_resolver: loaded serial 42 Mar 6 06:43:24 localhost named[25570]: zone localhost/IN/localhost_resolver: loaded serial 42 Mar 6 06:43:24 localhost named[25570]: running

ログファイルの日時の後の zone がある箇所に続けて追加したドメイン名がある行でシリアル番号(serial) までが表示されていればドメインの登録は正常です。シリアル番号が出ていないときはエラーなので対処 してください。

4-70


4.5 ドメイン情報を公開

4.5.3 JP ドメインサーバーを登録 JP ドメインの DNS サーバーを作ったので、受講生マシンから講師マシンを経由すれば全ての下位ドメイ ンを問い合わせできます。受講生マシンの/etc/resolv.conf ファイルに JP ドメインの DNS サーバーであ る講師マシンのを指定してください。

/etc/resolv.conf の修正 nameserver 192.168.1.10 search localdomain

resolv.conf を編集したら、named サービスを再起動してください。 # /etc/init.d/named restart

4.5.4 nslookup コマンドで JP ドメインサーバーへドメインを確認 dig コマンドで JP ドメインサーバーへ自分のドメインの NS レコードや MX レコードを問い合せてみてくだ さい。 # nslookup > host.jp Server: Address:

192.168.1.10 192.168.1.10#53

Name: host.jp Address: 192.168.1.10 > host.dom01.jp Server: 192.168.1.10 Address: 192.168.1.10#53 Non-authoritative answer: Name: host.dom01.jp Address: 192.168.1.101 > set q=soa > dom01.jp Server: 192.168.1.10 Address: 192.168.1.10#53 : : (次ページに続く) :

4-71


4章

DNS サーバーの構築

: Non-authoritative answer: dom01.jp origin = host.dom01.jp mail addr = root.dom01.jp serial = 2009032401 refresh = 10800 retry = 900 expire = 604800 minimum = 86400 Authoritative answers can be found from: dom01.jp nameserver = host.dom01.jp. host.dom01.jp internet address = 192.168.1.101 > set q=ns > dom01.jp Server: Address:

192.168.1.10 192.168.1.10#53

Non-authoritative answer: dom01.jp nameserver = host.dom01.jp. Authoritative answers can be found from: host.dom01.jp internet address = 192.168.1.101 > set q=mx > dom01.jp Server: Address:

192.168.1.10 192.168.1.10#53

Non-authoritative answer: dom01.jp mail exchanger = 10 host.dom01.jp. Authoritative answers can be found from: dom01.jp nameserver = host.dom01.jp. host.dom01.jp internet address = 192.168.1.101 > exit

例のように、正しい結果が出たでしょうか? DNS 機能は以降の章に少なからず必要となり、メール機能は特に DNS とリンクして動きます。DNS の設 定は、ファイルの編集如何によって予想できないエラーが出るかもしれませんが、確実に動作する様にして から進んでください。

4-72


5章 Web サーバーの構 築 この章の狙い

ホームページや Web システムを公開するための Web サービスを 設定します。基本としては、アクセスを制限をかける設定と動作を 確認します。応用としては、Web システムの開発に広く使われてい る PHP 言語のインストールと動作確認、サーバーとして広く使わ れているバーチャルホスト機能にも触れてもらいます。

この章の流れ 5.1 Web サーバーの簡単な仕組み 5.2 これから構築する Web サーバーの概略 5.3 Web サーバーを動かしてみる 5.4 アクセス制御 5.5 php5 モジュールをインストール 5.6 バーチャルホストを作る


5章

Web サーバーの構築

■ 用語集 ●HTML(HyperText Markup Language)

Web サーバー用のドキュメントを書くためのタグを使って文章を構造的に記述できるマークアップ言 語。他ドキュメントへのハイパーリンクを書いたり、画像利用したり、リストや表などの高度な表現も可 能。XML をベースとしています。 ●XML(Extensible Markup Language)

HTML の元となっている拡張可能なマーク付け言語です。 ●HTTP(HyperText Transfer Protocol)

Web ブラウザーと Web サーバーの間で HTML などのコンテンツ(データ)送受信に使われる通信手 順。ファイルのリクエスト(要求)とファイルのレスポンス(返送)が組でセッションになります。 ●セッション

通信の接続を確立してから切断するまでを一つのセッションといいます。 ●ディレクティブ

Apache の設定ファイルで Apache の動作を設定する項目名です。 ●BASIC 認証

ユーザ名とパスワードを使い、HTTP で定義された認証方式です。ユーザ名とパスワードの組みを:でつ なぎ、Base64 でエンコードして送信します。盗聴や改竄が簡単であるという欠点がありますが、ほぼ全 ての Web サーバーおよびブラウザで対応して広く使われています。 ●DIGEST 認証

ユーザ名とパスワードを使う認証方式です。ユーザ名とパスワードを MD5 でハッシュ化して送るため、 盗聴や改竄を防げます。 ●スクリプト言語

コードの作成や修正が容易と見なされるプログラミング言語。 CGI や Web アプリケーションの開発に つかわれており、例えば Perl, PHP, Python, Ruby, JavaScript などがあります。 ●モジュール

初 め か ら Apache に 提 供 さ れ て い な い 機 能 を 提 供 す る 拡 張 プ ロ グ ラ ム 。 Apache の 場 合 は mod_XXX.so という名前のライブラリです。 ●URL(Uniform Resource Locator)

インターネット上のリソースを指定するための記述方法で、ホームページのアドレスやメールのアドレス などを指定できます。リソースを特定するスキーム名とアドレスを://でつないで書きます。

5-74


5.1 Web サーバーの簡単な仕組み

5.1 Web サーバーの簡単な仕組み Web システムとは、インターネット環境で最も代表的なクライアント サーバーシステムで、クライアントの Web ブラウザーと Web サーバーから構成されます。Web サーバーは要求されたファイルを Web クライ アントに提供し、クライアントで受け取ったファイルを表示します。提供される情報はテキストから画像や ムービーと幅広く、クライアントが対応しているデータならば広く扱えます。Web システムの文章データとし ては XML ベースの規格である XHTML や従来の HTML などが一般的に使われています。Web サー バーとして Apache が使われている割合はかなり高いでしょう。

図 5-1:Web サーバーと Web ブラウザーのやり取り

Web サーバーと Web ブラウザーは HTTP 形式の通信手順でデータを転送し、転送毎に単独のセッショ ンを張ります。転送されるデータはテキストや画像などのファイルで、HTML 形式(フォーマット)のファイル が標準形式として使われています。HTML 形式のファイル内には他のページや他のファイルや他の Web サーバーへのリンクを持ち、HTML 形式のデータはクモの巣状にデータがつながるのも特徴です。

5-75


5章

Web サーバーの構築

5.2 これから構築する Web サーバーの概略 各自が受講生マシンで Web サーバーを起ち上げ、Web ブラウザーから隣の受講生マシンの Web サー バーへのアクセスを試します。名前の解決には 4 章で構築した講師の DNS サーバーと隣の受講生マシ ンの DNS サーバーを利用します。Web システムはクライアントとサーバーが同一のマシンに混在しても、 2 台以上で構成されても動作に違いはありませんが、テスト確認を曖昧としないために 2 台ペアでの演習 を行いましょう。 まず、実習を始める前に、Web サーバーのデフォルト設定に問題がなく、Web サーバーとして着実に動く かを確認してください。必要なパッケージが導入されているか、設定ファイルが正しく設定されているかな どを確認するため、Web サーバーを起動して Web ブラウザーでアクセスしたり、Apache のログファイル を確認するなどして、Web サーバーが正常に起動していることを確認してください。

図 5-2:実習の概要

受講生マシン:Web ブラウザー 受講生マシンの IP アドレス:192.168.1.101 受講生マシンの FQDN:host.dom01.jp 隣の受講生マシン:Web サーバー 隣の受講生マシンの IP アドレス:192.168.1.102 隣の受講生マシンの FQDN:host.dom02.jp 講師マシンの IP アドレス:192.168.1.10 講師マシンのドメイン:jp

5-76


5.2 これから構築する Web サーバーの概略

5.2.1 必要なパッケージを確認 Web サーバーである Apache を特別に削除しなければ、Apache のパッケージは標準的にインストール されているはずです。インストールされているバージョン番号を確認してください。 # rpm -q httpd httpd-2.2.3-11.el5_1.centos.3

5.2.2 chkconfig で起動時の設定 インストールされている Apache が確認できたら、Linux の起動時に Apache を必ず起動する必要が出 てきます。Red Hat 系のディストリビューションの httpd パッケージには Apache を起動するための/etc/ ini.d/httpd スクリプトが用意されています。/etc/init.d/httpd スクリプトは chkconfig コマンドにより Linux 起動時に開始するか否かを設定できます。chkconfig コマンドに—list オプションを付けると、起動 するか否かが確認できます。 # chkconfig --list httpd httpd 0:off 1:off

2:off

3:off

4:off

5:off

6:off

httpd の後に出てくる数字はランレベルという起動するときのモードで、通常は 3 または 5 が使われます。 chkconfig コマンドに httpd スクリプトの名前と on を指定し、Linux がブートする時に Apache を起動す るようにしてください。 # chkconfig httpd on # chkconfig --list httpd httpd 0:off 1:off

2:on

3:on

4:on

5:on

6:off

5-77


5章

Web サーバーの構築

5.2.3 設定ファイルファイルを確認 Apache の設定ファイルは/etc/httpd/conf/httpd.conf ファイルと/etc/httpd/conf.d ディレクトリに ある拡張子が conf のファイルです。設定ファイルで、先頭が#の行はコメント、ディレクティブの後にはス ペースやタブで区切った設定内容の文字列を書きます。httpd.conf ファイルを見てみてください。 # cat /etc/httpd/conf/httpd.conf : # Don't give away too much information about all the subcomponents # we are running. Comment out this line if you don't mind remote sites # finding out what major optional modules you are running ServerTokens OS : # Do NOT add a slash at the end of the directory path. # ServerRoot "/etc/httpd" # # PidFile: The file in which the server should record its process # identification number when it starts. # PidFile run/httpd.pid # # Timeout: The number of seconds before receives and sends time out. # Timeout 120 :

ディレクティブでデフォルトの設定と同じ内容の多くはコメントになっています。いくつかの基本的なディレ クティブを次の表にまとめました。このデフォルトで設定されているディレクティブは最小限必要な項目な ので、これらのディレクティブの設定値があれば(ディレクトリなどがあれば)、Apache は動作します。

5-78


5.2 これから構築する Web サーバーの概略 ディレクティブ名

内容

設定例

Listen

サービスを受けるポート番号

80

DocumentRoot

公開するディレクトリ

/var/www/html

ServerName

サーバーの名前

www.dom01.jp

DirectoryIndex

/をアクセスした時にアクセスする index.html ファイル

AddDefaultCharset

レスポンスに使われる文字コード off…なし

UTF-8

表 5-1:基本のディレクティブ(1)

5.2.4 テストファイルを作成 Web サーバーの機能を一文に要約すると、クライアントが要求するドキュメントや画像などのデータを転 送 す る 働 き を す る の が Web サ ー バ ー で す 。 Web サ ー バ ー が 動 作 す る か チ ェ ッ ク す る た め に は/var/www/html ディレクトリに test ディレクトリを作成して index.html ファイルを作成してください。 # mkdir /var/www/html/test # echo 'This is TEST Page 101' > /var/www/html/test/index.html

5.2.5 Apache を起動 設 定 と テ ス ト 用 フ ァ イ ル が で き た の で Apache を 起 動 し て み ま し ょ う 。 Apache の 起 動 は/etc/init.d/httpd スクリプトに start オプションをつけて Apache を起動してください。 # /etc/init.d/httpd start httpd を起動中:

[

OK

]

Apache が起動しているかを、/etc/init.d/httpd スクリプトに status オプションを付けて確認してくださ い。Apache が起動している場合、下記のようにステータスが表示されます。 # /etc/init.d/httpd status httpd (pid 5702 5701 5700 5699 5697 5696 5695 5694 5693) を実行中...

5-79


5章

Web サーバーの構築

5.2.6 Web ブラウザーで自分のアドレスを確認 Web システムはコマンドで確認する代わりに、 Web ブラウザーを使いグラフィカルに結果を確認できま す。Web ブラウザである Firefox から自分のアドレスを確認してください。 http://www.dom01.jp/test/

図 5-3:自分のアドレスを確認

自分のサーバーのアクセスができたら、隣の受講生マシンの Apache へアクセスしてください。 http://www.dom02.jp/test/

図 5-4:隣の受講生マシンのアドレスを確認

5-80


5.2 これから構築する Web サーバーの概略

5.2.7 名前解決に DNS を使用しない設定 この章の Apache の確認は 1 台であったり、DNS を設定しなくても確認できてしまいます。DNS サー バーを使わないで 1 台だけでクライアントサーバーシステムを確認するには/etc/hosts ファイルに www.dom01.jp と対応する IP アドレスを設定してください。/etc/hosts ファイルに追加変更した後はマ シンを再起動しなくても有効となります。

/etc/hosts に追加 192.168.1.101 www.dom01.jp 192.168.1.101 vhost1.dom01.jp 192.168.1.101 vhost2.dom01.jp

5-81


5章

Web サーバーの構築

5.3 ページが見つからないとき テストファイルを作る前に Apache を起動し、Web ブラウザーである Firefox から用意されていないペー ジをアクセスすると、どんな結果が出るでしょうか?実際に無いページにアクセスしてみてください。ファイ ルが無い旨のエラー(Not Found)が出ます。エラーページが表示されるのは Apache で対応するページ が用意されているからです。エラーページは/var/www/error ディレクトリにあり、トップページが無い場 合は特別に用意されたテストページが表示されています。

図 5-5:ファイルが見つからない場合に表示されるエラーページの例

# ls /var/www/error HTTP_BAD_GATEWAY.html.var HTTP_BAD_REQUEST.html.var HTTP_FORBIDDEN.html.var HTTP_GONE.html.var HTTP_INTERNAL_SERVER_ERROR.html.var HTTP_LENGTH_REQUIRED.html.var HTTP_METHOD_NOT_ALLOWED.html.var HTTP_NOT_FOUND.html.var HTTP_NOT_IMPLEMENTED.html.var HTTP_PRECONDITION_FAILED.html.var HTTP_REQUEST_ENTITY_TOO_LARGE.html.var

HTTP_REQUEST_TIME_OUT.html.var HTTP_REQUEST_URI_TOO_LARGE.html.var HTTP_SERVICE_UNAVAILABLE.html.var HTTP_UNAUTHORIZED.html.var HTTP_UNSUPPORTED_MEDIA_TYPE.html.var HTTP_VARIANT_ALSO_VARIES.html.var README contact.html.var include noindex.html

「アクセスしたページが見つからない」などの理由によって、それに対応するエラーページが表示されます。 エラーページは /var/www/error の配下に保存されています。

5-82


5.3 ページが見つからないとき

5.3.1 ログファイルを確認 Apache が起動すると、アクセスされたファイルの履歴が/var/log/httpd/access_log ログファイルに記 録され、エラーメッセージが/var/log/httpd/error_log ログファイルに記録されます。ログファイルを確認 してみてください。 # tail /var/log/httpd/access_log : : 192.168.1.6 - - [24/Mar/2009:20:23:45 +0900] "GET /index2.html HTTP/1.1" 404 287 "-" "Mozilla/ 5.0 (Macintosh; U; Intel Mac OS X 10_5_6; ja-jp) AppleWebKit/525.27.1 (KHTML, like Gecko) Version/3.2.1 Safari/525.27.1" 192.168.1.6 - - [24/Mar/2009:20:26:40 +0900] "GET /index3.html HTTP/1.1" 200 13255 "-" "Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_5_6; ja-jp) AppleWebKit/525.27.1 (KHTML, like Gecko) Version/3.2.1 Safari/525.27.1" 192.168.1.6 - - [24/Mar/2009:20:26:47 +0900] "GET /index3.html HTTP/1.1" 200 13255 "-" "Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_5_6; ja-jp) AppleWebKit/525.27.1 (KHTML, like Gecko) Version/3.2.1 Safari/525.27.1" : : # tail /var/log/httpd/error_log [Tue Mar 24 19:12:45 2009] [notice] Apache/2.2.3 (CentOS) configured -- resuming normal operations [Tue Mar 24 20:23:33 2009] [error] [client 192.168.1.6] Directory index forbidden by Options directive: /var/www/html/ [Tue Mar 24 20:23:33 2009] [error] [client 192.168.1.6] File does not exist: /var/www/html/favicon.ico, referer: http://192.168.1.101/ : :

ログファイルの名前は httpd.conf 設定ファイルで設定されています。エラーログの出力ファイル名は ErrorLog ディレクティブで、アクセスログの出力ファイル名は CustomLog ディレクティブです。ログファ イルに記録されるクライアント情報はデフォルトが IP アドレスとなり、HostnameLookups ディレクティブ を on にすると IP アドレスから調べたクライアントの名前を保存することも可能です。 DNS サーバーから 名前を引くと時間がかかるので、デフォルトでは off となっています。 ディレクティグ名

内容

設定例

ErrorLog

エラーのログファイル

/var/log/httpd/error_log

CustomLog

アクセスのログファイルと形式

/var/log/httpd/access_log

HostnameLookups

DNS への問い合わせ

on…問い合わせ、off…問い合わ せない

表 5-2:ディレクティブ(2)

5-83


5章

Web サーバーの構築

5.4 アクセス制御 通常、多くの人から自由に見てもらいたい情報を Web サービスで公開します。その一方で、特定の権限 がある人だけに見せる会員制のホームページを作りたいときがあると思います。特定の個人だけアクセス できるように限定する手段として Apache には BASIC 認証と DIGEST 認証という機能が備えられてい ます。この節では DocumentRoot ディレクティブで指定されている/var/www/html ディレクトリにある secret ディレクトリ を特定の個人だけアクセスできるよう設定するために、 セキュリティ上で安心な DIGEST 認証を設定してみましょう。

5.4.1 アクセス制御を設定 Apache でアクセス制御を設定するには設定ファイルにアクセス制御の設定を追加し、コマンドでパスワー ドファイルを作ります。/etc/httpd/conf/httpd.conf 設定ファイルに/var/www/html/secret ディレクト リの設定を追記してください。

/etc/httpd/conf/httpd.conf 設定ファイルの追記 (337 行目</Directory>の次の行) <Directory "/var/www/html/secret"> AuthType Digest AuthName "Secret Zone" AuthUserFile /etc/httpd/.htdigest Require user lpic </Directory>

Directory ディレクティブ(<Directory>~</Directory>)は/var/www/html/secret ディレクトリに認 証をかける複数のディレクティブを囲みます。AuthType は認証の種類を Digest とし、AuthName は認 証のダイアログに表示される認証名を"Secret Zone"とし、AuthUserFile でパスワードファイルを指定 し、Require user でユーザ名を lpic としました。 ディレクティブ名

内容

設定例

Directory

ディレクトリ

/var/www/html

AuthType

認証タイプ

Digest

AuthName

認証ドメイン

Secret Zone

AuthUserFile

パスワードファイル

/etc/httpd/.htdigest

Require user

ユーザ指定

lpic

表 5-3:基本のディレクティブ(3)

Require user で認証できるユーザを指定でき、Require group で認証できるグループを指定できます。 認証にはユーザとパスワードの情報が必要です。パスワードファイルを作成してください。

5-84


5.4 アクセス制御

# htdigest -c /etc/httpd/.htdigest 'Secret Zone' lpic Adding password for lpic in realm Secret Zone. New password: Re-type new password: # ls -l /etc/httpd/.htdigest -rw-r--r-- 1 root root 50 3 月 26 10:38 /etc/httpd/.htdigest # chown apache.apache /etc/httpd/.htdigest # chmod 400 /etc/httpd/.htdigest # ls -l /etc/httpd/.htdigest -r-------- 1 apache apache 50 3 月 26 10:38 /etc/httpd/.htdigest

パスワードファイルは重要なファイルなので、必要以上の人から見えない方が得策です。ファイル作成後、 Apache を動かしている apache ユーザ apache グループからのみ読める様に所有者とモードを変更し ました。

5.4.2 テストファイルを作成 認証をかけたディレクトリとファイルを作成してください。認証をかけたディレクトリにあるディレクトリの中も リカーシブ(再帰的)にユーザ名とパスワートの組み合わせを知っているユーザのみが見れます。 # mkdir /var/www/html/secret # echo 'This is Secret Page on 101' > /var/www/html/secret/index.html

5.4.3 制限がかかっていないことを Web ブラウザーで確認 Apache を再起動する前であれば制限をかけたいディレクトリやファイルがあれば見えてしまいます。本当 に制限がかかる前であるかを Web ブラウザーでアクセスして確認してみてください。 http://www.dom01.jp/secret/

5.4.4 Apache を再起動 設定を変更したので、Apache を/etc/init.d/httpd スクリプトで再起動してください。 # /etc/init.d/httpd restart httpd を停止中: httpd を起動中:

[ [

OK OK

] ]

5-85


5章

Web サーバーの構築

5.4.5 Web ブラウザーで自分のアドレスを確認 Web ブラウザーで自分のアドレス(http://www.dom01.jp/secret)を確認してください。認証のダイア ログが表示されるので、初めに登録していない適当なユーザ名と適当なパスワードを入力すると何度も認 証のダイアログが表示されること(認証エラー)を確認してください。次に登録した lpic ユーザとパスワード を入力すると作成したファイルが表示されます。

図 5-6:画面 認証ダイアログ

正しいユーザ名、パスワードを入力した場合は、secret フォルダの中の index.html ファイルにアクセスで きるようになります。

図 5-7:認証されて表示される画面

5.4.6 ログファイルを確認 正しく起動したかログファイルを確認してください。 # tail # tail

/var/log/httpd/access_log /var/log/httpd/error_log

認証に失敗するとエラーログファイルにユーザがみつからないエラーメッセージが残ります。

5-86


5.5 PHP 言語を使えるようにする

5.5 PHP 言語を使えるようにする Web サーバーはホームページを公開するサーバーとして使われる一方で、DB と連携する Web システム を作るための土台として使われていることも多いです。Web システムを作るための言語として PHP 言語 が多く使われています。この節では php5 モジュールを組み込んで、PHP 言語を使える状態にしてみま しょう。

5.5.1 php5 モジュールに必要なパッケージを確認 PHP 言語はバージョン 3 から広く一般的に使われる様になり、現在ではバージョン 5(以降 PHP5 と記 述)の利用がかなり多くなりました。PHP は Apache の拡張モジュールとして動いているので Apache と の親和性も高いです。Rpm コマンドで必要なパッケージがインストールされているかを確認してください。 # rpm -q php php-cli php-common パッケージ php はインストールされていません。 パッケージ php-cli はインストールされていません。 パッケージ php-common はインストールされていません。

5.5.2 php5 モジュールをインストール PHP5 と最小限必要なパッケージを rpm コマンドでインストールしてください。 # cd /media/CentOS_5.2_Final/CentOS # rpm -ivh php-5.1.6-20.el5.i386.rpm php-cli-5.1.6-20.el5.i386.rpm php-common-5.1.620.el5.i386.rpm 準備中... ########################################### [100%] 1:php-common ########################################### [ 33%] 2:php-cli ########################################### [ 67%] 3:php ########################################### [100%] # cd

ここでは CentOS の DVD-ROM がマウントされている環境で、DVD-ROM のパッケージがあるディレク トリへ移動して作業しています。インストールが終わったら cd コマンドで各自のホームディレクトリへ移動し ています。また、インストールしたのは最小限必要なパッケージなので、基本から拡張された機能を使いた い場合には php-で始まるパッケージをインストールする必要があります。

5-87


5章

Web サーバーの構築

5.5.3 設定ファイルファイルを確認 PHP5 の パ ッ ケ ー ジ で イ ン ス ト ー ル す る と 本 来 は 受 講 生 が 設 定 フ ァ イ ル に 記 述 す べ き 設 定 が/etc/httpd/conf.d/php.conf ファイルとして用意されます。php.conf ファイルを確認してください。

/etc/httpd/conf.d/php.conf ファイル : LoadModule php5_module modules/libphp5.so : AddType text/html .php : DirectoryIndex index.php :

php.conf ファイルには PHP5 モジュールの関連項目だけが書かれているので、確認しておくべきディレ ク テ ィ ブ は わ ず か 3 つ だ け で す 。 LoadModule デ ィ レ ク テ ィ ブ は PHP5 の プ ロ グ ラ ム で あ る php5_module として modules/libphp5.so を読み込み、AddType ディレクティブは.php 拡張子の ファイルを text/html 形式のファイルと解釈する指定で、DirectoryIndex ディレクティブは/をアクセスし た時に index.php ファイルがアクセスされる様に指定しています。

ディレクティブ名

内容

設定例

LoadModule

モジュール指定

php5_module modules/libphp5.so

AddType

ファイルタイプ登録

text/html .php

表 5-4:基本のディレクティブ(4)

5.5.4 Apache を再起動 拡張モジュールを追加するために設定ファイルが変更されたので、Apache を再起動してください。 # /etc/init.d/httpd restart httpd を停止中: httpd を起動中:

[ [

OK OK

] ]

5.5.5 サンプルプログラムを作成 php5 モジュールを追加できたか確認するために、PHP の設定情報や機能を表示してくれる phpinfo 関 数を使ったサンプルを作成して確認してみましょう。 # echo "<?php phpinfo(); ?>" > /var/www/html/info.php

5-88


5.5 PHP 言語を使えるようにする

5.5.6 Web ブラウザーで自分のアドレスを確認 Web ブラウザーで自分のアドレス(http://localhost/info.php)を確認してください。PHP のバージョン から設定情報、利用できる機能が表示されれば動作は正常です。

図 5-8:info.php の結果

5-89


5章

Web サーバーの構築

5.6 バーチャルホストを作る 基本的な設定では、1 つの IP アドレスに DNS で複数の名前を割り振っても、複数の名前でアクセスする と同じホームページが見えます。ここでは、vhost1.dom01.jp と vhost2.dom01.jp という 2 つの URL アドレスを 1 台の生徒マシンに割り当てます。バーチャルホスト機能を使い、それぞれの名前に違うホーム ページを表示させる設定を作りましょう。

5.6.1 IP アドレスと名前の確認 2 つの名前を 1 つの IP アドレスに割り振っている設定を、nslookup コマンドで確認してください。 # nslookup vhost1.dom01.jp Server: 192.168.1.10 Address: 192.168.1.10#53 Non-authoritative answer: Name: vhost1.dom01.jp Address: 192.168.1.101 # nslookup vhost2.dom01.jp Server: 192.168.1.10 Address: 192.168.1.10#53 Non-authoritative answer: Name: vhost2.dom01.jp Address: 192.168.1.101

5.6.2 バーチャルホストの設定 複数の URL アドレスに対応するバーチャルホストは NameVirtualHost ディレクティブと VirtualHost ディレクティブを使います。vhost1.dom01.jp と vhost2.dom01.jp という 2 つの URL アドレスを定義し てください。 ディレクティブ

内容

NameVirtulaHost

バーチャルホストに使う IP アドレ *:80 ス

VirtualHost

バーチャルホストに適用するディ レクティブをまとめる

表 5-5:ディレクティブ(5)

5-90

具体例


5.6 バーチャルホストを作る

/etc/httpd/conf/httpd.conf に追加 NameVirtualHost *:80

コメント化されているのでコメントをはずします。

<VirtualHost *:80> ServerName vhost1.dom01.jp DocumentRoot /var/www/vhost1.dom01.jp ServerAdmin webmaster@vhost1.dom01.jp ErrorLog /var/log/httpd/vhost1.dom01.jp-error_log CustomLog /var/log/httpd/vhost1.dom01.jp-access_log common </VirtualHost> <VirtualHost *:80> ServerName vhost2.dom01.jp DocumentRoot /var/www/vhost2.dom01.jp ServerAdmin webmaster@vhost2.dom01.jp ErrorLog /var/log/httpd/vhost2.dom01.jp-error_log CustomLog /var/log/httpd/vhost2.dom01.jp-access_log common </VirtualHost>

NameVirtualHost ディレクティブでバーチャルホスト機能を使う IP アドレスとポート番号を宣言していま す。<VirtualHost>から</VirtualHost>の中の ServerNmae で対応する 1 つの URL アドレスを定義し ています。今回は 2 つの URL アドレスなので<Directory> から</Directory>の組が 2 つとなりました。 DocumentRoot は公開するディレクトリ、ServerAdmin は連絡先メールアドレス、ErrorLog はエラーロ グのファイル名、CustomLog はアクセスログのファイル名を指定します。

5.6.3 テストファイルを作成 同じマシンで 2 つの URL に対応するので、全く違った内容を表示するようにテストファイルを作成します。 2 カ所の DocumentRoot ディレクティブで指定した 2 つのディレクトリを作成し、各ディレクトリにサンプ ルファイルを用意してください。 # mkdir /var/www/vhost1.dom01.jp # mkdir /var/www/vhost2.dom01.jp # echo 'This is Virtual Page 1 on 101' > /var/www/vhost1.dom01.jp/index.html # echo 'This is Virtual Page 2 on 101' > /var/www/vhost2.dom01.jp/index.html

バーチャルホストの定義を書き加えて設定ファイルを変更したので、Apache を再起動してください。 # /etc/init.d/httpd restart httpd を停止中: httpd を起動中:

[ [

OK OK

] ]

5-91


5章

Web サーバーの構築

5.6.4 Web ブラウザーで自分のアドレスを確認 Web ブラウザーで 2 つの URL アドレスを確認してください。 http://vhost1.dom01.jp/ http://vhost2.dom01.jp/

図 5-9:http://vhost1.dom01.jp/ を開いたところ

図 5-10:http://vhost2.dom01.jp/ を開いたところ

2 つの URL が表示されないときは、DNS の設定が正しいかどうかを nslookup コマンド等で再確認して ください。

5-92


5.6 バーチャルホストを作る

5.6.5 ログファイルを確認 正しく起動したかをログファイルが作られているかで確認してみてください。 # ls -l /var/log/httpd 合計 16 -rw-r--r-- 1 root root 7482 -rw-r--r-- 1 root root 4811 -rw-r--r-- 1 root root 0 -rw-r--r-- 1 root root 0 -rw-r--r-- 1 root root 0 -rw-r--r-- 1 root root 0

3 月 12 03:06 access_log 3 月 12 03:36 error_log 3 月 12 03:36 vhost1.dom01.jp-access_log 3 月 12 03:36 vhost1.dom01.jp_log 3 月 12 03:36 vhost2.dom01.jp-access_log 3 月 12 03:36 vhost2.dom01.jp_log

教科書通りに表示されないときは、Web ブラウザーのキャッシュ機能が古い情報を表示していることもあ ります。表示が思わしくないときは、Web ブラウザーをいったん終了させて、再起動したり、キャッシュを削 除してから確認してみてください。

5-93


5章

5-94

Web サーバーの構築


6章 メールサーバーの設 定 この章の狙い

メールのやり取りが行えるよう、メールサーバーを設定します。まず は Sendmail を使って、メールサーバー同士でメールのやり取り が行えるように設定します。さらに POP/IMAP サーバーとメール クライアントを使って、より実践的なメール環境を構築します。

この章の流れ 6.1 メールサーバー実習の説明 6.2 メールの送信と到着確認 6.3 実習 6.4 メールクライアントソフトでのアクセス


6章

メールサーバーの設定

■ 用語集 ●メールサーバー

電子メールのサービスを行います。クライアントよりメールを受け取り、バケツリレーの方式で相手先の メールサーバーまで送ります。また、受信用のメールサーバでは、送ってきたメールを蓄積しておいて、ク ライアントの要求に応じて応答します。 ●SMTP(Simple Mail Transfer Protocol)

電子メールの送信・転送のときに利用されるプロトコルのことです。 ●SMTP-AUTH

SMTP 上で認証を行う機構。迷惑メール対策としてのメール中継の制限を、この認証機能で許可す る、といった利用方法があります。 ●POP3(Post Office Protocol version3)

クライアントが電子メールを取り寄せるときに利用されるプロトコル。シンプルな設計で、IMAP4 と比べ て機能が少ないです。 ●IMAP4

クライアントが電子メールを取り寄せるときに利用されるプロトコル。複雑な設計だが、メールのフォル ダ等、多機能です。 ●Sendmail

古くからある、UNIX 系 OS で動作する MTA プログラムのことです。 ●Dovecot

POP3 や IMAP4 のサーバ機能を提供するプログラムのことです。 ●Thunderbird

Mozilla Project が配布している、高機能なメールクライアントソフトウェアのことです。 ●MTA

Mail Transfer Agent。メールの転送を行うプログラム。Sendmail や Postfix などが代表例です。

6-96


6.1

6.1

メールサーバー実習の説明

メールサーバー実習の説明

第 6 章では、メールサーバーの設定と動作確認を行います。メールは、インターネットにおいて、 Web に並 んで重要なサービスです。メールサーバーを設定し、実際にメールをやり取りすることで、動作原理を確認 してみましょう。

6.1.1 メールとメールサーバー 電子メールを利用するときには、メールサーバーが動作しています。メールサーバーがメールを受け取る と、宛先のメールアドレスを担当しているメール サーバーまで、バケツリレーの方式で送られます。これは、 Thunderbird/Outlook の様なメールクライアントソフトからのメールでも、Gmail/Hotmail/Yahoo メー ルのような Web メールからのメールでも、動作原理は同じです。 ■ MTA(Mail Transfer Agent)

メールがバケツリレーの方式で運ばれることは、前述の通りです。このバケツリレーをするプログラムのこと を、MTA といいます。本書では、メールサーバーという言葉を連呼しますが、今回の場合 MTA=メール サーバーであると考えてください。本書では Sendmail という MTA を利用します。他に有名な MTA とし て Postfix などがあります。 ■ SMTP(Simple Mail Transfer Protocol)

メールサーバー間は、SMTP というプロトコルでやり取りされています。SMTP はかなり昔に設計、定義さ れたプロトコルのため、認証やアクセス制限などが無く、勝手にメールサーバーを利用されて迷惑メールを 送られてしまうなどの問題がありました。そこでこのような問題を解決するために、ESMTP(拡張 SMTP) が定義されました。SMTP と呼ぶ場合、この ESMTP で定義された機能も含んでいることがあります。 ■ SMTP-AUTH(SMTP Authentication)

正規の SMTP 接続では、メールの中継を行います。ところが前述の通り、SMTP には認証機能が無いた め 、 多 く の 場 合 、 特 定 の 場 所 以 外 か ら の 中 継 を 拒 否 し ま す 。 SMTP-AUTH は 、 SMTP 上 に 認 証 (Authentication)機能を加え、その中継要求が正規のものか不正なものかを判断します。 SMTP-AUTH は ESMTP の機能のうちの 1 つです。 ■ POP3(Post Office Protocol version 3)

電子メールは、送受信でプロトコルが異なります。POP3 は電子メールを受信するときに利用するプロトコ ルです。非常にシンプルなプロトコルで、ユーザ名・パスワードを利用して接続し、メールの内容を受信しま す。 ■ IMAP4

IMAP4 も POP3 同様、メールを受信するときに利用するプロトコルです。IMAP4 は POP3 に比べて機 能が豊富で、大きな特徴としてフォルダ機能をサポートしていることが挙げられます。そのため、メールのク ライアント側でのメール管理が、非常に楽になります。

6-97


6章

メールサーバーの設定

6.1.2 メールのやり取り インターネット上で、沢山の人が電子メールを利用しています。電子メールは、①送信側のメールクライア ントから②送信用メールサーバーを経由して送信され、③受信側のメールサーバーに届き、④受信側の メールクライアントが受信します。

前述の構成で実習を行う場合、サーバー・クライアントをそれぞれ 2 台ずつ、計 4 台必要になります。本実 習では二人一組のペアを組んで 2 台で実習を行うため、以下のような構成を取ります。 ・1 台のマシンで、メールサーバーとメールクライアントの 1 台 2 役とします ・自分のメールサーバーに、ペアの相手のメールアカウントを作成します ・相手のメールサーバーに、自分のメールアカウントが作成されます ・自分のメールクライアントは、相手のメールサーバーを送受信用サーバーとして設定します

図 6-1:本実習の構成

ポイントは、ペアを組む相手のマシン(host.dom02.jp)から、自分のマシン(host.dom01.jp)へメールが 送られる点にあります。

6-98


6.1

メールサーバー実習の説明

6.1.3 実習の進め方 本章では、次の手順で実習を行います。実習でのメールの送受信は、大きく分けて 2 回あります。

A mail コマンドを利用する(6.3) ① 2 名一組になります。それぞれ HostA を利用する A さんと、HostB を利用する B さんとします。 ② Sendmail の設定ファイルを作成します。 ③ 送受信テスト用の自分のアカウント(A さん@HostA、B さん@HostB)を、それぞれのホストに作成し ます。 ④ A さんが HostA から mail コマンドを使って、講師や B さん@HostB にメールを送ります。 ⑤ mail コマンドを使って、到着確認をします。 ⑥ 今度は逆に、B さんから A さん@HostA にメールを送り、確認します。

図 6-2:mail コマンドを使ったメールのやり取り

6-99


6章

メールサーバーの設定

B メールクライアントソフトを利用する(6.4) ①今度は逆に、B さんから A さん@HostA にメールを送り、確認します。 ②A さんが、メールクライアントから A さん@HostB のアカウントを利用して、B さん@HostA に送ります。 ③B さんは、メールクライアントを利用して、B さん@HostA のアカウントに届いたメールを受信します。

図 6-3:メールクライアントを使ったメールのやり取り

6.1.4 実習後の注意点 設定したメールサーバーは、あくまで実習用にメールのやり取りをするために設定されています。ですが、 セキュリティ等決して頑丈に設定してある訳ではないので、以下の点に留意してください。 ●決してグローバル環境には接続しない。 ●実習後はメールサーバーを止める、もしくは本体自体を止める。LAN の中に不正中継を探すマシ

ンがあった場合、それに利用される可能性があるからです。

6-100


6.2

6.2

実習で使用するソフトウェアについて

実習で使用するソフトウェアについて

6.2.1 Sendmail 今回の実習では、MTA として Sendmail を利用します。CentOS をインストールすると Sendmail ははじ めからインストールされており、既に動作しています。

6.2.2 sendmail.cf と.mc ファイル Sendmail は/etc/mail/sendmail.cf を設定ファイルとして動作します。その他、sendmail.cf から参照 するためのファイルがいくつか有り、それらはすべて/etc/mail ディレクトリの中に格納されています。 sendmail.cf を作成する方法は、sendmail.cf を「書くためのファイルを書く」ということです。mc ファイル といわれますが、その中に設定ファイル sendmail.cf のための設定を書き込みます。そして変換マクロを 実行することにより、sendmail.cf が出来上がります。 今回の環境では、/etc/mail/sendmail.mc というのが、その mc ファイルにあたります。sendmail.mc を 変更し、変更のためのコマンドを実行し、sendmail.cf を作成します。sendmail.cf を作成したら、内容を反 映させるため、Sendmail を再起動します。

6.2.3 mail コマンド mail コマンドは、標準でインストールされている、メールを操作するコマンドです。mail コマンドには、メー ルを送る以外に、届いたメールを読む機能もあります。 本実習では、メールで送るときと届いたメールを読むときに利用します。

6.2.4 Dovecot Dovecot は、POP3 や IMAP4 を機能させるサーバーのソフトウェアです。実習では、メールのクライアン トソフトから IMAP4 でメールを受信します。そのときに IMAP4 のサーバーとして動作させます。 標準ではインストールされていないので、実習時にパッケージを追加し、設定ファイルを書き換えます。

6.2.5 Thunderbird Mozilla.org により開発されている、フリーのメールクライアントソフトが、 この Thunderbird です。 Windows, Mac OS X, Linux 等と、動作環境は多岐に渡っており、各国語版も用意されております。機 能も必要十分な内容がそろっています。 本 実 習 で は 、 メ ー ル の ク ラ イ ア ン ト ソ フ ト と し て Thunderbird を 使 っ て 実 習 を 行 い ま す 。 実 際 に Thunderbird をインストールし、メールの送受信を行うことで、メール設定が正しいか確認を行います。

6.2.6 saslauthd saslauthd は、SMTP-AUTH の認証機構です。Sendmail は設定ファイルで SMTP-AUTH の機能を有 効にできますが、Sendmail 自体は認証の機能を持っていません。設定ファイルで SMTP-AUTH の機能 を有効にすると、Sendmail は saslauthd に認証を依頼してその結果を受け取ります。

6-101


6章

メールサーバーの設定

6.3 実習 6.3.1 実習の環境 実習では、受講生 2 名 1 組で実習を行います。本章では、それを便宜的に「A さん」「B さん」と呼びます。 特に明示がない場合は、両者とも作業を行います。どちらか片方の方が作業をするときは、「次は A さんの 作業です」といったように、作業する方を明示します。 設定は、dom01.jp のマシン上で行うものとします。ホスト名は、各自読み替えてください。

図 6-4:実習の流れ

6.3.2 Sendmail 関連パッケージの追加 sendmail.mc から、設定ファイルである sendmail.cf を作成するために、追加のパッケージが必要です。 # cd /media/CentOS_5.2_Final/CentOS/ パッケージのディレクトリに移動します。 # rpm -ivh sendmail-cf-8.13.8-2.el5.i386.rpm sendmail-cf のパッケージをインストールします。 準備中... ########################################### [100%] 1:sendmail-cf ########################################### [100%] #

6-102


6.3 実習

6.3.3 設定ファイルの変更 それでは、実際に sendmail.mc を変更し、sendmail.cf を作成します。 # cd /etc/mail # vi sendmail.mc

sendmail.mc の変更点は、次の 3 点です。 : : TRUST_AUTH_MECH(`EXTERNAL DIGEST-MD5 CRAM-MD5 LOGIN PLAIN')dnl 先頭の”dnl”を削除してください。 define(`confAUTH_MECHANISMS', `EXTERNAL GSSAPI DIGEST-MD5 CRAM-MD5 LOGIN PLAIN') 先頭の”dnl”を削除してください。 : : dnl # address restriction to accept email from the internet or intranet. dnl # dnl DAEMON_OPTIONS(`Port=smtp,Addr=127.0.0.1, Name=MTA')dnl 先頭に”dnl”を付けてください。 dnl # dnl # The following causes sendmail to additionally listen to port 587 for : :

52 行目に、TRUST_AUTH_MECH(`EXTERNAL...と、53 行目に define(`confAUTH_M...の行があ りますので、先頭の"dnl "(半角スペースまで 4 文字)を削除してください。これは、SMTP-AUTH の機能 を有効にするための設定です。 116 行目の付近に、DAEMON_OPTIONS...の行がありますので、この行の先頭に dnl をつけてくださ い。sendmail.mc は m4 マクロの言語で記述されています。m4 マクロで、dnl は行末までコメントアウト、 という意味です。つまり、116 行目の設定内容をコメントアウトした=無効にした、ことになります。 116 行目は、アクセス制限を設けていました。自ホストからのアクセスのみを許可していましたが、それを無 効にしましたので、全ホストからのアクセスを許可します。 次に、local-host-names を編集します。 # vi local-host-names dom01.jp

自マシンのドメイン名を設定します。

local-host-names は、メールサーバーが受け付けるドメイン名(=@以降の部分)を記述します。今回の 場合は、ユーザ名@ドメイン名を受け付けるようにするため、dom01.jp を記述しました。host.dom01.jp や mail.dom01.jp でも受け付けたい場合は、2 行目以降に追加します。

6-103


6章

メールサーバーの設定

次に sendmail.cf を作成し、Sendmail のサービスを再起動します。 sendmail.cf を作成するには、 /etc/mail ディレクトリで make コマンドを実行します。 # pwd 今いる場所を確認します。 /etc/mail # make # ls -l タイムスタンプが make した時間に更新されていることを確認します。 : -rw-r—r-- 1 root root 58251 6 月 4 11:07 sendmail.cf : # /etc/init.d/sendmail restart sendmail サービスを再起動します。 sm-client を停止中: [ OK ] sendmail を停止中: [ OK ] sendmail を起動中: [ OK ] sm-client を起動中: [ OK ] # /etc/init.d/saslauthd start saslauthd を起動中:

SMTP 認証用のサービスを起動します。 [ OK ]

# chkconfig --list sendmail sendmail 0:off 1:off 2:on # chkconfig --list saslauthd sendmail 0:off 1:off 2:off なっている # chkconfig saslauthd on sendmail 0:off 1:off 2:off なった

sendmail の自動起動を確認します。 3:on 4:on 5:on 6:off 自動的に起動している saslauthd の自動起動を確認します。 3:off 4:off 5:off 6:off 自動的に起動しない設定に saslauthd を自動的に起動するようにします。 3:on 4:on 5:on 6:off 自動的に起動する設定に

6.3.4 メールの送受信 それでは、実際にメールを送信する前に、まず、宛先となるアカウントを作成します。 # useradd usera # passwd usera New UNIX password: userapass Retype new UNIX password: userapass # useradd userb # passwd userb New UNIX password: userbpass Retype new UNIX password: userbpass # exit

usera というアカウントを作成します。 パスワードを設定します。 入力文字は表示されません。 入力文字は表示されません。 userb というアカウントを作成します。 パスワードを設定します。 入力文字は表示されません。 入力文字は表示されません。 ログアウトします。

これで、A さんのアカウント usera と、B さんのアカウント userb を作成されました。パスワードは、それぞれ userapass と userbpass で、ホームディレクトリは/home/usera と/home/userb になります。

6-104


6.3 実習

次にメールを送信します。 usera でログインしてください。B さんは userb でログインしてください。 # mail userb@dom02.jp mail コマンドを利用します。 Subject: Test mail from dom01.jp Subject を入力します。 This is Test Mail from dom01.jp メッセージ本文を入力します。 . メッセージ本文入力が終わったら、ピリオドを押します。 Cc: Cc のアドレスを求められますが、何も無いのでそのままエンターを押してください。

これでメールが送信できました。では、実際に到着しているか確認をします。 [ここから B さんのみの作業です] B さんが dom02.jp に userb アカウントでログインしているとします。 # ls -l /var/mail/userb 到着したメールは、ここに保存されています。 # cat /var/mail/userb メールの内容を確認します。 Return-Path: <usera@host.dom01.jp> Received: from host.dom01.jp ([10.211.55.101]) by host.dom02.jp (8.13.8/8.13.8) with ESMTP id n2TFXUJW004892 for <userb@dom02.jp>; Mon, 30 Mar 2009 00:33:30 +0900 Received: from host.dom01.jp (localhost.localdomain [127.0.0.1]) by host.dom01.jp (8.13.8/8.13.8) with ESMTP id n2TFXTs3004813 for <userb@dom02.jp>; Mon, 30 Mar 2009 00:33:29 +0900 Received: (from usera@localhost) by host.dom01.jp (8.13.8/8.13.8/Submit) id n2TFXTT5004812 for userb@dom02.jp; Mon, 30 Mar 2009 00:33:29 +0900 Date: Mon, 30 Mar 2009 00:33:29 +0900 From: usera <usera@host.dom01.jp> Message-Id: <200903291533.n2TFXTT5004812@host.dom01.jp> To: userb@dom02.jp Subject: Test mail from dom01.jp This is Test Mail 1 from dom01.jp # mail メールを mail コマンドで読みます。 Mail version 8.1 6/6/93. Type ? for help. "/var/spool/mail/usera": 1 message 1 new >N 1 usera@host.dom01.jp Mon Mar 30 00:33 19/790 "Test mail from dom01." & p &というプロンプトになるので p(=print メールを読むときに利用)を押します。 Message 1: From usera@host.dom01.jp Mon Mar 30 00:33:30 2009 Date: Mon, 30 Mar 2009 00:33:29 +0900 From: usera <usera@host.dom01.jp> To: userb@dom02.jp Subject: Test mail from dom01.jp This is Test Mail 1 from dom01.jp & Ctrl-d

メールが読み終わったので、mail コマンドを終了します。

6-105


6章

メールサーバーの設定

メールの送受信の経過を見るためにログを見てみましょう。ログは/var/log/maillog にありますが、このロ グは root 権限でしか読めないので、root になります。 # su パスワード: # less /var/log/maillog : : Mar 30 00:33:30 host sendmail[4892]: n2TFXUJW004892: from=<usera@host.dom01.jp>, size=540, class=0, nrcpts=1, msgid=<200903291533.n2TFXTT5004812@host.dom01.jp>, proto=ESMTP, daemon=MTA, relay=[192.168.1.101] Mar 30 00:33:30 host sendmail[4893]: n2TFXUJW004892: to=<userb@dom02.jp>, delay= 00:00:00, xdelay=00:00:00, mailer=local, pri=30714, dsn=2.0.0, stat=Sent

このように、host.dom01.jp から host.dom02.jp にメールが送られていることがわかります。 以上で、A さんによる実習が終了です。次に、今度は B さんが A さんに対してメールを送ってみましょう。

6-106


6.4 メールクライアントソフトでのアクセス

6.4 メールクライアントソフトでのアクセス 6.4.1 メールクライアントを使った実習 mail コマンドを使ったメールの送受信が終わったら、メールクライアントソフトを利用して、メールの送受信 を行います。今回の実習の流れは下記のようになります。

図 6-5:メールクライアントを使った実習

A さんから B さんにメール送信 A さんは B さんが作成した dom02.jp の A さん用のアカウント(usera@dom02.jp)を使って、B さん (userb@dom01.jp)宛てにメールを送信します。 B さんは A さんから送られたメールを A さんのサーバー(dom01.jp)の B さんのアカウントのメールを受 信します。 B さんから A さんにメール送信 B さんは A さんが作成した dom01.jp の B さん用のアカウント(userb@dom01.jp)を使って、A さん (usera@dom02.jp)宛てにメールを送信します。 A さんは B さんから送られたメールを B さんのサーバー(dom02.jp)の A さんのアカウントのメールを受 信します。

6-107


6章

メールサーバーの設定

6.4.2 パッケージの追加 それでは早速、必要なパッケージを追加して、クライアントでメールを送受信できるように設定してみましょ う。本節では、実際に Thunderbird と IMAP のサーバーである Dovecot をインストールします。 # cd /media/CentOS_5.2_Final/CentOS/ # rpm -ivh perl-DBI-1.52-1.fc6.i386.rpm mysql-5.0.45-7.el5.i386.rpm dovecot-1.0.72.el5.i386.rpm thunderbird-2.0.0.14-1.el5.centos.i386.rpm 準備中... ########################################### [100%] 1:perl-DBI ########################################### [ 25%] 2:mysql ########################################### [ 50%] 3:dovecot ########################################### [ 75%] 4:thunderbird ########################################### [100%]

これで必要なパッケージのインストールが終了しました。 thunderbird は、メールクライアントである Thunderbird のパッケージです。Dovecot は、IMAP サー バーのパッケージになります。Dovecot は、動作に MySQL のクライアントと Perl-DBI の機能を必要とす るため、MySQL のパッケージと Perl のパッケージもインストールしています。

6.4.3 Dovecot の設定 次に、IMAP サーバーである Dovecot の設定を行います。/etc/dovecot.conf に設定ファイルがあり、そ れを変更します。変更箇所は 1 カ所です。 # vi /etc/dovecot.conf : protocols = imap pop3 : # /etc/init.d/dovecot start Dovecot Imap を起動中: # chkconfig dovecot on

20 行目です。

サーバーを起動します。 [ 自動起動の設定

OK

]

20 行目の設定は、Dovecot の動作を設定します。Dovecot は IMAP 以外に POP3 のサーバーとしても 動作させられるので、今回は両方の機能を ON にしました。39 行目の設定は、IPv4 による受信の対象ア ドレスを全アドレスに設定しました。 chkconfig は、設定したランレベルでサービス動作します。Dovecot をランレベル 5 のとき、自動的に動 作させるようにしました。

6-108


6.4 メールクライアントソフトでのアクセス

6.4.4 Thunderbird の設定 次に Thunderbird の設定を行います。 ① A さんは usera アカウントで host.dom01.jp に、B さんは userb アカウントで host.dom02.jp にログ インしてください。解説は、A さんに対して行います。 ② メニューバー「アプリケーション」ー「インターネット」ー「Thunderbird Email」を選択してください。

図 6-6: Thunderbird を起動します。

③ Thunderbird が起動します。アカウントウイザードが起動しますので、「メールアカウント」を選択し「次 へ」を押してください。

図 6-7: アカウントの種類

6-109


6章

メールサーバーの設定

④ 差出人情報の入力を求められます。あなたの名前を「usera」メールアドレスを「usera@dom02.jp」と してください。

図 6-8:差出人情報の設定

⑤ サーバー情報の入力を求められます。「IMAP」、メール受信サーバーを「mail.dom02.jp」メール送信 サーバーを「mail.dom02.jp」としてください。

図 6-9:メールサーバーの設定

6-110


6.4 メールクライアントソフトでのアクセス ⑥ 受信サーバーのユーザ名を「usera」としてください。

図 6-10:ユーザ名の設定

⑦ アカウント名のダイアログが出ますので、そのまま「次へ」を押してください。

図 6-11:アカウント名の確認

6-111


6章

メールサーバーの設定

⑧ 設定した項目を確認して「完了」のボタンを押してください。

図 6-12:設定の確認

⑨ usera@mail.dom02.jp のパスワードを求められますので、usera のパスワードを設定し、「パスワード マネージャでこのパスワードを保存する」にチェックを入れ「OK」を押してください。

図 6-13:パスワードの入力

6-112


6.4 メールクライアントソフトでのアクセス ⑩ 警告の画面が出ますので「OK」を押してください。

図 6-14:機密情報の確認

これでメールクライアントでのメールの送受信の設定が終了しました。 次に B さんが Dovecot と Thunderbird の設定を行ってください。

6-113


6章

メールサーバーの設定

6.4.5 メールのやり取りをする 実際にメールの送受信をしてみましょう。usera@dom02.jp のアカウントから、userb@dom01.jpのアカ ウントにメールを送ってみます。

① Thunderbird の「作成」のボタンを押します。 ② 電子メールを作成し、送信ボタンを押してください。

図 6-15:userb@dom01.jp 宛てのメール

③ ダイアログが現れ、メールサーバーのパスワードが尋ねられます。 usera のパスワードを入れてくださ い。これが SMTP-AUTH のパスワードになります。

④ userb@dom01.jp にメールが届きます。

6-114


6.4 メールクライアントソフトでのアクセス

図 6-16:userb@dom01.jp にメールが届く

こ れ で 、 Thunderbird を 利 用 し 電 子 メ ー ル の 送 受 信 が で き る こ と を 確 認 し ま し た 。 送 信 に は SMTP(+SMTP-AUTH)を利用し、受信には IMAP を利用しています。 A さんと B さんが入れ替わって、メールのやり取りを行ってみましょう。

6.4.6 まとめ 本章では、電子メールに関する学習を行いました。また、実際にメールサーバーを設定し、mail コマンドや Thunderbird を利用してメールの送受信の確認を行いました。 メールサーバーの設定は、メールサーバーが正しく設定され起動していたとしても、DNS サーバーが正し く動いていなければ利用できないなどの理由から難しかったと思います。設定ファイルの記述に問題がな いのに、メールがどうしても送られ ない・受信できない場合は、 まず DNS が正しく 動いているか、 nslookup コマンドや dig コマンドを実行して確認してください。また、ログ(/var/log/messages)を見て、 エラーが出ていないか確認することも大切です。

6-115


Issuu converts static files into: digital portfolios, online yearbooks, online catalogs, digital photo albums and more. Sign up and create your flipbook.