7. Linuxのシステム管理に関する知識 II

シラバス: 

1. 科目の概要

Linuxのシステム管理に関する手順のうち、やや高度なサービスの設定に関する手順を解説する。サーバとして利用する際の基本的な設定と、DHCP、FTP、ファイル共有など様々なサービスについて具体的な設定方法を示し、運用のノウハウを紹介する。

2. 習得ポイント

本科目の学習により習得することが期待されるポイントは以下の通り。

3. IT知識体系との対応関係

「7. Linuxのシステム管理に関する知識Ⅱ」とIT知識体系との対応関係は以下の通り。

[シラバス:http://www.ipa.go.jp/software/open/ossc/download/Model_Curriculum_05_02.pdf]

<IT知識体系上の関連部分>

4. OSSモデルカリキュラム固有の知識

OSS モデルカリキュラム固有の知識として、Linux という具体的なシステムを通した運

用に関する知識がある。Linux の管理者の主要な作業であるネットワークサービス管理やサーバやネットワークのトラブルシューティングが含まれる。

(網掛け部分はIT知識体系で学習できる知識を示し、それ以外はOSSモデルカリキュラム固有の知識を示している)

II-7-1. ルーティングの設定

ルーティングの概念を簡単に示したうえで、Linuxにおけるネットワークルーティングの設定方法を説明する。ルーティングの設定手順を示し、さらにそのルーティング設定が正しく動作しているかどうかの検証方法についても述べる。

【学習の要点】

* ネットワーク通信を行うためには、目的地へ到達するための経路情報(ルーティング)を設定する必要がある。

* ルーティングには静的ルートと動的ルートがあり、通信先がどこに接続されているかを定義する「ルーティングテーブル」で管理を行う。

* ルータなど複数のネットワークインタフェースを持つ場合、IPアドレスにより送出するネットワークインタフェースを設定する。また、設定に合致しない場合の送出先としてデフォルトゲートウェイを設定する必要がある。

* 静的ルートはルーティング設定ファイルへ経路情報を記述する他、routeコマンドにて経路情報の追加や削除を行う。

* route、tracerouteコマンド等により、実際に設定されているルーティングの確認することができる。

図II-7-1. ネットワークのルーティング

 

【解説】

1) ネットワークのルーティング

コンピュータに複数のネットワークインタフェースが接続されている場合や、複数のネットワークを経由して他のネットワークへ接続されているコンピュータと通信を行う場合、通信先がどのネットワークに接続されているか経路情報がわからなければ通信することができない。

この経路情報を見つけ出す方法のことを「ルーティング」と呼び、「ルーティングテーブル」によって管理されている経路情報を使用して通信経路を決定する。ルーティングテーブルは宛先となるネットワークアドレスと使用するネットワークインタフェースなどの情報を設定する。

宛先がルーティングテーブルに設定されているネットワークアドレスに一致すると、指定されたネットワークインタフェースへデータを送出する。どの情報にも一致しない場合は、デフォルトゲートウェイとして設定されているネットワークインタフェースへデータを送出する。

ルーティングには静的ルーティングと動的ルーティングがある。

* 静的ルーティング

予め最適な経路を固定的に定義する。ルートが固定化されるためトラブルが発生した時に追跡が容易になるなどのメリットはあるが、ネットワークが変更されるたびにルーティングテーブルの設定を変更する必要がある。

* 動的ルーティング

隣接したルータ間で経路情報を交換しあうことによって、自動的に最適な経路を取得する。ネットワークの変更があった場合でも設定のルーティングテーブルの設定を変更する必要はないが、ルートを探すためにブロードキャストを行うため、ルート探索がネットワークの混雑を引き起こすことがある。

2) 静的ルーティングの設定

* 設定ファイルによる設定

ルーティング設定ファイルに経路情報を記述しておくと、ネットワークインタフェースの実行時にファイルに記述された経路情報を設定することができる。

/etc/sysconfig/static-routes

 any net 192.168.1.0 netmask 255.255.255.0 gw 192.168.0.1<br />
any host 192.168.1.10 gw 192.168.0.1

* routeコマンドによる設定

routeコマンドを使用すると、システムを起動後に静的ルーティングの追加や削除を行うことができる。またrouteコマンドはルーティングテーブルの状態を確認するためにも使用する。

静的ルーティングの追加

# route add –net 192.168.1.0 255.255.255.0 eth0

# route add –host 192.168.1.10 eth0

3) ルーティングの確認

