情報工学徹底攻略実験とレポートの私的学習ガイド

はじめに読む目安 25分

予備知識:コンピュータとネットワーク

実験の指導書は、サーバー・IPアドレス・ポート・仮想化といった言葉を知っている前提で書かれています。このページでは、それらを身近なものにたとえながら、実験に必要な分だけ説明します。

コンピュータの中身は層になっている

コンピュータのソフトウェアは、役割ごとに層(レイヤー)に分けて考えると分かりやすくなります。下の層が上の層を支える関係で、指導書もこの考え方で説明しています。

表1ソフトウェアの層と、この実験での例
層役割この実験での例
アプリケーション利用者が目的を果たすためのソフトブラウザ、Open WebUI、自作のAIチャット
ミドルウェア多くのアプリが共通して使う機能を提供するNginx(Webサーバー)、BIND9(DNSサーバー)、Docker
OS(基本ソフトウェア)ハードウェアを管理し、上の層からの依頼を実行するUbuntu Server 24.04、Windows 11
ハードウェアCPU・メモリ・ディスク・ネットワークなどの部品学校の物理サーバー(を仮想的に分けたもの)

OSにはクライアント用(Windows 11 など)とサーバー用(Ubuntu Server など)があります。サーバー用のOSは多くの場合、マウスで操作する画面(GUI)を持たず、文字でコマンドを打ち込む方式(CUI)で管理します。画面を描かない分だけ軽く、離れた場所からでも文字のやり取りだけで操作でき、同じ操作を自動化しやすいからです。この実験でも、Ubuntuの操作はすべてコマンドで行います。

サーバーとクライアント

サーバーは特別な機械の名前ではなく、頼まれてサービスを提供する役割の名前です。頼む側をクライアントと呼びます。レストランにたとえると、客がクライアント、厨房がサーバーです。客は注文(依頼=リクエスト)を出し、厨房は料理(応答=レスポンス)を返します。

この実験では、あなたのWindows 11 PCがクライアント、これから作るUbuntuの仮想マシンがサーバーです。7日間かけて、このサーバーに「遠隔操作を受け付ける」「Webページを返す」「名前を教える」「AIの答えを返す」といった役割を1つずつ持たせていきます。

仮想化と仮想マシン

仮想化は、1台の物理的なコンピュータの中に、ソフトウェアで何台分ものコンピュータを作り出す技術です。作られたコンピュータを仮想マシン(VM:Virtual Machine)と呼びます。仮想マシンは、本物のPCと同じようにCPU・メモリ・ディスク・ネットワークを持ち、OSを入れて使えます。

物理サーバー(学校のマシン室にある本物のコンピュータ) VM 101 t3lab-01 ゲストOS:Ubuntu 2コア・1 GB VM 102 t3lab-02 ゲストOS:Ubuntu 2コア・1 GB あなたのVM VM 1XX t3lab-XX 2コア・1 GB VM 1YY t3lab-YY ゲストOS:Ubuntu 2コア・1 GB (人数分つづく) ハイパーバイザ(Proxmox VE) 本物のCPU・メモリ・ディスクを切り分けて、各VMに配る
図1仮想化のしくみ。1台の物理サーバーを、ハイパーバイザが学生の人数分の仮想マシンに切り分ける。各仮想マシンの中では、それぞれ独立したOS(ゲストOS)が動く。

仮想マシンを動かす土台のソフトウェアをハイパーバイザと呼び、この実験ではProxmoxを使います。Proxmoxは、ブラウザから仮想マシンを作ったり、起動・停止したり、画面(コンソール)を見たりできる管理システムです。

VM ID
Proxmoxが仮想マシンを区別するための番号。この実験では 100+学生番号の下2桁(あなたは 1XX)。
ISOイメージ
OSのインストール用DVDを1つのファイルにしたもの。仮想マシンの仮想DVDドライブに「入れて」起動します。
スナップショット
その時点の仮想マシンの状態をまるごと記録したもの。ゲームのセーブポイントと同じで、設定を壊したときにその時点へ戻れます。
ホストとゲスト
仮想マシンを動かしている側がホスト、仮想マシンの中のOSがゲストです。

仮想マシンの良いところは、失敗しても本物の機械を壊さないこと、スナップショットで何度でもやり直せること、1台の機械を大勢で分け合えることです。3日目には、もっと軽い「コンテナ」という仕組みも学び、仮想マシンとの違いを比べます。

