はじめに読む目安 25分
予備知識:コンピュータとネットワーク
実験の指導書は、サーバー・IPアドレス・ポート・仮想化といった言葉を知っている前提で書かれています。このページでは、それらを身近なものにたとえながら、実験に必要な分だけ説明します。
コンピュータの中身は層になっている
コンピュータのソフトウェアは、役割ごとに層(レイヤー)に分けて考えると分かりやすくなります。下の層が上の層を支える関係で、指導書もこの考え方で説明しています。
| 層 | 役割 | この実験での例 |
|---|---|---|
| アプリケーション | 利用者が目的を果たすためのソフト | ブラウザ、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を入れて使えます。
仮想マシンを動かす土台のソフトウェアをハイパーバイザと呼び、この実験ではProxmoxを使います。Proxmoxは、ブラウザから仮想マシンを作ったり、起動・停止したり、画面(コンソール)を見たりできる管理システムです。
- VM ID
- Proxmoxが仮想マシンを区別するための番号。この実験では
100+学生番号の下2桁(あなたは1XX)。 - ISOイメージ
- OSのインストール用DVDを1つのファイルにしたもの。仮想マシンの仮想DVDドライブに「入れて」起動します。
- スナップショット
- その時点の仮想マシンの状態をまるごと記録したもの。ゲームのセーブポイントと同じで、設定を壊したときにその時点へ戻れます。
- ホストとゲスト
- 仮想マシンを動かしている側がホスト、仮想マシンの中のOSがゲストです。
仮想マシンの良いところは、失敗しても本物の機械を壊さないこと、スナップショットで何度でもやり直せること、1台の機械を大勢で分け合えることです。3日目には、もっと軽い「コンテナ」という仕組みも学び、仮想マシンとの違いを比べます。
この実験の環境
指導書の前提をまとめると、次のようなつながりになります。
| 項目 | 決まり | あなたの値 |
|---|---|---|
| クライアント | Windows 11 | — |
| 仮想化基盤 | Proxmox VE | — |
| サーバーOS | Ubuntu Server 24.04 | — |
| VM ID | 100+学生番号の下2桁 | 1XX |
| VMの名前・サーバー名 | t3lab-[学生番号下2桁] | t3lab-XX |
| IPアドレス | 192.168.100.[100+学生番号下2桁] | 192.168.100.xxx |
| サブネットマスク | 255.255.255.0(/24) | /24 |
| ゲートウェイ・DNS・NTP | 192.168.100.1 | 192.168.100.1 |
| ドメイン | t3.metro-cit.internal | — |
| ユーザー名 | t3admin | t3admin |
IPアドレス:ネットワーク上の住所
ネットワークにつながる機器には、郵便の住所にあたるIPアドレスが必要です。現在広く使われているIPv4では、0〜255の数字を4つ、ドットで区切って書きます。
コンピュータの中では、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アドレスが「建物の住所」なら、ポートは「窓口の番号」です。
よく使うサービスには決まった番号(ウェルノウンポート)があり、この実験でも次のポートが登場します。ポート番号は 22/tcp のように、通信方式(TCPかUDPか)と組にして書くことがあります。TCPは届いたことを確かめながら送る書留郵便のような方式、UDPは確認を省いて素早く送るはがきのような方式です。
| ポート | サービス | 登場する日 |
|---|---|---|
22/tcp | SSH(遠隔操作) | 2日目で開ける |
53/udp | DNS(名前の問い合わせ) | 付録2で開ける |
80/tcp | HTTP(Web) | 2日目は閉じていることを確認し、4日目にNginxで使う |
123/udp | NTP(時刻合わせ) | 1日目。自分のサーバーは問い合わせる側 |
443/tcp | HTTPS(暗号化されたWeb) | 2日目に閉じていることを確認する |
8080/tcp | whoami(練習用のWebサーバー) | 3日目 |
11434/tcp | Ollama(ローカル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つの考え方で説明できます。レポートの考察を書くときの軸として覚えておくと役に立ちます。