tracerouteコマンドを使用すると、宛先となるコンピュータまでの経路の確認を行うことができる。

#traceroute computer3

II-7-2. DHCP環境の構築

ネットワークの環境を動的に設定するためのプロトコルであるDHCPの仕組みについて解説する。さらにLinuxにおけるDHCPの利用方法と、DHCPサーバの設定方法およびDHCPサーバの運用管理方法についても説明する。

【学習の要点】

* DHCPはネットワークに接続するコンピュータにIPアドレスなど必要な情報の割り当てを自動的に行うプロトコルである。

* Linuxではdhcpdと呼ばれるデーモンを利用してサービスの提供を行う。

* 設定ファイル(dhcpd.conf)によって、割り当てるIPアドレス、割り当てを行うコンピュータの制限などの設定を行う。

* DHCPによるIPアドレスの割り当て状況等はsyslogやリースファイルに記録される。割り当てを行うIPアドレスの過不足、不正アクセス等がないか定期的に確認を行う必要がある。

図II-7-2. DHCPの概要

【解説】

1) DHCPとは

DHCP(Dynamic Host Configuration Protocol)とは、コンピュータがネットワーク接続する際に、IPアドレス、ネットマスク、デフォルトゲートウェイ、DNSサーバアドレス等の情報を自動的に割り当てるためのプロトコルである。

DHCPサーバは予めクライアントへ割り当てるためのIPアドレスのリスト(アドレスプール)を用意しておく。ネットワークへDHCPクライアントのコンピュータを接続すると、DHCPクライアントはIPアドレスが255.255.255.255のUDPの要求メッセージを送信する。

メッセージを受信したDHCPサーバはアドレスプールから他のコンピュータで使用されていないIPアドレスを割り当て、DHCPクライアントへ通知を行う。

DHCPを利用する利点としては以下のような点が挙げられる。

* IPアドレス管理の省力化

IPアドレスを固定で割り当てた場合、クライアントの追加やネットワークアドレスの変更の度に各クライアントへIPアドレス等を正確に設定する必要がある。

DHCPにて動的にIPアドレスを割り当てることにより、これらの設定作業が不要となる。

* IPアドレスの有効活用

接続が必要なクライアントに対して、同時に接続するクライアント数が限られている場合、DHCPを利用することにより用意しておくIPアドレスを少なくすることができる。

 DHCPサーバで動的に割り当てられるIPアドレスは同じコンピュータに対して常に同じIPアドレスが割り当てられるとは限らない。

サーバなど他のコンピュータからIPアドレスでアクセスされるコンピュータの場合、固定のIPアドレスを割り当てる設定にしておく。これにより、該当するコンピュータから要求メッセージがあった場合、常に同じIPアドレスを割り当てることができる。

2) DHCPサーバの設定方法

LinuxではdhcpdサービスによりDHCPサーバを利用することができる。

dhcpdの設定は/etc/dhcpd.confによって行い、主な設定項目は以下の通り。

・ ダイナミックDNSの更新方法

・ サブネットワークの情報

・ アドレスプールの指定

・ リリース時間の指定

・ 固定でIPアドレスを割り当てるコンピュータの指定

3) DHCPのセキュリティ

DHCPはブロードキャスト型のサービスであり、ネットワークへ要求メッセージを送信できるコンピュータであれば、サーバ情報などを容易に取得することができる。これはセキュリティ上のリスクを抱えていることになる。

そのため、IPアドレスを割り当てるコンピュータのMACアドレスなどの情報を事前にDHCPサーバへ登録しておき、登録されているコンピュータ以外への割り当ては行わないようにする。

また、DHCPでは要求メッセージを受信したことと、割り当てたIPアドレスの情報をsyslogにてログへ出力しており、不正な要求が無いか定期的に確認する。

II-7-3. FTPサーバの設定

FTPの概要を説明し、FTPサーバへのアクセスとサーバの動作について解説する。さらにLinuxで動作する代表的なFTPサーバを紹介する。FTPサーバのインストールと設定、運用管理の手順について解説する。

【学習の要点】

* FTP(File Transfer Protocol)サーバはネットワークに接続しているコンピュータ間でファイルの送受信を行うためのサーバである。

* FTPは制御ポートとデータポートの2つのポートにより接続を行い、データポートはFTPサーバが設定するが、「Passive モード」を利用するとクライアントから設定することもできる。

* 一般的なFTPサーバとして、vsftpdのインストールおよび設定を行う。

