はじめに
先日LPICレベル2に合格したので、その体験記を記事にします。これから受験する皆様の参考になれば幸いです。
LPICレベル2は、レベル1で学習した内容を踏まえた、より広範囲かつ深堀りした内容の試験です。レベル1で学習したことの応用だけでなく、カーネルなどのレベル1では学習していない内容も増え、WEBサーバの設定やプログラムのコンパイル・インストールの仕組みなども範囲になり、より実践的になります。
201試験および202試験で扱う範囲とその概要は以下のようになっています。
201試験
- キャパシティプランニング
CPUやメモリ、ディスクなどのリソースの監視 - Linuxカーネル
カーネルの構成 カーネルのコンパイル - システムの起動
システムの起動の仕組み
カーネルとブートローダー、ファイルシステムの関係 - デバイスとファイルシステム
ファイルシステムの種類と特徴
ファイルシステムの作成と管理 - 高度ストレージデバイスの管理
RAIDの構成とLVM - ネットワーク構成
ネットワークの設定 - システムメンテナンス
プログラムのコンパイルとインストール
バックアップ手法
202試験
- DNS
DNSの仕組みとDNSサーバー - WEBとプロキシ
WEBサーバーとプロキシサーバー - ファイル共有
SambaサーバーとNFSサーバー - ネットワーククライアントの管理
DHCPの仕組みとDHCPサーバー
PAMやLDAPによる認証機構 - メールサービス
メールサービスの仕組み
MTAとMDA、MUAの仕組みと設定 - システムセキュリティ
パケットフィルタリング
FTPのセキュリティ
SSHのセキュリティ
TCP Wrapper
1. 学習開始時の筆者の状態
- 専門学校でITインフラを学び、卒業後Avintonに入社
- Linuxコマンドを試したり、サービスを調べたりすることが苦ではない
- ネットワークの基本的仕組みは知っている
- Lpicレベル1取得済(ただし102で2回落ちた経験有)
こう書くと、「インフラ勉強してたんだから楽勝で合格できるでしょ」と思うかもしれません。私自身そう思っていました。 実際に問題集を見ると、概要は知っていても設定ファイルの中身までは知らない、コマンドの書式は知っていてもそれが何なのかは知らない、といった事柄が多くありました。レベル2はレベル1と比べると、細かく深堀した問題が多く出題されます。 一方でネットワークや暗号化、セキュリティの問題に関しては、アドバンテージが大きかったと感じています。
2. 勉強時間
- 201試験:約90時間
- 202試験:約60時間
2週間で合格することを目標としたので、一般的なLPICの勉強時間としては少ないかもしれません。実際、試験前は「あの問題やっとけばよかった」「もっと前から勉強しとけば良かった」と、心の中で思っていました。もし時間的猶予があるのであれば、上記の時間+30時間ぐらいの勉強時間があると、安心して試験に臨むことができると思います。特に202試験は、思考問題より記憶問題(設定ファイルの書き方など)が多く出題されるので、より勉強時間を多くしたほうが良いと思います。
3. 使用教材と勉強方法
- Linux教科書LPICレベル2
- Linux教科書LPICレベル2 スピードマスター問題集
- Ping-t LPICレベル2
- Ubuntu
Ping-tは設定をランダム出題にして何度もやり直しました。その過程で理解できなかったコマンドやサービスなどは、Linux上で実際にためしてみたり、マニュアル(manコマンドなど)を見て勉強しました。Linux教科書は技術的な概要を掴むため、ことあるごとに読み返しました。その代わり、教科書の問題はあまり解いていません。
Ping-tの模擬試験の最終的な正答率は、201・202試験ともに約85%です。試験に申し込む際の参考にしてください。
4. 試験の問題と範囲
問題の内容や出題形式に関しては、概ねPing-tと一致しているので、基本的にはPing-tに集中して取り組めば大丈夫だと思います。出題範囲に関しては本当に隅から隅まで漏れなく出題されるので、「この範囲はあまり出ないだろう」という判断でヤマを張ると、痛い目に合う可能性が高くなります。私が202試験を受験した時は、Linux教科書では内容的に薄めのメールサーバーに関する問題が多く出題され、試験本番で焦りました。
特にDovecot(メールサーバと連携するメール配信エージェント)の設定とコマンドは、Linux教科書ではほとんど扱っていませんが、コマンドとオプションは多く出題されます。
他の合格体験記でも、Dovecotの出題に関しては言及されているので、気を付けてください。
5. 合格できた要因
問題集を何度もやり直したことが一番効果があったと感じています。実際の試験ではLinux教科書より広範囲かつ踏み込んだ内容が出題されます。スピードマスターやPing-tは、そのような範囲の問題もカバーしているので、繰り返し問題を解くのが良いと思います。
ネットワーク関連の問題は、自身の経験が生きたようにも感じます。その中でも、DNSとDHCP、暗号化通信の簡単な仕組みを知っておくと、勉強が大分楽になると思います。 また、コマンドやコマンドの実行結果、設定ファイルの書式を覚えるために、Ubuntu上で調べたり試したりしたことも、効果があったと思います。限られた時間の中で試行錯誤することは大変かもしれませんが、ぜひ試してみてください。
6. スコアと受験後の感想
- 201試験:660/800 合格
- 202試験:500/800 合格
正直、2週間で両方合格できるとは思っていませんでした。特に202試験に関しては、試験の直前まで不安で一杯でしたし、1問目で想定外の問題を出題され面喰いましたし、結果も合格点ちょうどです。しかし、自分の頭で理解できている事項から問題の解答を推測し、結果的に合格できた経験は、自分の自信になったと思います。
今回は自身のスケジュールの都合上、週末に2日連続で受験しましたが、可能であれば試験間隔は最低1週間は空けたほうが良いと感じました。
7. 重点的に学習した項目
学習した中で難しかった項目、暗記に時間がかかった項目、しっかりと整理する必要があった項目に関し、要点を抜粋します。
(※注 あくまで抜粋です。全ての範囲をカバーしているわけではありません。)
201試験
- キャパシティプランニング
- リソース監視コマンド
- vmstat:メモリ監視
- top:プロセス監視(CPU利用率降順)
- iostat:ディスクI/O監視
- sarおよびsadc:リソースの状態ログの収集と表示
- コマンドの出力結果から思考する問題が出題されるため、見方と使い分けを覚える
- リソース監視ツール
- Nagios:システム監視とネットワーク監視
- Icinga2:Nagiosの後継
- MRTG:トラフィック監視
- Cacti:MRTGの後継
- 各ツールの特徴を覚える
- ツールの細かい使用方法までは問われない
- リソース監視コマンド
- Linuxカーネル
- カーネルの構成要素
- バージョンの見方
- バージョンの変遷を覚える
- どのバージョンが安定版で、どのバージョンが開発版なのか覚える
- カーネルイメージのディレクトリと種類
- /boot/vmlinuz*
- zImage :サイズ制限有
- bzImage:サイズ制限無 - カーネルモジュール
- lsmod:ロード済モジュールの表示
- insmod:モジュールのロード
- rmmod:モジュールのアンロード
- modprobe:依存関係解決
- depmod:依存関係更新
- modinfo:モジュールの情報表示
- カーネルコンパイル
- カーネルを自分でコンパイルする方法と流れを理解する
- カーネルソースの準備、/usr/src/linux*
- カーネルコンフィギュレーション
.config, make config, make oldconfig - カーネルとカーネルモジュールのコンパイル
make - カーネルモジュールとカーネルのインストール
make modules_install,make install
- makeコマンドのターゲットを覚える
- clean
.config以外の不要なファイルを削除 - mrporper
.configも削除 - all
すべてのビルドを実施 - makeコマンドは、カーネル以外のプログラムにも使用するgccの汎用コマンド、カーネル以外の問題でも登場する
- clean
- カーネルを自分でコンパイルする方法と流れを理解する
- カーネルパラメータの設定
- /proc/*の該当ファイルを書き換える or syscltコマンドを使用する
- 初期RAMディスク
- Linux本体を起動するためにメモリに展開される一次的なルートファイルシステム
- initrd
元々の初期RAMディスク、.imgをgzipで圧縮したもの mount -o loopで展開する - initramfs 現行の初期RAMディスク、cpioアーカイブをgzipで圧縮したもの gunzipで解凍後cpioコマンドで展開
- バージョンの見方
- カーネルの構成要素
- システムの起動
- ブート前処理
- BIOS,UEFI
- BIOSはMBR領域からブートローダを起動する
- UEFIはUEFIシステムパーティションからブートローダを起動する
- GRUBを掘り下げる問題のほうがUEFIより多い
- BIOS,UEFI
- ブートローダ
- GRUB
- 起動の流れを理解する
- カーネルとinitramfs読み込み
- カーネル自己解凍
- カーネル初期化
- initramfs解凍
- initramfs内の/init実行
- /sbin/initの実行
- 起動スクリプト実行
- 起動の流れを理解する
- SYSLINUX,ISOLINUX,PEXLINUXの特徴を覚える
- SYSLINUX:FATから起動(USBメモリから)
- ISOLINUX:ファイルシステムから起動(CDから)
- PXELINUX:ネットワーク経由で起動
- GRUB
- ブート前処理
- ファイルシステム
- ext1~ext4,xfs,Btrfs
- 各ファイルシステムで扱える容量など、特徴を覚える
- ファイルシステム作成コマンド
- mke2fs,mkfs
- 『mke4fs』『mkefs.ext4』など、紛らわしい選択肢が多くあるので、正確に覚える
- ファイルシステム管理コマンド
- fsck,tune2fs,xfs_admin,btrfs
- xfs,btrfsは、コマンドの書式体系が関連するコマンドと全く異なるので、それぞれしっかりと覚える必要がある
- マウント関連
- autofs,auto.master,fstab,udev
- 自動マウントされるまでの流れを覚える
- デバイスを接続した時の処理の流れなど、udevと関連した問題も出題される
202試験
-
DNSとBIND
- DNS
ホスト名(ドメイン名)とIPアドレスを相互変換する仕組み - DNSサーバー
ホストからの名前解決に答えるサーバー、BINDが担う - DNSサーバーの種類
- 権威サーバー
ドメイン名とIPアドレスの情報を保持している大元のサーバー、ゾーン情報を持ち管轄ゾーンが決まっている
ゾーン情報を保持するサーバーをマスターDNSサーバー、ゾーン情報のコピーを保持して冗長性を確保するサーバーをスレーブDNSサーバーという - キャッシュサーバー
問い合わせに答えるサーバー 自身で解決できないアドレスを他のサーバーに問い合わせたり、解決できたアドレスの組み合わせを一定期間保持する
- 権威サーバー
- DNS関連のコマンド
- nslookup,dig,hostname
- BIND
- 実際に名前解決を行っているプログラム、デーモンはnamed
- /etc/name.conf
ゾーン情報の記述、許可する応答の種類などを指定する
設定ファイルの正しい書式を答える問題が出題される ゾーン情報は別ファイルに既述し、name.confで指定する よってゾーンファイルの書式も覚える必要がある - ゾーンファイル レコードタイプを覚える
- SOA:管理情報
- NS:ゾーンを管理しているDNSサーバ
- MX:メールサーバー
- A:ホスト名に対するIPアドレス
- CNAME:ホストの別名に対するアドレス
- DNS
-
メールサービス
- MTA(メール転送エージェント)
メールの転送を行う、SMTPサーバーとも言う Postfixやsendmailが使用される - MDA(ローカルメール転送エージェント)
ローカルでのメールの転送を行う MTAから送られてきたメールをメールボックスに振り分ける DovecotやCourierMail,Procmailが使用される - MUA(メールユーザーエージェント)
ユーザーがメールを送受信するときに使用
送信時はsmtpでMTAに送信、受信時はpop3やimap4でメールサーバから取得する - Linux教科書では内容が少ないが、現行の試験ではよく出題されるので注意が必要
設定ファイルの書式や、メールリレーの設定、設定コマンドを問われる
- MTA(メール転送エージェント)
-
ファイル共有:
- Samba
LinuxサーバーをWindows Networkに参加させるオープンソースソフトウェア ファイル共有やプリンタ共有を行うことができる- /etc/samba/smb.conf
- 共有の権限の設定
browseable:ブラウジングしたときに表示されるか
writable:書き込みを許可するか
path:共有ディレクトリのパス
write list:書き込み許可ユーザー
- 共有の権限の設定
- smbpasswd, pdbedit
ユーザーの有効化・無効化、パスワードの設定
- /etc/samba/smb.conf
- NFS
Unix系同士のネットワークファイル共有の仕組み
最新版はバージョン4だが、LPICではバージョン3を扱う- RPC
リモートホスト上の機能を、別のホストから使用できるようにする機能 - portmap
RPCプログラムとポート番号のマッピングを行う - /etc/exports
公開するディレクトリを記述
正確には、マウントを許可するIPアドレスを記述する
- RPC
- Samba
-
ネットワーククライアントの管理
- DHCP
- dhcpd.conf
書式を理解しておく必要がある
- dhcpd.conf
- PAM
- /etc/pam.d/* 各モジュールの認証方法や認証の成否に伴う処理を記述する
モジュールタイプ(認証のタイプ)とコントロール(認証後の処理)を覚える
- /etc/pam.d/* 各モジュールの認証方法や認証の成否に伴う処理を記述する
- LDAP
- /etc/openldap/slapd.conf
LDAPサーバーの設定ファイル
設定ファイルのフルパスを問われる - slappsasswd
slapd.confのrootpwに設定する管理者パスワードを設定するコマンド
- /etc/openldap/slapd.conf
- DHCP
-
セキュリティ
- ipatables
チェインというルールセットに基づいてパケットフィルタリングを行うファイアウォール
デフォルトチェインだけでなく、カスタマイズした設定を施すことができる- INPUTチェイン
ローカルプロセスに入るパケットが対象 - OUTPUTチェイン ローカルプロセスから出ていくパケットが対象
- FORWARDチェイン ローカルプロセスには入らず転送されるパケットが対象
- ルールセットを自力で書くタイプの問題はPingtなどにも無いが、3つのデフォルトチェインに関しては覚える必要がある
- INPUTチェイン
- Fail2ban
ログファイルを監視して攻撃を検知し、攻撃元のIPアドレスを遮断する
アクセスの遮断はiptablesのルールを追加することで行う- /etc/jail.local
Fail2banで制御したいルールを記述する jail.localとは別にjail.confという設定ファイルがあるが、.confは編集せず.localを新しく作成する
- /etc/jail.local
- ipatables
8. まとめ
元も子もない話かもしれませんが、事前知識の有無は多少なりとも影響したと思います。もし自分にネットワークの知識が全く無かったら、さらに苦戦していたことは明白です。ネットワーク関連の勉強時間を、他の範囲の勉強に使えたのは大きかったです。DHCPとDNS、暗号化の基本的な仕組みは、ネット上に理解しやすい解説が多くあります。学習開始前に少し調べるだけでも、大きな効果があると思います。 最後になりますが、ここまで読んでいただき、ありがとうございます。 皆さんが無事合格できることを願っています。
あなたも、Avintonでこのような最先端技術を習得し活用してみませんか?
社員の成長を導きながら、AIやビッグデータなどの最先端技術をプロジェクトに活用していくことが私たちのビジョンです。Avintonの充実した技術研修でスキルアップを図り、あなたのキャリア目標を一緒に達成しませんか?