この実験の環境

指導書の前提をまとめると、次のようなつながりになります。

ネットワーク 192.168.100.0/24(255.255.255.0) インターネット ゲートウェイ 192.168.100.1 DNS・NTPサーバーも兼ねる 外への出入口 Proxmox VE(物理サーバー) あなたのVM t3lab-XX 192.168.100.xxx Ubuntu Server 24.04 ほかの人のVM 192.168.100.1YY (1人1台) apt・ping・時刻合わせ あなたの Windows 11 PC Chrome・ターミナル SSH・Web 管理画面
図2実験環境のつながり。自分のVMは学校のProxmoxの中にあり、ゲートウェイ(192.168.100.1)を通ってインターネットに出る。Windows PCからは、Proxmoxの管理画面と自分のVMの両方に接続する。
表2指導書で決められている実験環境の値(あなた用の値に置き換えて表示)
項目決まりあなたの値
クライアントWindows 11—
仮想化基盤Proxmox VE—
サーバーOSUbuntu Server 24.04—
VM ID100+学生番号の下2桁1XX
VMの名前・サーバー名t3lab-[学生番号下2桁]t3lab-XX
IPアドレス192.168.100.[100+学生番号下2桁]192.168.100.xxx
サブネットマスク255.255.255.0(/24)/24
ゲートウェイ・DNS・NTP192.168.100.1192.168.100.1
ドメインt3.metro-cit.internal—
ユーザー名t3admint3admin

IPアドレス:ネットワーク上の住所

ネットワークにつながる機器には、郵便の住所にあたるIPアドレスが必要です。現在広く使われているIPv4では、0〜255の数字を4つ、ドットで区切って書きます。

192.168.100.xxx/24
ネットワーク部(町名):先頭24ビット = 数字3つ分 ホスト部(番地)
図3あなたのサーバーのIPアドレスの内訳。先頭の3つの数字が「どのネットワークか」、最後の数字が「そのネットワークの中のどの機器か」を表す。

コンピュータの中では、IPアドレスは32個の0と1の並び(32ビット)です。それを8個ずつ区切り、10進数に直したものが、見慣れた4つの数字です。そのため、1つの数字は0〜255の範囲になります。

末尾の /24 は「先頭の24ビット(数字3つ分)がネットワークの番号」という意味で、サブネットマスク 255.255.255.0 と同じことを表しています。住所にたとえると、先頭3つが町名(ネットワーク部)、最後の1つが番地(ホスト部)です。同じ町名(192.168.100)の機器どうしは直接やり取りでき、ほかの町へ行くときは町の出入口を通ります。この出入口がデフォルトゲートウェイで、この実験では 192.168.100.1 です。

プライベートアドレスとグローバルアドレス

IPアドレスには、インターネット全体で通用するグローバルアドレスと、学校や家庭の中だけで使うプライベートアドレスがあります。192.168. で始まる番号はプライベートアドレスなので、あなたのサーバーはインターネットから直接は見えません。外へ出るときは、ゲートウェイが代わりにやり取りを中継します。

自動で配られる番号と、固定の番号

家庭のPCやスマホは、ネットワークにつなぐとDHCPという仕組みでIPアドレスを自動的にもらいます。便利ですが、つなぎ直すと番号が変わることがあります。サーバーは「いつも同じ住所にいる」ことが大事なので、1日目の最後に固定IPへ切り替えます。一人ひとりの番号が学生番号から決まっているのは、全員の番号がぶつからないようにするためです。同じ番号を2台が使うと、どちらにも正しく届かなくなります。

名前で呼ぶ:ホスト名・ドメイン・DNS

数字の住所は覚えにくいので、コンピュータには名前もつけます。1台ごとの名前がホスト名、組織やサービスのまとまりを表す名前がドメイン名です。両方をつなげた www.t3.metro-cit.internal のような完全な名前をFQDNと呼びます。ドメイン名は、右に行くほど大きな範囲を表します。

名前からIPアドレスを調べることを名前解決と呼び、その仕組みの代表がDNSです。DNSは、インターネット全体で分担して管理されている電話帳のようなものです。一方、そのコンピュータの中だけで通用する手元のメモ帳がhostsファイルです。

この実験のドメインの末尾にある.internalは、組織の内部だけで使う名前のために確保された末尾で、インターネット上には存在しません。そのため、学内で自由に名前をつけても、外部の実在するサイトとぶつかりません。DNSの詳しい仕組みは付録2のページで説明します。