* FTPの使用状況の確認や不正アクセスの監視を行うため、定期的にログファイル等の確認を行う必要がある。

図II-7-3. FTPの概要

【解説】

1) FTPとは

FTP(File Transfer Protocol)はコンピュータ間で明示的にファイルを指定して転送するプロトコルである。

FTPの特徴としては以下のような点が挙げられる。

* 異機種間接続機能

LinuxとWindowsなど異なるファイルシステムの間でファイルの転送ができる。

* 匿名による認証のサポート

不特定多数のユーザにファイル転送サービスを提供できる。

2) FTPによるファイル転送

FTPは制御ポートとデータポートの2つのポートを利用して接続を確立する。

クライアントからFTPの接続要求が来ると、制御ポートにて接続および認証を行う。その後制御ポートにてコマンドの送信と応答が行われ、データの転送が必要になるとデータポートの接続を行いデータポートにてデータの送信を行う。

データポートの接続では、サーバからクライアントへ使用するポート番号を通知し、クライアントがこのポート番号でサーバへ接続を行う。ファイアウォールなど制限されたネットワークではサーバが通知したポート番号が使用できない場合がある。この場合はクライアントから接続するポート番号の候補を通知し、その中から使用するポート番号をサーバから通知を行う「Passiveモード」にて接続を行う。

FTPで転送するデータタイプとしては、ASCIIコード、EBCDICコード、バイナリデータなどがあり、転送モードとしてはストリームモード、ブロックモード、圧縮モードが指定できる。

3) FTPサーバの設定

LinuxではvsftpdサービスによりFTPサーバを利用することができる。

vsftpdの設定は「/etc/vsftpd/vsftp.conf」、「/etc/vsftpd/ftpusers」によって行い、主な設定項目は以下の通り。

・ 匿名FTPサーバの設定

・ ユーザログインの設定

・ FTPコマンドでのデータの書き込みの設定

・ 転送ログ出力の設定

・ ユーザのUMASKの設定

・ アクセス拒否ユーザの設定

・ tcp_wrappers利用の設定

4) FTPのセキュリティ

匿名FTPサーバとして設定した場合、不特定多数のユーザからのアクセスが行われるため、オプションの設定により十分なセキュリティを確保する必要ある。

FTPでは認証時のログ、ファイル転送に関するログ、vsftpdの動作に関するログを出力する。これらのログを定期的に解析し統計情報を作成することにより、不正なアクセスの有無の調査や使用状況の確認を行う必要がある。

II-7-4. ファイル共有

ネットワーク上におけるファイル共有の考え方について述べる。ファイル共有には様々な方法があることを示し、それぞれのファイル共有手法の特徴と歴史、代表的なサーバ、利用例などを紹介する。

【学習の要点】

* コンピュータ上にあるファイルを、ネットワークを経由して複数人でアクセスできる状態におくことをファイル共有という。

* ファイル共有の方法としてはクライアント・サーバ方式、P2P方式などがあるが、これらはファイルの内容が非同期である。

* クライアント・サーバ方式は、HTTPやFTPなど共有するファイルをサーバへアップロードまたはダウンロードすることによりファイルの共有を行う。

* P2P方式はサーバを持たず、ファイルを共有するコンピュータ間でファイルの転送を行うことによりファイルの共有を行う。

* ファイルの内容が同期する方法としては、LinuxではNFS、WindowsではSMB(CIFS)、Mac OSではAppleShareという方式が使用されている。

図II-7-4. ファイル共有

【解説】

1) ネットワーク上のファイル共有とは

情報の公開や、共同で作業をする際にデータの同期を図る場合など、あるコンピュータ上にあるファイルを、ネットワーク経由で他のコンピュータから複数の人がアクセスできる状態におくことをファイル共有という。通常、ファイル共有ではデータの同期性が保障されているものを指すが、広義ではファイルの送受信によりデータの同期性が保障されていないものも含まれる。

2) データが非同期のファイル共有

ファイルの送受信により同じファイルを取得することによりファイル共有を行う。受信側では送信側のファイルのコピーを保持しているため、送信側でファイルの変更があった場合でも受信側のファイルには変更が反映されない。

このファイル共有の方法は、クライアント・サーバ方式とP2P方式の2つに大きく分けられる。

* クライアント・サーバ方式

共有を行うファイルを全てサーバ上で管理をし、クライアントからファイルのダウンロードやアップロードを行う。HTTPやFTPなどを利用したファイル共有がこれにあたる。

