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

無料レッスン

アドレスと名前を手に入れる(DHCP、DNS)

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

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

カフェのWi-Fiにつなぐ

カフェに入って、お店のWi-Fiにつなぎます。一秒もしないうちに、スマホにはアドレスが付きます。続けてサイトの名前を打つと、ページが開きます。

あなたは数字を一つも打っていません。小さなサービスが二つ、代わりにやってくれたのです。

一つはスマホにアドレスを貸し、もう一つは名前をアドレスに変えます。

このレッスンのゴール

メモ

機器がアドレスをもらい、名前からアドレスを調べる仕組みを説明できる。

重要な言葉

ことばいみれい
DHCP頼んできた機器にアドレスを貸し出す仕組み
リース決まった時間だけ貸し出されたアドレス
ブロードキャストネットワークの全員に向けて送るメッセージ
MACアドレスネットワークの部品ごとに決まった番号で、ハードウェアアドレスとも言う02:00:00:00:00:01
DNS名前をアドレスに変える仕組み
レコードDNSサーバーが名前について持っている一つの情報

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

新しい機器は聞くしかない

つないだばかりの機器には、アドレスがありません。DHCPサーバーがどこにいるかも知りません。

そこでネットワークの全員に向けて ブロードキャスト を送ります。それを聞いたDHCPサーバーが、アドレスを差し出します。

やり取りは四つのメッセージで、頭文字をとってDORAと呼ばれます。Discover、Offer、Request、Acknowledge です。

例:四つのメッセージ

メッセージ送るのは意味
DiscoverスマホここにDHCPサーバーはいますか
Offerサーバー192.168.5.101 を使えますよ
Requestスマホでは、それをください
Acknowledgeサーバー12時間あなたのものです

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

サーバーと二台の客を見る

コマンド
dnslab status

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

pc1にアドレスを頼ませる

コマンド
sudo dnslab renew pc1

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

pc1のMACアドレスを読む

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

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

pc1には誰も答えなかった

status には、10.0.10.1/24 を持つ server が出ます。pc1 と pc2 の下には、アドレスが一つもありません。

renew は三秒ほど待ってから、pc1 was given nothing: no DHCPOFFER came back と出します。Discover は出ていったのに、Offer が返ってこなかったのです。

最後の実行には link/ether 02:00:00:00:00:01 が出ます。サーバーは、この番号で pc1 と pc2 を見分けます。

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

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

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

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

人は名前を覚え、ルーターは数字を使います。その二つを結ぶ レコード を持っているのが、DNSサーバーです。

スマホは自分のDNSサーバーに「この名前のアドレスは?」と聞きます。サーバーは自分のレコードから答えるか、別のサーバーに聞きに行きます。

どのDNSサーバーに聞けばよいかは、DHCPがスマホに教えます。

例:カフェのレコード

レコードの種類答える問い例
Aこの名前のアドレスは?register.cafe は 192.168.5.10
AAAAこの名前のIPv6アドレスは?コロンの入った長い数
CNAMEこの名前は別の名前の言いかえ?menu.cafe は web.cafe と同じ
MXメールを受け取るサーバーは?mail.cafe

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

サーバーに名前を聞く

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

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

サーバーは断った

答えには status: REFUSED と ANSWER: 0 が出ます。サーバーにはまだその名前のレコードが無く、聞きに行く別のサーバーにも届きません。

レコードを書くのはラボの仕事です。ラボの後で同じことを聞くと、答えが返ってきます。

よくある間違い

注意

DHCPとDNSを一つの仕組みだと思いがちです。仕事は別々で、DHCPはアドレスを貸し、DNSは名前の問いに答えます。このラボの dnsmasq のように一つのプログラムが両方をこなしても、仕事は二つのままです。

さらに挑戦:本物のリースの中身

ラボが動いたら、サーバーの本物のリースファイルを読みましょう。sudo cat /run/dnslab/dnsmasq.leases です。

一行には、課題よりも多くの項目があります。それぞれの項目が何を表すか、当てはめてみましょう。リースの終わる時刻はどれですか。

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

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