ポート:サーバーの中の窓口番号

1台のサーバーでは、SSH・Web・DNSなど、いくつものサービスが同時に動いています。届いた通信をどのサービスに渡すかを区別するのがポートです。IPアドレスが「建物の住所」なら、ポートは「窓口の番号」です。

Windows 11 PC (送る側) サーバー 192.168.100.xxx 22番 SSH(sshd) 80番 HTTP(Nginx) 11434番 Ollama API ポート(窓口) 宛先 192.168.100.xxx:22 宛先 192.168.100.xxx:80 宛先 192.168.100.xxx:11434
図4IPアドレスで「どのコンピュータか」が決まり、ポート番号で「その中のどのサービスか」が決まる。ブラウザでURLにポートを書かないときは、HTTPなら80番が使われる。

よく使うサービスには決まった番号(ウェルノウンポート)があり、この実験でも次のポートが登場します。ポート番号は 22/tcp のように、通信方式(TCPかUDPか)と組にして書くことがあります。TCPは届いたことを確かめながら送る書留郵便のような方式、UDPは確認を省いて素早く送るはがきのような方式です。

表3この実験に登場するポート
ポートサービス登場する日
22/tcpSSH(遠隔操作)2日目で開ける
53/udpDNS(名前の問い合わせ)付録2で開ける
80/tcpHTTP(Web)2日目は閉じていることを確認し、4日目にNginxで使う
123/udpNTP(時刻合わせ)1日目。自分のサーバーは問い合わせる側
443/tcpHTTPS(暗号化されたWeb)2日目に閉じていることを確認する
8080/tcpwhoami(練習用のWebサーバー)3日目
11434/tcpOllama(ローカルLLMのAPI)6・7日目

通信のやり方の約束事をプロトコルと呼びます。SSH、HTTP、DNS、NTPは、どれもプロトコルの名前です。

時刻合わせが大事な理由

サーバーの時計がずれていると、次のような問題が起きます。指導書が1日目に時刻合わせ(NTP)を入れているのはこのためです。

  • ログが読めなくなる:複数の機械のログを突き合わせるとき、時刻がずれていると出来事の順番が分からなくなる
  • 証明書の確認に失敗する:暗号化通信で使う証明書には有効期限があり、時計が大きくずれていると「期限切れ」や「まだ有効でない」と判定される
  • 認証がうまくいかない:時刻を使って本人確認をする仕組みでは、時計がずれていると正しい人でもはじかれることがある

NTPは、ネットワーク上の正確な時計(NTPサーバー)に問い合わせて、自分の時計を合わせ続ける仕組みです。この実験では 192.168.100.1 がNTPサーバーです。

ソフトウェアの更新とパッケージ

Ubuntuでは、ソフトウェアはパッケージという単位で配布され、aptというコマンドで入れたり更新したりします。スマホのアプリストアに近い仕組みです。

  • apt update:配布元(リポジトリ)から最新のカタログを取り寄せる。これだけではソフトは何も新しくならない
  • apt upgrade:カタログと見比べて、入っているソフトを新しい版に入れ替える

更新には、不具合の修正や新機能だけでなく、脆弱性(悪用されうる欠陥)の修正が含まれます。インストールした直後でも、ISOイメージが作られた後に出た修正がたまっていることが多いので、最初に更新します。1日目の課題2は、この更新の意味を問うものです。

安全なサーバーのための3つの考え方

2日目以降の作業や課題の多くは、次の3つの考え方で説明できます。レポートの考察を書くときの軸として覚えておくと役に立ちます。

必要な分だけの権限

普段は一般ユーザーで作業し、管理者の権限は必要なときだけ使う(最小権限の原則)。1日目の sudo、2日目の root ログイン禁止。

入口を減らす

使わない窓口(ポート)は閉じておく。入口が少ないほど、攻撃される可能性(攻撃対象領域)が減る。2日目のファイアウォール。

守りを重ねる

1つの対策が破られても次で止まるように、対策を何重にも重ねる(多層防御)。ファイアウォールと鍵認証の組み合わせ。

あなたの番号を設定

学生番号の下2桁を入れると、このサイトのコマンド例に出てくるIPアドレスやVM IDが、あなた用の値に置き換わります。値はこのブラウザの中だけに保存され、どこにも送信されません。