共有の元となるファイルが一元管理されているため、変更があった場合でも即座に反映される。

* P2P方式

ファイルの送受信がサーバを介さずにコンピュータ間で行われる。BitTorrentやCabosなどを利用したファイル共有がこれにあたる。

共有するファイルを持っている複数のコンピュータ(ノード)から最適なコンピュータを選択しファイルのダウンロードを行うため、ファイルダウンロードの効率は良くなるが、元となるファイルに変更があった場合でも、ダウンロード先のファイル反映されているとは限らない。

3) ファイルが同期しているファイル共有

1つのファイルに同時にアクセスできるようにファイル共有を行う。送信側と受信側では同じファイルにアクセスを行っているため、送信側でファイルの変更があった場合、受信側でも変更が即時に反映される。

このファイル共有の方法は、サーバとなるコンピュータでファイルを共有するファイルシステムまたはディレクトリなどの領域を提供し、これをクライアントとなるコンピュータから使用することにより、サーバとクライアント間、クライアントとクライアント間でファイルの共有を行う。

Linuxで利用されるファイル共有としては、主にLinux間で使用する「NFS」や、LinuxとWindows間で使用する「Samba」などがこれにあたる。

WindowsではSMB(Server Message Block)プロトコルを利用した、ファイルやプリンタの共有がこれにあたる。

Mac OSではAppleTalkプロトコルを利用したAppleShareによるファイルやプリンタの共有がこれにあたる。

II-7-5. NFSの設定と運用

UNIXで利用されてきた代表的なファイル共有の手法であるNFSについて解説する。NFSとは何か、LinuxサーバにおけるNFSの設定手順、 NFSクライアントの設定といった具体的な設定方法を説明し、NFSの運用管理に必要なノウハウについても触れる。

【学習の要点】

* NFS(Network File System)はネットワークに接続されたLinux間でファイルシステムを共有するためのシステムである。

* NFSサーバでは設定ファイル(/etc/exports)により共有するディレクトリやアクセスするユーザおよびコンピュータの設定等を行う。

* NFSクライアントは、mountコマンドによる手動、またはfstabへ設定することで起動時に自動でNFSサーバのファイルシステムを共有することができる。

* NFS サーバーログ機能によりNFS の読み取りと書き込み、および対象とするファイルシステムを変更する操作の記録を行う。

図II-7-5. NFSの概要

 

【解説】

1) NFSとは

NFS(Network File System)はサーバ上にあるファイルシステムを、クライアントでマウントすることにより、クライアント上にあるファイルシステムと同様に使用できるサービスを提供するものである。

このサービスを利用することにより、サーバにあるファイルもクライアントにあるファイルと区別することなく同様に操作を行うことが可能となる。

また、FTPと同様にファイルシステムの違いを吸収できる異機種間接続機能を持っているため、LinuxとWindowsなどOSの違うコンピュータ間でもサービスを利用することができる。

NFSクライアントへ共有の許可を出すことを「エクスポート」と呼ぶ。

NFSでは複数のポート番号を利用して接続を行う。NFSサーバがNFSクライアントから接続の要求を受け取ると、ポート番号を保管しているポートマッパーから接続を行うポート番号を取得して接続を行う。

2) NFSサーバの設定

LinuxではnfsdサービスによりNFSサーバを利用することができる。

nfsdは/etc/exportsにより、NFSサーバ上のどのファイルシステムを他のコンピュータが共有してよいのか設定を行う。さらに、オプションとして、ディレクトリに対するアクセス制限などのファイル属性や、サーバとクライアントのユーザIDやグループIDの対応方法を設定する「ユーザ属性」を指定することができる。

/etc/exportsの設定例

 /exportdir	192.168.0.0/255.255.255.0(rw,no_route_squash)

/etc/exportsに設定した内容を有効にするためには、exportfsコマンドを使用する。

showmount コマンドにて、NFSマウントしているクライアントの情報を確認することができる。

3) NFSクライアントの設定

NFSサーバにて提供されている共有ファイルを使用するためには、他のファイルシステムと同様にmountコマンドにてNFSマウントを行う。

# mount –t nfs –o nfsvers=3 nfsserver:/exportdir /mnt/nfs

/etc/fstabへマウント情報を記述することによりnetfsサービスを利用してシステムを起動した時に自動的にマウントを行うことができる。

また、automountコマンドを使用することにより、ファイルシステムの利用に応じて自動的にマウント/アンマウントを行うことができる。

