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