レポート課題11日目・180分T3情報工学1_[学生番号]_[氏名].pdf
1日目 仮想マシンとOSの準備
学校のProxmoxに自分専用の仮想マシンを作り、Ubuntu Serverを入れて、ネットワーク・時刻・更新・管理者権限を整えます。残りの6日間の作業は、すべてこの日の成果の上に積み上がります。
この日のゴール
1日目が終わったとき、次の状態になっていれば成功です。
- Proxmoxに、自分の仮想マシン(VM ID
1XX、名前t3lab-XX)がある - その中でUbuntu Server 24.04が動き、
t3adminでログインできる - インストール直後の状態がスナップショット
day1-initialとして保存されている - 時刻が
192.168.100.1と同期し、ソフトウェアが最新になっている - IPアドレスが
192.168.100.xxxに固定され、インターネットにpingが届く
この日に出てくる主な言葉:
全体の流れ
指導書の手順は14個あります。前半はブラウザでProxmoxを操作し、後半はProxmoxのコンソールに映るUbuntuの画面でコマンドを打ちます。2日目まではSSHが使えないので、Ubuntuの操作はすべてコンソールで行います。
| 手順 | 場所 | 内容 |
|---|---|---|
| 1 | Webブラウザ(Proxmox) | Proxmoxにログインする |
| 2 | Webブラウザ(Proxmox) | 仮想マシンを作る |
| 3 | Webブラウザ(Proxmox) | Ubuntu Serverをインストールし、ISOを取り出す |
| 4 | Webブラウザ(Proxmox) | スナップショットを取る |
| 5 | Webブラウザ(Proxmox) | 起動と停止のしかたを覚える |
| 6 | Ubuntuサーバー ターミナル | 動いているサービスを確認する |
| 7 | Ubuntuサーバー ターミナル | ログを読む |
| 8 | Ubuntuサーバー ターミナル | 時刻合わせ(NTP)を設定する |
| 9 | Ubuntuサーバー ターミナル | ソフトウェアを最新にする |
| 10 | Ubuntuサーバー ターミナル | sudo の設定を確認する |
| 11 | Webブラウザ(Proxmox) | QEMU Guest Agentを有効にする |
| 12 | Ubuntuサーバー ターミナル | QEMU Guest Agentを入れる |
| 13 | Ubuntuサーバー ターミナル | 今のネットワーク状態を見る |
| 14 | Ubuntuサーバー ターミナル | IPアドレスを固定する |
手順の解説
スクリーンショット(エビデンス)を撮るところ。マウスを乗せると撮るタイミングが表示され、押すとページ下のエビデンス一覧の該当項目へ移動します。考察を書くときに知っておきたいこと。マウスを乗せる(スマホでは押す)とヒントが表示されます。
Proxmoxにログインする
WindowsのChromeで、授業で指定されたURLを開き、Proxmoxの管理画面にログインします。
- User name
- 指定されたユーザー名
- Password
- 指定されたパスワード(他人に教えない、画面に映さない)
- Realm
- 「Proxmox VE authentication server」を選ぶ。Realm(レルム)は「どの名簿でユーザーを確かめるか」の選択肢で、これはProxmoxが独自に持っている利用者名簿のこと
- Language
- 「日本語」を選ぶ。以降の画面が日本語になる
「この接続ではプライバシーが保護されません」と出たら
Proxmoxの管理画面は、学内向けの証明書を使っていることが多く、ブラウザが警告を出すことがあります。そのまま進んでよいかは、教員の指示に従ってください。自己判断で、ほかのサイトの同じような警告を無視する習慣はつけないようにしましょう。
仮想マシンを作る
画面右上の「VMを作成」を押し、タブを順に進めながら設定します。設定の一つひとつは「どんなパソコンを組み立てるか」を決めている、と考えると分かりやすくなります。
| タブ | 項目 | 設定 | 意味 |
|---|---|---|---|
| 全般 | ノード | 可能なノード | どの物理サーバー(ノード)の上に作るか |
| VM ID | 1XX | 100+学生番号の下2桁。全員の番号がぶつからないように決めてある | |
| 名前 | t3lab-XX | 一覧に表示される名前 | |
| HAに追加 | オフ | HA(高可用性)は、物理サーバーが故障したとき別のノードで自動的に起動し直す機能。今回は不要 | |
| リソースプール | 空欄 | VMをグループ分けするための入れ物。今回は使わない | |
| OS | メディア | CD/DVDイメージファイル(iso)を使用 | 仮想DVDドライブにインストール用ディスクを入れる |
| ストレージ | gennai-nfs-01 | ISOファイルが置いてある保管場所。NFSはネットワーク越しに共有するファイル置き場の方式 | |
| ISOイメージ | ubuntu-24.04.4-live-server-amd64.iso | 24.04の4回目の改訂版の、サーバー用インストーラー。amd64 は一般的な64ビットのCPU向けという意味 | |
| ゲストOS | Linux / 6.x - 2.6 Kernel | 中に入れるOSの種類を教えると、Proxmoxがそれに合った仮想の部品を用意する | |
| システム | — | デフォルト | 起動の方式など。変更しない |
| ディスク | ストレージ | local-lvm | そのノードの内蔵ディスク上の保管場所。仮想ディスクをここに作る。ほかはデフォルト |
| CPU | ソケット | 1 | CPUの個数 |
| コア | 2 | CPUの中で計算を担当する単位の数 | |
| 種別 | host(いちばん下) | 本物のCPUの機能をそのまま仮想マシンに見せる。性能が出やすい | |
| メモリ | — | 1024 | 単位はMiB。約1 GB |
| ネットワーク | ブリッジ | vmbr0 | 学校のLANにつながる仮想のスイッチ(ブリッジ)につなぐ。ほかはデフォルト |
「確認」タブで「完了」を押すと作成が始まり、しばらくすると左のツリーにVMが現れます。
ほかの人のVMに触らない
Proxmoxはクラス全員で共有しています。VM IDと名前を間違えると、ほかの人の番号とぶつかります。また、左のツリーにはほかの人のVMも並ぶことがあるので、操作する前に必ず自分のVM(1XX)を選んでいるか確かめてください。
Ubuntu Serverをインストールする
作ったVMを選んで右上の「開始」を押し、VMのメニューの「コンソール」を開きます。仮想DVDに入れたISOから起動し、インストーラーの画面が出ます。
インストーラーの操作方法
マウスは使えません。↑↓ と Tab で項目を移動し、Space でチェックを付け外しし、Enter で決定します。画面下の [ Done ] が「次へ」です。
| 画面 | 選ぶもの | 意味・理由 |
|---|---|---|
| Language | English | 画面の言語。コンソールは日本語をうまく表示できないことがあるため英語にする |
| Installer update | Continue without updating | インストーラー自体の更新はしない |
| Keyboard configuration | Layout: Japanese / Variant: Japanese | 日本語キーボードの配列にする。英語配列のままだと : @ " などの記号の位置がずれる |
| Type of installation | Ubuntu Server | 標準のサーバー構成 |
| Network configuration | そのまま(デフォルト) | 今はDHCPで仮のIPアドレスをもらう。手順14で固定する |
| Proxy configuration | 空欄 | 中継サーバーは使わない |
| Ubuntu archive mirror | そのまま(デフォルト) | ソフトのダウンロード元 |
| Guided storage configuration | Use an entire disk を選び、Set up this disk as an LVM group のチェックを外す | 仮想ディスク全体を使う。LVMは後から容量を柔軟に変えられる仕組みだが、今回は単純な構成にする |
| Storage configuration | そのまま(デフォルト) | ディスクの分け方の確認画面 |
| Confirm destructive action | 問題なければ [Continue] | 「ディスクの中身を消します」という確認。消えるのは作ったばかりの空の仮想ディスクだけ |
| Profile configuration | Your name: t3adminYour servers name: t3lab-XXPick a username: t3adminパスワード:指定されたもの(2回) | ログインするユーザーとサーバーの名前(ホスト名)を決める |
| Upgrade to Ubuntu Pro | Skip for now | 有料の拡張サポートは使わない |
| SSH configuration | Install OpenSSH server にチェック | SSHで遠隔操作するためのサーバー(2日目に使う)を入れておく |
| Featured server snaps | 何も選ばず [Done] | 追加のソフトは入れない |
「Installing system」でログが流れ、しばらくすると [ Reboot Now ] が出るので選びます。Please remove the installation medium, then press ENTER: のような表示が出たら Enter を押します。
再起動後、t3lab-XX login: と出たら、ユーザー名 t3admin とパスワードでログインします(パスワードは画面に表示されません)。ログインできたら、いったん電源を切ります。考察のヒントこのUbuntu Serverには、マウスで操作する画面(GUI)がありません。それでもこの日の設定をすべてコマンドと設定ファイルだけで終えられたことは、課題1「サーバーにLinux系が使われる理由」を、自分の体験から説明する材料になります。
sudo shutdown -h nowsudo管理者の権限でshutdownシャットダウンする-h停止する(halt)now今すぐ最後に、Proxmoxで仮想DVDからISOを取り出します。VMの「ハードウェア」を開き、「CD/DVDドライブ」を選んで「編集」から「メディアを使用しない」(英語表示では Do not use any media)にします。入れたままだと、次に起動したときにまたインストーラーが立ち上がることがあります。
ホスト名の表記ゆれ
指導書のREADMEではホスト名を pc[学生番号2桁](あなたなら pcXX)としていますが、この手順では t3lab-[学生番号下2桁](t3lab-XX)を指定しています。このガイドは手順の記載に合わせていますが、どちらを使うかは授業で確認してください。
スナップショットを取る
インストールしたばかりのきれいな状態を、スナップショットとして保存します。VMを選んで「スナップショット」(Snapshots)タブを開き、「スナップショット作成」から名前 day1-initial と説明を入れて作成します。
作成後、一覧に day1-initial が表示され、自分のVMに付いていることを確かめます。この画面がエビデンス1になります。エビデンス1の撮影ポイント撮影ポイント エビデンス1手順4でスナップショットを作成した直後。Proxmoxの「スナップショット」タブを開き、一覧に day1-initial が表示され、自分のVM(1XX)に付いていることが分かる画面を撮る。エビデンス一覧の項目へ移動 ↓
スナップショットは「セーブポイント」です。あとで設定を壊してしまっても、「ロールバック」を選べばこの時点に戻れます(その代わり、それ以降の変更はすべて消えます)。名前には英数字と - _ を使い、空白や日本語は使わないようにします。考察のヒント更新や設定変更には「うまく動かなくなる」危険もあります。課題2で更新の利点を書くとき、「作業の前にスナップショットを取れば、失敗してもすぐ戻せる」という運用の工夫まで触れると、利点とリスクの両面を論じられます。
節目ごとにセーブする
指導書は「大きな作業を完了するたびにスナップショットを取る」ことを求めています。たとえば day1-network(固定IPの設定後)、day2-ssh(鍵認証の設定後)、day3-docker のように、その日の作業が終わったら取っておくと安心です。
スナップショットは同じ機械の中に保存されるので、機械そのものの故障には備えられません。別の場所に保管する「バックアップ」とは役割が違います。
起動と停止のしかた
これ以降、VMを動かすときは「開始」、止めるときはUbuntuの中で sudo shutdown -h now を打つか、Proxmoxの「シャットダウン」を押します。操作はVMの「コンソール」で行います。
| ボタン | 何が起きるか | 使いどころ |
|---|---|---|
| 開始 | 電源を入れる | いつでも |
| シャットダウン | OSに「終了してください」と頼み、OSが片付けてから電源が切れる | 普段の停止はこれ |
| 停止 | 電源コードを抜くのと同じ。OSは片付けができない | 固まって反応しないときの最終手段 |
再起動したいときは、Ubuntuの中で sudo reboot を打ちます。
動いているサービスを確認する
VMを起動してコンソールでログインし、裏で動いているサービスの一覧と、その管理方法を確かめます。時刻合わせのサービス systemd-timesyncd を例にします。
systemctl list-units --type=service --state=running
systemctl status systemd-timesyncd
sudo systemctl restart systemd-timesyncd
systemctl is-enabled systemd-timesyncd| コマンド | 意味 |
|---|---|
systemctl list-units --type=service --state=running | 種類がサービスで、今動いているものを一覧表示するエビデンス3の撮影ポイント撮影ポイント エビデンス3手順6で systemctl list-units --type=service --state=running を実行した直後。一覧は1画面ずつの表示になるので、q を押す前に、見出しの行(UNIT、LOAD、ACTIVE…)と running の行が並んでいる状態で撮る。エビデンス一覧の項目へ移動 ↓ |
systemctl status systemd-timesyncd | そのサービスの状態を表示する |
sudo systemctl restart systemd-timesyncd | そのサービスを再起動する(管理者の操作なので sudo) |
systemctl is-enabled systemd-timesyncd | 起動時に自動で動く設定か確かめる。enabled なら自動起動する |
systemctl status の表示は、次の3か所を読みます。
● systemd-timesyncd.service - Network Time Synchronization
Loaded: loaded (/usr/lib/systemd/system/systemd-timesyncd.service; enabled; preset: enabled)
Active: active (running) since Mon 2026-09-28 01:23:45 UTC; 5min ago
Docs: man:systemd-timesyncd.service(8)
Main PID: 612 (systemd-timesyn)
Status: "Contacted time server …"- 先頭の ●
- 緑なら正常。赤や白抜きなら止まっているか失敗している
- Loaded の enabled
- 起動時に自動で動く設定になっている
- Active: active (running)
- 今まさに動いている。
inactive (dead)なら止まっている、failedなら失敗
プロンプトが戻ってこないとき
表示が長いと1画面ずつの表示(ページャ(less))になり、左下に lines 1-20 などと出たまま止まります。q を押すと抜けられます。
ログを読む
トラブルの原因を調べる基本はログを読むことです。システム全体の最近のログ、特定のサービスのログ、警告だけのログ、起動時のカーネルのメッセージを順に見ます。
journalctl -n 30
journalctl -u systemd-timesyncd -n 30
journalctl -p warning -n 30
dmesg | tail -n 30| コマンド | 意味 |
|---|---|
journalctl -n 30 | システム全体のログの最新30行 |
journalctl -u systemd-timesyncd -n 30 | 時刻合わせのサービスのログだけの最新30行(-u は unit=サービス) |
journalctl -p warning -n 30 | 重要度(priority)が「警告」以上のものだけ |
dmesg | tail -n 30 | カーネルのメッセージのうち最後の30行。| はパイプ(|)エビデンス5の撮影ポイント撮影ポイント エビデンス5手順7で dmesg | tail -n 30 を実行した直後。Operation not permitted と出た場合は、sudo dmesg | tail -n 30 で実行し直してから撮る。コマンドの行も写るようにする。エビデンス一覧の項目へ移動 ↓ |
ログの1行は「いつ・どの機械の・どのプログラムが・何を言ったか」でできています。考察のヒント考察で「なぜその結果になったか」を説明するとき、推測だけでなく、ログの1行(日時とメッセージ)を根拠として示すと説得力が増します。ログはレポートでは必要な行だけを抜き出して載せます。
Sep 28 01:24:10 t3lab-07 systemd-timesyncd[612]: Contacted time server 192.168.100.1:123 (192.168.100.1).Sep 28 01:24:10いつ(日時)t3lab-07どの機械でsystemd-timesyncd[612]どのプログラムが([ ]内はプロセスの番号)Contacted time server …何が起きたかdmesg で「Operation not permitted」と出たら
Ubuntuでは、カーネルのメッセージを一般ユーザーが読めない設定になっていることがあります。dmesg: read kernel buffer failed: Operation not permitted と出たら、sudo dmesg | tail -n 30 のように sudo をつけて実行します。
時刻合わせ(NTP)を設定する
サーバーの時計を学内のNTPサーバー 192.168.100.1 に合わせ続けるよう、設定ファイルを書き換えます(なぜ大事かは予備知識を参照)。
sudo nano /etc/systemd/timesyncd.conf開くと、次のような行が並んでいます。行頭の # は「この行は無効(コメント)」という印です。このファイルはINI形式で、[Time] がセクション名です。
[Time]
#NTP=
#FallbackNTP=ntp.ubuntu.com#NTP= の行の # を消して有効にし、NTPサーバーを書き込みます。
[Time]
NTP=192.168.100.1保存(Ctrl+O → Enter)して終了(Ctrl+X)したら、時刻合わせを有効にし、サービスを再起動して設定を読み込ませます。
sudo timedatectl set-ntp true
sudo systemctl restart systemd-timesyncd
systemctl status systemd-timesyncd
timedatectl show-timesync --all設定が終わったら、手順7の journalctl -u systemd-timesyncd -n 30 をもう一度実行し、192.168.100.1 と通信した記録を確かめておきます。エビデンス4の撮影ポイント撮影ポイント エビデンス4手順8で時刻合わせを設定し、サービスを再起動したあとで journalctl -u systemd-timesyncd -n 30 を実行した直後。Contacted time server 192.168.100.1:123 のような行が写っていると、設定が効いた証拠として説明しやすい(手順7の時点で撮ってもよい)。エビデンス一覧の項目へ移動 ↓
設定は、サービスを再起動したときに読み込まれます。ファイルを書き換えただけでは反映されないことを覚えておきましょう(ほかのサービスでも同じです)。確認には timedatectl status も使います。
Local time: Mon 2026-09-28 01:30:00 UTC
Universal time: Mon 2026-09-28 01:30:00 UTC
RTC time: Mon 2026-09-28 01:30:00
Time zone: Etc/UTC (UTC, +0000)
System clock synchronized: yes
NTP service: active
RTC in local TZ: noこうなればOK
System clock synchronized: yes と NTP service: active になっていれば同期できています。エビデンス6の撮影ポイント撮影ポイント エビデンス6手順8の設定のあと timedatectl status を実行し、System clock synchronized: yes と NTP service: active が表示された時点で撮る。同期には少し時間がかかるので、no のときは数十秒待って実行し直す。エビデンス一覧の項目へ移動 ↓timedatectl show-timesync --all の ServerName= や ServerAddress= が 192.168.100.1 なら、指定したサーバーを使っています。
時刻が9時間ずれて見える
Time zone: Etc/UTC と表示されている場合、画面の時刻は世界の基準時刻(UTC)です。日本時間より9時間遅れて見えますが、時計そのものは正しく合っています。タイムゾーンを変えるかどうかは授業の指示に従ってください。考察のヒント時刻合わせの意義は、「時計がずれていたら何が困るか」から考えると書きやすくなります(ログの順番、証明書の有効期限、時刻を使う認証)。表示のずれ(タイムゾーン)と、時計そのものの正しさ(同期)は別の話である点も押さえておきましょう。
ソフトウェアを最新にする
カタログを取り寄せ、入っているソフトを新しい版に入れ替え、不要になった部品を片付けます(update と upgrade の違い)。
sudo apt update
sudo apt upgrade -y
sudo apt autoremove -ysudo管理者の権限でaptパッケージ管理ツールにupgrade新しい版への入れ替えを頼む-y「続けますか?」に自動で yes と答える更新の数によっては数分かかります。最後に X upgraded, Y newly installed のような集計が出るので、何個が更新されたかをメモしておくと、レポートの結果や課題2の材料になります。エビデンス2の撮影ポイント撮影ポイント エビデンス2手順9の sudo apt upgrade -y が終わった直後。最後の X upgraded, Y newly installed … の集計行が画面に残っているうちに撮る。撮り逃したら、あとで sudo apt update を実行し、All packages are up to date. と表示された画面でもよい。エビデンス一覧の項目へ移動 ↓考察のヒント更新された件数は、インストール直後でも更新がたまっていたことを示す「結果」です。課題2では、この数を結果として示したうえで、その中に安全のための修正(脆弱性の修正)が含まれうることを「考察」で論じると、結果と考察がつながります。
途中で出てくるかもしれない表示
- Could not get lock /var/lib/dpkg/lock-frontend:起動直後は、Ubuntuが裏で自動更新をしていることがあります。数分待ってからやり直します
- 「Which services should be restarted?」という色つきの画面:更新したソフトを使っているサービスを再起動するかの確認です。基本はそのまま Enter(OK)で進めます
- *** System restart required ***:カーネルなどが更新され、再起動が必要という意味です。区切りのよいところで
sudo rebootします
sudo の設定を確認する
自分のユーザーがsudoで管理者の操作をできることと、その設定がどこに書いてあるかを確かめます。
sudo -l
id
sudo visudoUser t3admin may run the following commands on t3lab-07:
(ALL : ALL) ALLsudo -l は「自分が sudo で何をしてよいか」の一覧です。エビデンス7の撮影ポイント撮影ポイント エビデンス7手順10で sudo -l を実行した直後。(ALL : ALL) ALL の行が見えるように撮る。続けて開く sudo visudo のエディタの画面ではない。エビデンス一覧の項目へ移動 ↓id は自分のユーザー番号と、所属しているグループを表示します。グループの中に 27(sudo) があれば、sudoグループの一員です。考察のヒント課題3で root と比べるときは、①打ち間違えたときの被害の大きさ、②アカウントが乗っ取られたときの被害、③あとから「誰が・いつ・何をしたか」を追えるか、の3点で比べると整理しやすくなります(最小権限の原則)。
sudo visudo を実行すると、sudoを誰に許すかの設定ファイル(sudoers と visudo)がエディタで開きます。次の行を探して読んでください。
%sudosudoグループの人はALL=どの機械の上でも(ALL:ALL)どのユーザー・グループとしてもALLどのコマンドでも実行してよい読むだけで、書き換えない
このファイルを壊すと、sudo が使えなくなり、自分では直せなくなります。確認したら何も変更せずに Ctrl+X で閉じます。うっかり文字を打ってしまったら、「Save modified buffer?」に N と答えます。
QEMU Guest Agentを有効にする
QEMU Guest Agentは、仮想マシンの中からProxmoxへ情報を伝える小さな連絡係です。これがあると、ProxmoxのVMの「概要」画面にIPアドレスが表示されたり、Proxmoxからの「シャットダウン」が確実に伝わったりします。まずProxmox側で受け入れる準備をします。
VMの「オプション」(Options)を開き、「QEMU Guest Agent」を選んで「編集」から有効にします。
この設定は、VMの電源を一度完全に切ってから入れ直したときに反映されます(Ubuntuの中での再起動では反映されないことがあります)。手順12のあとにうまく動かなければ、sudo shutdown -h now で止めてから「開始」してください。
QEMU Guest Agentを入れる
Ubuntu側に連絡係のプログラムを入れて起動します。
sudo apt install -y qemu-guest-agent
sudo systemctl enable --now qemu-guest-agent
systemctl status qemu-guest-agentenable --now は「自動起動を有効にし、今すぐ起動もする」という意味です。このサービスでは、enable のときに「The unit files have no installation config」のような説明が出ることがありますが、仮想の部品が見つかったときに自動で起動する仕組みのサービスなので、気にしなくてかまいません。
こうなればOK
Active: active (running) になり、ProxmoxのVMの「概要」画面にIPアドレスが表示されます。failed やタイムアウトになる場合は、手順11の設定がまだ反映されていないので、いったん電源を切ってから入れ直します。
今のネットワーク状態を見る
インストール時にDHCPでもらったIPアドレスを確かめます。
ip a1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
inet 127.0.0.1/8 scope host lo
2: ens18: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
link/ether bc:24:11:xx:xx:xx brd ff:ff:ff:ff:ff:ff
inet 192.168.100.57/24 metric 100 brd 192.168.100.255 scope global dynamic ens18lo- 自分自身を指す特別な出入口(127.0.0.1)
ens18- ネットワークにつながる部品(NIC)の名前。手順14の設定ファイルで使う
inet …/24- 今のIPv4アドレスとプレフィックス長
dynamic- DHCPで配られた一時的なアドレスであることを示す。固定すると消える
link/ether- 部品そのものに付いた番号(MACアドレス)
表示例の 192.168.100.57 は仮の値です。実際にはDHCPで配られた番号が出ます。
IPアドレスを固定する
Netplanの設定ファイルを作り、IPアドレス・ゲートウェイ・DNSサーバーを手で決めて固定します。考察のヒントDHCPで配られる番号は変わることがありますが、サーバーは利用者がいつも同じ住所で見つけられる必要があります。固定IPにする理由と、同じ番号を2台が使うと通信できなくなることは、ネットワーク設定を考察するときの軸になります。
1. 元の設定ファイルをコピーする
cd /etc/netplan
ls
sudo cp 50-cloud-init.yaml 99-custom.yamlまず ls で、元のファイルの名前が 50-cloud-init.yaml であることを確かめます(環境によっては別の名前のこともあります)。元のファイルは書き換えずに残し、コピーした 99-custom.yaml のほうを編集します。Netplanは /etc/netplan のファイルを名前の順に読み、同じ項目は後から読んだファイルの内容が勝ちます。99 で始まる名前にしたのは、最後に読まれて確実に優先されるようにするためです。
2. 設定ファイルを編集する
sudo nano /etc/netplan/99-custom.yaml中身を次のように書き換えます。IPアドレスの xxx は100+学生番号の下2桁です(設定済みなら、あなたの値で表示されています)。
network:
renderer: networkd
ethernets:
ens18: # NIC device name.
addresses:
- 192.168.100.xxx/24 # IP Address
dhcp4: false # Disable DHCP
routes: # Gateway configuration
- to: default # Any address should go to this gateway.
via: 192.168.100.1 # Gateway server address
nameservers:
addresses: [192.168.100.1] # List of nameservers.YAMLの読み方
このファイルはYAMLという書式で、行頭のスペースの数で「どの項目の中にあるか」を表します。字下げがずれると意味が変わったり、エラーになったりします。
| 行 | 意味 |
|---|---|
network: | ここからネットワークの設定 |
renderer: networkd | 設定を実際に反映する係として systemd-networkd を使う |
ethernets: → ens18: | 有線の部品のうち、ens18 についての設定(手順13で確かめた名前) |
addresses: - 192.168.100.xxx/24 | このIPアドレスを使う。- は「一覧の1項目」の印 |
dhcp4: false | IPv4のアドレスをDHCPでもらわない |
routes: - to: default via: 192.168.100.1 | 行き先が決まっていない通信(=外の世界宛て)は、すべてデフォルトゲートウェイ 192.168.100.1 へ渡す |
nameservers: addresses: [192.168.100.1] | 名前の問い合わせ(DNS)は 192.168.100.1 にする。[ ] も一覧の書き方 |
# … | コメント。書かなくても動作は変わらない |
字下げはスペースで、数をそろえる
- タブ文字は使えません。スペースで字下げします
- 同じ階層の行は、同じ数のスペースで始めます(この例では2つずつ深くなる)
名前: 値のコロンの後ろには半角スペースが要ります- コピー元の中身に手を加えるより、いったん全部消して打ち直すほうが字下げが混ざりません(nanoでは Ctrl+K で1行ずつ消せます)。コピー元に
version: 2という行があれば、rendererと同じ深さで残しておいてかまいません
3. 反映して確かめる
指導書では、反映のコマンドは「結果と考察」の確認コマンドの中に入っています。
sudo netplan apply
ip a
ping -c 3 www.google.co.jpこうなればOK
ip a の ens18 に 192.168.100.xxx/24 が表示され、dynamic の文字が消えています。エビデンス8の撮影ポイント撮影ポイント エビデンス8手順14で sudo netplan apply のあとに ip a を実行した直後。ens18 に 192.168.100.xxx/24 が表示され、dynamic の文字がないことが分かるように、ターミナルの画面全体を撮る。エビデンス一覧の項目へ移動 ↓ping で3回とも応答(64 bytes from …)が返れば、ゲートウェイの先のインターネットまで届き、名前の問い合わせもできています。
よくある表示と対処
- Permissions for /etc/netplan/99-custom.yaml are too open:ファイルをほかの人も読める状態になっているという警告です。
sudo chmod 600 /etc/netplan/99-custom.yamlで所有者だけが読めるようにします - Error in network definition や行番号つきのエラー:字下げやコロンのミスです。表示された行の周りを見直します
- ping: www.google.co.jp: Temporary failure in name resolution:名前の問い合わせができていません。
nameserversの行を見直します - Network is unreachable:外への道が分かっていません。
routesの行と、ip routeの表示にdefault via 192.168.100.1があるかを確かめます
反映を試してうまくいかなかったときに自動で元に戻してほしい場合は、sudo netplan apply の代わりに sudo netplan try も使えます。確認のメッセージに Enter を押さなければ、約2分で元の設定に戻ります。
hostsファイルについて(手順に書かれていない項目)
目的にはあるが、手順がない
指導書の1日目の目的には「hostsファイル設定」がありますが、具体的な手順は書かれていません。また付録2には「1日目で設定した hosts を前提に」とあります。何をどこに書くかは授業の指示に従ってください。ここでは、指示を理解するための予備知識をまとめます。
hostsファイルは、名前とIPアドレスの対応を、そのコンピュータの中だけで書いておくメモ帳のようなファイルです。DNSに問い合わせるより先に読まれます。書いた内容はそのファイルがある機械にだけ効き、ほかの機械には影響しません。
| 場所 | 効く範囲 | 編集のしかた |
|---|---|---|
Ubuntu:/etc/hosts | Ubuntuのサーバーの中だけ | sudo nano /etc/hosts |
Windows:C:\Windows\System32\drivers\etc\hosts | そのWindows PCの中だけ(ブラウザで名前を使って開くときなど) | 管理者として起動したメモ帳などで開く |
書き方は「IPアドレス 名前 別名…」を1行に並べるだけです。Ubuntuの /etc/hosts には、最初から次のような行があります。
127.0.0.1 localhost
127.0.1.1 t3lab-07たとえば、4日目にWindowsのブラウザで http://www.t3.metro-cit.internal を開けるようにするには、Windows側がこの名前を自分のサーバーのIPアドレスに結びつけられる必要があります。その方法の1つが、Windowsのhostsファイルに次のような1行を書くことです(もう1つの方法が、付録2で作るDNSです)。
192.168.100.xxx www.t3.metro-cit.internal結果と考察のための確認コマンド
指導書では、設定が終わったら次のコマンドをまとめて実行し、正しく反映されていることを確かめます。それぞれが何を確かめているのかを押さえておくと、レポートの「結果」を書きやすくなります。
sudo apt update
journalctl -u systemd-timesyncd -n 30
dmesg | tail -n 30
timedatectl status
systemctl status systemd-timesyncd
sudo -l
ip a
systemctl status qemu-guest-agent
sudo netplan apply
ping -c 3 www.google.co.jp| コマンド | 確かめていること |
|---|---|
sudo apt update | ネットワーク経由でパッケージの配布元に届き、更新が済んでいる(All packages are up to date. なら最新) |
journalctl -u systemd-timesyncd -n 30 | 時刻合わせのサービスの記録 |
dmesg | tail -n 30 | 起動時のカーネルのメッセージ(必要なら sudo) |
timedatectl status、systemctl status systemd-timesyncd | 時刻が同期している |
sudo -l | sudo の権限がある |
ip a | 固定したIPアドレスになっている |
systemctl status qemu-guest-agent | Guest Agentが動いている |
sudo netplan apply、ping -c 3 www.google.co.jp | ネットワーク設定が反映され、外まで通信できる |
エビデンス(スクリーンショット8点)
次の8点を撮影し、図としてレポートに入れて説明します。撮れたものにチェックを付けておくと、このブラウザに記録が残ります。撮り方のコツは作図とスクリーンショットを参照してください。
課題を考えるための材料
ここに載せているのは、考えるための知識と観点です。答えの文章ではありません。自分の実験結果と結びつけ、自分の言葉で書いてください。事実を書くときは、書籍などで確かめて参考文献に挙げます。
課題1サーバー用OSとしてLinux系(Unix系)が多く使われる理由を、歴史的背景やネットワーク機能との親和性から説明せよ。
問いの分解
「歴史的背景」と「ネットワーク機能との親和性」の2つの観点が指定されています。どちらか一方だけで終わらないようにします。
知っておくとよい事実
- Unixは1969年にアメリカのAT&Tベル研究所で開発が始まり、1970年代にC言語で書き直されたことで、別の種類のコンピュータへ移しやすくなった
- カリフォルニア大学バークレー校で作られたUnix(BSD)は、インターネットの通信方式であるTCP/IPをOSに組み込み(1983年の4.2BSD)、ネットワークのプログラムを書くための共通の手段を広めた
- メール・Web・DNSなど、インターネットの基本的なサーバーソフトの多くがUnixの上で生まれ、育った(付録2で使うBINDもその1つ)
- Linuxは1991年に開発が始まったUnix系のOSで、ソースコードが公開され、無料で使い、改良できる
- Unix系のOSは、もともと多くの人が同時に使う前提で作られており、ユーザーごとの権限の仕組みや、文字だけで遠隔から操作する仕組みを持っている
考える観点
- サーバーに求められる条件(長く止まらない、遠隔から管理できる、安い、安全、自動化しやすい、など)は何か
- その条件を、Unix系のOSの生まれ方や設計思想がどう満たしてきたか
- 今日の実験で、GUIなしで、コマンドと設定ファイルだけで管理できたことは何を示しているか
課題2OSやソフトウェアのアップデートを実施することには、どのような利点があるか。セキュリティと保守運用の観点から説明せよ。
問いの分解
「セキュリティ」と「保守運用」の2つの観点で、それぞれ利点を挙げます。
知っておくとよい事実
- 更新には、脆弱性(悪用されうる欠陥)の修正、不具合の修正、機能の追加や改善が含まれる
- 脆弱性の情報は公表されるため、修正版が出たあとも更新しないでいると、攻撃者に知られた弱点を抱えたままになる
- UbuntuのLTS版は、決まった期間、安全のための更新が提供される。その期間中に更新を当て続けることが前提になっている
- インストール直後でも、ISOが作られた後に出た更新がたまっている(手順9の集計がその証拠になる)
考える観点
- 更新しないと、どんな危険が時間とともに増えていくか
- 運用する側にとって、不具合の修正や、サポートされる版を使い続けることの意味は何か
- 更新そのものにも「動かなくなる」などの危険はあるか。あるなら、スナップショットや事前の確認はどんな役に立つか(利点だけでなく、この点まで書くと考察に深みが出る)
課題3sudo を用いた権限管理が、常時rootで作業する方法と比べて安全である理由を説明せよ。
問いの分解
「常にrootで作業する」場合と比べる形で書くことが求められています。比べる相手を明確にします。
知っておくとよい事実
- rootはシステムのあらゆる操作ができ、制限がかからない
- sudoは、一般ユーザーが、コマンド単位で一時的に管理者の権限を使う仕組みで、使うときに本人のパスワードを求める
- sudoの利用は、誰が・いつ・何を実行したかが記録に残る
- sudoersの設定で、誰にどこまでの操作を許すかを細かく決められる(手順10で見た
%sudo ALL=(ALL:ALL) ALLはその一例) - Ubuntuでは、rootで直接ログインできないように初期設定されている
考える観点
- 打ち間違いや勘違いのとき、被害の大きさはどう違うか(最小権限の原則)
- ユーザーのアカウントが乗っ取られた場合、または複数人で管理する場合に、どちらが安全か
- 記録が残ることは、問題が起きたあとの調査にどう役立つか