4) NFSのセキュリティ

NFSで読み書き込み可能な状態でマウントした場合、クライアント側のユーザ権限にてファイルへのアクセスが可能となる。これによりクライアントにてroot権限を持ったユーザで利用するとNFSで共有されたファイル全てにアクセス可能な状態になる。これを防ぐためには、/etc/exportsにてrootでアクセスがあった場合匿名ユーザとしてアクセスを行うように設定を行っておく必要がある。

NFSサーバでは、クライアントの認証結果やサーバから呼出しや書き込みを行ったファイルの情報をsyslogへ出力する。このログからNFSの利用状況や不正なアクセスが行われていないか定期的に確認する必要がある。

II-7-6. Sambaの設定と運用

LinuxとWindowsでデータを共有するためのSambaについて説明する。Sambaとは何か、Sambaのインストール方法、Sambaサーバの設定方法、Sambaクライアントの利用法など、Sambaの導入から運用に至るまでに必要な知識を紹介する。

【学習の要点】

* SambaはLinux と Microsoft Windows との間でファイルやプリンタといった資源を共有するためのソフトウェアである。

* SambaはLinuxのサービスとして起動され、smbdおよびnmbdの2つのプログラムで構成される。

* Sambaサーバでは設定ファイル(smb.conf)により参加するワークグループ、共有するディレクトリやアクセスするユーザおよびコンピュータの設定等を行う。

* Microsoft Windowsからはネットワークコンピュータとしてアクセスすることが可能であり、Linuxからはsamba-clientを使用してアクセスを行う。

* LinuxとMicrosoft Windows が混在しているネットワーク環境では、NFSと共存させることも可能であるが、ファイル名に日本語を使用する場合には注意が必要となる。

* Sambaではサービスの起動状態を出力するログファイルと、Sambaサーバへ接続したクライアントの状況を出力するログファイルを作成する。

図II-7-6. Sambaの概要

【解説】

1) Sambaとは

SambaはWindowsのNetBEUI(NetBIOS Extended User Interface)をLinux上で実現するもので、LinuxとWindowsとの間でファイル共有や印刷などの機能を提供するものである。

Sambaはファイル共有だけでなく、Windowsドメインコントローラの仕組みも提供しているため、LinuxサーバでWindowsサーバと同様のサービスを提供することができる。

SambaはTCP/IP上でネットワークの処理を行うNetBIOSと、ファイルや印刷を共有するサービスを提供するSMB(Server Message Block)の2つのプロトコルを使用している。

Sambaサーバの共有ファイルへアクセスする際の認証としては大きく分けてWindowsワークグループで実装されている「共有レベルのセキュリティ認証」とWindowsドメインネットワークで実装されている「ユーザレベルのセキュリティ認証」の2つがあるが、現在では「ユーザレベルのセキュリティ認証」が標準となっている。

日本語ファイル名については、LinuxとWindowsでは使用している文字コードの違いがあるため、各々の環境で使用する文字コードの設定をする必要がある。また、Windowsでは大文字と小文字の区別をしていないため、大文字と小文字が混在しているファイル名の扱いについても予め設定する必要がある。

2) Sambaサーバの設定

SambaはSMBの機能を提供するsmbdと、NetBIOSの通信を行うnmbdで構成されている。

Sambaの設定は「/etc/samba/smb.conf」、「/etc/lmhosts」によって行い、主な設定項目は以下の通りである。

・ ワークグループ名の設定

・ アクセスを許可するIPアドレスの設定

・ パスワードファイルの設定

・ プリンタ共有の設定

・ 文字コードの設定

・ 共有するディレクトリの設定

・ NetBIOS名とIPアドレスの関係情報の設定

WindowsクライアントからSambaサーバへアクセスする際に使用するユーザIDやパスワードはsmbpasswdコマンドを使用してパスワードファイルを作成し管理を行う。

3) クライアントからの利用方法

WindowsクライアントからSambaサーバへ接続する場合は、Windowsファイル共有機能を利用し、「マイネットワーク」で共有ディレクトリを検索して共有を行う。

LinuxからWindows環境のファイル共有へ接続する場合はsmbclientコマンド(samba-client)を使用し、コンピュータ名と共有名を指定してファイルの共有を行う。

4) Sambaのセキュリティ

「ネットワークインタフェースによるアクセス制限」、「IPアドレスによるアクセス制限」および「ユーザ名によるアクセス制限」を設定することにより、セキュリティを確保することができる。

