クリーム色の背景、色付き表示、高コントラスト、大きな文字のほうが読みやすいですか?配色と文字を選ぶと、すべてのページに一度で反映されます。

無料レッスン

アドレスと名前を配る(DHCP、DNS)

このレッスンのあとで: 機器がアドレスと名前をもらう仕組みを説明できる。

55分のレッスンコマンド6件DHCP と DNS のラボ:小さなネットワークの dnsmasq をブラウザーで設定

差し込むだけで動く

新入社員が、会議室の壁のコネクタにノートPCを差し込み、社内のウェブページを開きます。アドレスも、サーバーの名前も、誰も入力していません。

二つの小さなサービスが、一秒もかけずにそれをしました。一つはPCにアドレスを貸し、もう一つは名前を番号に変えます。

今日はこの二つを開きます。

このレッスンのゴール

メモ

機器がアドレスと名前をもらう仕組みを説明できる。

重要な言葉

ことばいみれい
DHCP頼まれた機器に、アドレスを貸すサービス
リース期限を決めて、アドレスを貸すこと12時間
スコープDHCPサーバーが貸してよいアドレスの範囲10.0.10.100から10.0.10.150
予約機器のハードウェアアドレスに、決まったアドレスをいつも渡す設定
DNS名前をアドレスに変えるサービス
レコードDNSサーバーが名前について持っている、一つの事実

学生が入力するセルは、このプレビューでは空白です。

アドレスの無い機器が頼む

新しい機器は、まだ自分のアドレスを持たず、DHCPサーバーの場所も知りません。そこで最初の知らせを、同じ線の全員に送ります。これがブロードキャストです。

DHCPサーバーが答えます。二者はDiscover、Offer、Request、Acknowledgeの4つの段階で話します。頭文字を取って、DORAと覚えましょう。

例: 四つの段階

段階送る側言っていること
Discover機器ここにDHCPサーバーはいますか
Offerサーバーこのアドレスを使えます
Request機器そのアドレスをください
Acknowledgeサーバーこの時刻まで、あなたのものです

学生が入力するセルは、このプレビューでは空白です。

サーバーと二台のクライアント

コマンド
dnslab status

ここでは表示のみで、実行されません。無料アカウントを作成すると、実行ボタンで自分のラボのターミナルに入力できます。

pc1にアドレスを頼ませる

コマンド
sudo dnslab renew pc1

ここでは表示のみで、実行されません。無料アカウントを作成すると、実行ボタンで自分のラボのターミナルに入力できます。

答えが言うこと

最初の実行は、server にはアドレスがあり、pc1 と pc2 には無いことを示します。

次の実行は約3秒待って、pc1 was given nothing: no DHCPOFFER came back と出します。Discoverは出ましたが、Offerは戻りませんでした。

アドレスは貸すもの

リースには期限があります。機器は、期限が切れる前に延長を頼まなければなりません。機器が消えたら、アドレスは貸し出しの場所に戻ります。

スコープは、サーバーが貸してよい範囲です。予約は、一つのハードウェアアドレスと一つの固定アドレスを結びます。プリンターに、いつも同じアドレスを渡せます。

例: リースファイルの1行

項目例意味
期限17613000001970年からの秒数。0なら期限なし
ハードウェアアドレス02:00:00:00:00:0a借りている機器
アドレス10.0.10.101貸したアドレス
名前till1機器が名乗った名前。無ければ星
クライアントID01:02:00:00:00:00:0a二つ目の目印。無ければ星

学生が入力するセルは、このプレビューでは空白です。

クライアントのハードウェアアドレス

コマンド
sudo ip netns exec pc1 ip -o link show eth0

ここでは表示のみで、実行されません。無料アカウントを作成すると、実行ボタンで自分のラボのターミナルに入力できます。

サーバーの設定ファイルを読む

コマンド
cat /etc/dnsmasq.d/lab.conf

ここでは表示のみで、実行されません。無料アカウントを作成すると、実行ボタンで自分のラボのターミナルに入力できます。

サーバーが何も貸さない理由

最初の実行は link/ether 02:00:00:00:00:01 を含む行を出します。サーバーは、このハードウェアアドレスで pc1 と pc2 を見分けます。

次の実行は、コメントの3行だけを出します。スコープが書かれていないので、dnsmasqには貸せるアドレスがありません。

DNSは名前をアドレスに変える

人は名前を覚え、ルーターは番号で動きます。DNSサーバーは、その二つを結ぶレコードを持っています。

機器は、設定されたDNSサーバーに聞きます。サーバーは、自分のレコードから答えるか、別のサーバーに聞いて、その返事をしばらく覚えます。

どのDNSサーバーを使うかは、DHCPが機器に教えます。

例: よくあるレコードの種類

種類答えること例
Aこの名前のIPv4アドレスはfiles.lab は 10.0.10.20
AAAAこの名前のIPv6アドレスはfiles.lab は長い16進数
CNAMEこの名前は、別の名前の別名かwww は shop と同じ
MXこのドメインのメールを受けるサーバーはmail.example.org
PTRこのアドレスの名前は10.0.10.20 は files.lab
TXT付いているメモは短い文字列

学生が入力するセルは、このプレビューでは空白です。

サーバーに名前を聞く

コマンド
sudo ip netns exec server dig +noall +comments @10.0.10.1 files.lab

ここでは表示のみで、実行されません。無料アカウントを作成すると、実行ボタンで自分のラボのターミナルに入力できます。

pc1のDNSサーバーの一覧を読む

コマンド
cat /etc/netns/pc1/resolv.conf

ここでは表示のみで、実行されません。無料アカウントを作成すると、実行ボタンで自分のラボのターミナルに入力できます。

よくある間違い

注意

「DHCPとDNSは同じサービス」と思う人が多いです。仕事は別です。DHCPは機器にアドレスを貸し、DNSは名前についての質問に答えます。ここのdnsmasqのように一つのプログラムが両方をしても、仕事は二つのままです。

発展: 二回目のリース

ラボで設定が動いたら、sudo dnslab renew pc1 を1分あけて2回実行しましょう。

毎回、sudo cat /run/dnslab/dnsmasq.leases でサーバーのリースファイルを読みます。pc1は同じアドレスをもらえましたか。その行の何が変わり、なぜ変わったのでしょう。ファイルを自分の active_leases に渡して確かめましょう。

このラボとソースについて: DHCP と DNS のラボ:小さなネットワークの dnsmasq をブラウザーで設定

授業で使いますか?このモジュールを学生に割り当てると、教員用ガイド、自動採点つきの課題、学生ごとのラボを使えます。