Sambaでは、smbdおよびnmbdの動作状態に関するログの他、接続したクライアント毎にアクセルログを出力する。これらから不正なアクセスが無いか、定期的に確認する必要がある。

II-7-7. Linuxサーバの運用手順

Linuxサーバの起動・停止から日常的な管理項目まで、Linuxサーバの運用に関する手順を説明する。とくにユーザの管理やディスク使用量の管理など、日常的に気を配る必要がある項目に焦点をあてて運用管理のノウハウを紹介する。

【学習の要点】

* Linuxサーバの運用に必要な管理手順を実際にLinuxを操作しながら理解する。

* サーバの起動と停止を行う。

* ユーザ管理ポリシーに準拠しユーザの追加・変更・削除を行う。

* デバイスの追加・交換などによるパーティションの作成やマウントを行う。

* サーバ管理コマンドによるサーバの負荷情報(CPU、メモリ、ディスクの使用量など)の確認を行う。

図II-7-7. 運用管理作業の例

【解説】

1) 起動と停止

Linuxを起動すると、initプログラムが実行される。Initプログラムではシステムの実行状態を表す「ランレベル」を指定することができる。ランレベルは0から6までの数値で指定する。

ランレベルはディストリビューションにより異なるが、代表的な実行状態を以下に示す。

* ランレベル0、6 : ランレベル0はシステムの停止、ランレベル6はシステムの再起動。

* ランレベル1 : ランレベル1はシングルユーザモードの状態で、rootによるログインが出来なくなった場合や、通常の起動が出来なくなった場合に使用する。システムのバックアップの際にも使用する。

* ランレベル3、5 : ランレベル3、5は通常のシステム起動に使用し、ランレベル3はテキストモード、ランレベル5はGUIモードで起動する。

システム実行中でも、上記のランレベルを指定してinitコマンドを実行することにより、指定した状態へ移行することができる。また、システムの停止、再起動はshutdown コマンドでも行える。

2) ユーザの追加

システムの利用者の変さらに伴い、一般ユーザの追加、変更および削除の作業が必要になる。

ユーザを管理する際には、システムの利用範囲や組織構成を明確にしたユーザ管理ポリシーを作成し、これに沿って行う必要がある。以下のようなコマンドでユーザの管理を行う。

* useradd : ユーザの新規作成。

* userdel : ユーザの削除。

* passwd : パスワードの変更

3) デバイスの追加、変更

障害が発生したハードディスクの交換や、新規に追加したデバイスを使用可能な状態にするには、パーティションの作成およびマウントが必要となる。以下のようなコマンドでデバイスを使用可能な状態にする。

* fdiskコマンド : デバイスにパーティションを作成し、ファイルシステムの設定を行う。

* mountコマンド : 作成したパーティションをマウントし使用可能な状態にする。起動時に自動的にマウントするには/etc/fstabに設定を記述する。

4) リソースの管理

サーバ管理においてはCPU、メモリ、ハードディスク、ネットワークなどのリソースを監視し、負荷状況を管理する必要がある。以下のようなコマンドでリソースの状態を確認することができる。

* psコマンド : 起動中のプロセスの実行状態やCPU、メモリの使用状況を表示。

* vmstatコマンド : CPUやメモリ、SWAPファイルなどの使用状況を表示。

* freeコマンド : 物理メモリおよび仮想メモリの使用状況など、メモリの詳細情報を表示。

* dfコマンド : 各ハードディスクのパーティション情報として、パーティションのサイズや使用状況を表示。

* topコマンド : CPUの使用率、プロセス数、待ちプロセス数、優先度、SWAPの使用量,空きメモリ量など、様々な情報を表示する。

II-7-8. 日常運用におけるトラブルシューティング

日常の運用管理に必要となるログの取り扱いや、ログを用いたトラブルシューティング方法を紹介する。またパッケージ管理システムを利用したアプリケーションの導入など、日常運用で求められがちな作業手順についても説明する。

【学習の要点】

* システム運用におけるトラブルの防止や早期発見を行うためにはシステムログの確認やソフトウェアのアップデート等を行う必要がある。

* 不正アクセス等があった場合、痕跡など重要な情報はシステムログに記録されるため、日常的に確認を行うことで異常値の発見がしやすくなる。

* システムログは膨大になるため、問題を迅速に発見するために、cronなどを用いて解析ツールを定期的に起動するようにしておくべきである。

* トラブル発生に備え、tarコマンドやdumpコマンドを用いて定期的にシステムのバックアップを行う。

* セキュリティ強化のため、セキュリティパッチ等がリリースされた場合はパッケージ管理にてシステムのアップデートを行う。

図II-7-8. 日常的な運用操作

【解説】

1) ログの収集/解析

ネットワークサーバの運用では、提供するサービスが問題なく提供されているか監視を行う必要がある。また、問題が発生した場合原因がどこにあるのかを迅速に確認する必要がある。

Linuxではsyslogによってサーバのログを記録し、定期的にログの確認を行うことにより、サービスの監視および問題が発生した時の原因の究明を行うことができる。

syslogによって記録されるログは膨大な量となるため、以下のようなツールを導入し問題のあるログを容易に発見できるようにする。

* logwatchコマンド

ログファイルには様々な情報が出力されるため、その中から問題のある情報を抜き出す作業は大変である。logwatchは予め問題として判定するログの条件を設定しておき、条件に一致したログを抽出し表示を行う。

問題を迅速に発見するため、cronにて1日に1回は実行する。

* logrotateコマンド

ログファイルを出力したログファイルをそのまま使用していると、サイズが大きくなりすぎて記憶領域を圧迫したり、確認を行う際に範囲が広すぎて時間が掛かるなど問題が発生する可能性がある。logrotateコマンドを実行すると、現在のログファイルのファイル名を変更し、新規に空のログファイルを作成し、ログファイルのローテーションを行う。

ログファイルのローテーションはcronにて定期的に実行する。

2) システムのバックアップ

トラブルの発生によりシステムが破壊された場合、システムを破壊前の状態に復旧する必要がある。システムの設定ファイルや、ユーザが保存したデータなど復旧に必要なデータは定期的にバックアップを行う必要がある。全てのデータのバックアップや、前回のバックアップからの差分をバックアップする方法がある。

バックアップのためのコマンドとしては、tarコマンドやdumpコマンドがある。

3) パッケージ管理

システムやネットワークサービスのプログラムへセキュリティ上の脆弱性が発見された場合など、アップデート用のプログラムやパッチが提供される。サーバのセキュリティを維持するには、パッチの提供を随時確認し、提供後は速やかにアップデートを適用する必要がある。

システムやネットワークサービスのアップデートを行う方法としては、yum(Yellow dog Updater Modified)やapt-getコマンドなどがある。

アップデートを迅速に適用するため、定期的に実行し常に最新の状態にしておくことが望ましいが、プログラムの依存関係によってはアップデート後にプログラムが動作しなくなる場合もあるため、注意が必要となる。

II-7-9. ネットワークのトラブルシューティング

ネットワークサービスの制御コマンドやネットワーク管理診断コマンド、ネットワークプリンタの設定やファイル共有に関する診断コマンドなど、ネットワークのトラブルシューティングに必要な知識について説明する。

【学習の要点】

* ネットワークにおけるトラブルの防止や早期発見を行うためには、各種管理コマンドを使用した定期的な監視を行う必要がある。

* chkconfigコマンド等を使用して、サーバにインストールされているネットワークサービスの一覧や起動方法を確認し、不要なサービスが無いか確認し設定の変更を行う。

* ネットワーク管理診断コマンド(ping,netstat,traceroute等)を使用して、サーバのネットワーク状況に問題がないか、また問題が発生した時の原因の究明を行う。

図II-7-9. ネットワークの監視

【解説】

ネットワーク内の通信が混雑していたり、一部の機器が異常な動作をしていないかなどを日常的に確認することは、トラブルを未然に防いだりセキュリティを保持するために重要な作業である。

以下のようなコマンドを使用し定期的に状態を確認、検証することにより、異常値の早期発見が可能となる。

1) ネットワーク状態の確認

以下のようなコマンドを使用することにより、ネットワークの状態を確認することができる。

* pingコマンド

pingコマンドは、宛先として指定したコンピュータとの接続がされているか確認するもので、ネットワークに接続されている機器に対してpingコマンドを定期的に実行し応答の有無や応答が返ってくる時間により、障害の発生やネットワークの混雑状態を把握することができる。

* tracetouteコマンド

tracerouteは宛先として指定したコンピュータまでの通信経路情報を確認するもので、ルーティングの設定が正しく行われているのか確認を行い、pingコマンドにて応答が返ってこない場合、どこで通信経路が切断されているかなどを確認することができる。

* netstatコマンド

netstatコマンドはネットワークに対する総合的な情報を取得し出力を行うもので、実行中のネットワークサービスの状態や接続しているクライアントの情報などを確認することができる。

* tcpdumpコマンド

tcpdumpコマンドは、ネットワーク上のデータを調査するもので、ネットワークインタフェースに到着するパケットを全て取り込んで出力を行う。この出力結果を解析することにより、不正な使用が行われていないか、データが流れていないかなどを確認することができる。

その他、SNMP(Simple Network Management Protocol)を利用して、ネットワークに接続されている機器の状態をネットワーク経由で管理を行い、MRTG(Multi Router Traffic Grapher)を利用してネットワークの負荷を監視することができる。

2) ネットワークサービスの動作確認

ネットワークサーバで稼動するネットワークサービスが増えるほど、セキュリティ上の危険も増加する。セキュリティ上のリスクを最小限に抑えるためには、必要なサービスのみを利用し、不必要なサービスは停止しておく。

以下のようなコマンドを使用することにより、ネットワークサービスの管理を行うことができる。

* chkconfigコマンド

chkconfigコマンドは、システム起動時に自動的に起動するネットワークサービスなどの追加、変更、削除を行うものである。

システム起動時に不要なサービスまで起動することになっていないか確認を行い、不要なサービスがあれば起動しないように設定を行う。

* serviceコマンド

serviceコマンドは、実行中のネットワークサービスの確認、起動、停止などを行うものである。

必要なサービスの停止や、不要なサービスが実行されていないか監視を行い、必要に応じてサービスの再起動や停止を行う。

II-7-10. ありがちなトラブルとその対策

Linuxサーバの運用を行う際に、サーバ自体の運用管理およびネットワークの設定や環境設定に関して、ありがちなトラブル事例を紹介し、その対策について解説する。

【学習の要点】

* 発生するトラブルはパスワード忘れなど運用のミスに起因するもの、ハードウェア障害などサーバ自体に起因するもの、ネットワークの遮断など外部要因に起因するものなどがある。

* 日常運用でよく発生するトラブルの把握とその対応方法を理解する。

図II-7-10. ありがちなトラブルの例

【解説】

Linuxサーバ運用中に発生するトラブルについて、その対応方法を確認する。特にネットワーク障害などは様々な要因により発生するため、いくつかのコマンドを組み合わせて原因の追究を行い、的確な対応を行う必要がある。

1) 運用上のミスによるトラブルの例

* rootのパスワードを忘れた

rootのパスワードを忘れてしまった場合、以下の手順でパスワードの再設定を行う。

i) システムをシングルユーザモードで起動する。

boot: Linux 1

ii) プロンプトが表示されたらpasswdコマンドでrootのパスワードを設定する。

# passwd root

* 誤ってファイルを削除した

Linuxではrmコマンドでファイルを削除した場合、標準のコマンドで復活することが困難である。

ファイルのバックアップを定期的に行っている場合、バックアップファイルから該当するファイルをリストアすることにより、ファイルの復旧を行うことができる。

2) ネットワーク障害によるトラブルの例

* ネットワークサービスが利用できなくなった

ネットワークサービスが利用できなくなった、様々な原因が考えられる。代表的な原因の確認手順は以下の通り。

i) ifconfigコマンドでネットワークインタフェースの確認

コンピュータに接続されているネットワークインタフェースが正常に動作し、ネットワークの設定が正しく行われているか確認を行う。

ネットワークが正しく設定されていない場合、ネットワークインタフェースが動作していないか、DHCPサーバからネットワーク情報が取得できなかったなどの原因が考えられる。

ii) pingコマンドで接続の確認

宛先となるサーバがネットワークに接続されている状態か確認を行う。

サーバからの応答がなかった場合、サーバがネットワークに接続されていない、サーバが起動されていない、もしくはサーバまでの経路で障害が発生しているなどの原因が考えられる。

iii) tracerouteで経路情報の確認

宛先となるサーバまでの経路情報が正しく設定されているか確認を行う。途中で経路が途絶えてしまう場合、途絶えたところでネットワークの障害が発生している可能性がある。

この場合、途絶えた機器に対してpingコマンドを実行し、機器がネットワークに接続されている状態か確認を行う。

iv) telnetでサービスの起動確認

利用するサービスがサーバにて起動されているか確認を行う。telnetでサーバへ接続する際に、オプションとしてサービスのポート番号を指定することにより、サービスが起動されていることが確認できる。