プリンターのアドレスが毎朝変わる
DHCP(動的ホスト構成プロトコル)は、つないだ機器にIPアドレスを自動で貸すしくみです。設定のしかたが分かると、プリンターに毎回同じアドレスを渡せます。
ある事務所では、プリンターのアドレスが朝ごとに変わり、印刷できない日がありました。原因はDHCPの貸し方にあります。名前で呼べるようにするDNSも、あわせて見ましょう。
このレッスンのゴール
メモ
機器にアドレスと名前を与える設定を読んで、説明できる。
重要な言葉
| ことば | いみ |
|---|---|
| リース | アドレスを期限つきで貸す約束 |
| アドレスプール | サーバーが貸してよいアドレスの範囲 |
| 予約 | 特定の機器に、いつも同じアドレスを貸す設定 |
| MACアドレス | 機器ごとに決まっている、ネットワークカードの番号 |
| レコード | DNSが持っている、名前とアドレスの組 |
| 設定ファイル | サーバーの動き方を書いておく文書 |
学生が入力するセルは、このプレビューでは空白です。
アドレスは期限つきで貸される
DHCPサーバーは、アドレスプールから一つ選んで機器に貸します。貸すのは期限つきで、この約束をリースと呼びます。
リースが切れる前に、機器は更新を頼みます。電源を切った機器のアドレスは、期限が来るとほかの機器に貸せます。
例:事務所のDHCPの決まり
| 項目 | 値 | 意味 |
|---|---|---|
| アドレスプール | 192.168.5.100 から 150 | 貸してよい51個 |
| リースの長さ | 12時間 | 半日で更新を頼む |
| ゲートウェイ | 192.168.5.1 | 外へ出る出口 |
| DNSサーバー | 192.168.5.1 | 名前を聞く相手 |
学生が入力するセルは、このプレビューでは空白です。
サーバーと二台の客を見る
dnslab statusここでは表示のみで、実行されません。無料アカウントを作成すると、実行ボタンで自分のラボのターミナルに入力できます。
pc1にアドレスを頼ませる
sudo dnslab renew pc1ここでは表示のみで、実行されません。無料アカウントを作成すると、実行ボタンで自分のラボのターミナルに入力できます。
サーバーの設定ファイルを読む
cat /etc/dnsmasq.d/lab.confここでは表示のみで、実行されません。無料アカウントを作成すると、実行ボタンで自分のラボのターミナルに入力できます。
貸すアドレスが無いと何も起きない
status には、10.0.10.1/24 を持つ server が出ます。pc1 と pc2 には、アドレスが一つもありません。
renew は pc1 was given nothing: no DHCPOFFER came back と出します。設定ファイルにはコメントしか無く、サーバーに貸すアドレスの範囲が書かれていないからです。
同じ機器に毎回同じアドレスを渡す
プリンターのアドレスが変わると、パソコン側の設定が使えなくなります。そこで、機器のMACアドレスとアドレスを結んで「予約」します。
dnsmasq という、DHCPとDNSを一つでこなすプログラムでは、設定ファイルに一行書きます。MACアドレスは機器ごとに違うので、見分けに使えます。
例:設定ファイルの二行
| 設定の一行 | 意味 |
|---|---|
| dhcp-range=192.168.5.100,192.168.5.150,12h | プールと12時間のリース |
| dhcp-host=aa:bb:cc:dd:ee:01,printer,192.168.5.20 | このMACには、いつもこのアドレス |
学生が入力するセルは、このプレビューでは空白です。
pc1のMACアドレスを読む
sudo ip netns exec pc1 ip -o link show eth0ここでは表示のみで、実行されません。無料アカウントを作成すると、実行ボタンで自分のラボのターミナルに入力できます。
MACアドレスで機器を見分ける
出力には link/ether 02:00:00:00:00:01 が出ます。これが pc1 のMACアドレスです。
アドレスが付く前の機器を、サーバーが見分けられるのはこの番号だけです。予約の一行は、この番号を使って書きます。
DNSは名前をアドレスに変える
人は「printer」のような名前を覚え、ルーターは数字を使います。二つを結ぶレコードを持っているのがDNSです。
dnsmasq では address=/printer.office/192.168.5.20 のように一行で書けます。これで、名前を打つだけでプリンターに届きます。
サーバーに名前を聞く
sudo ip netns exec server dig +noall +comments @10.0.10.1 files.labここでは表示のみで、実行されません。無料アカウントを作成すると、実行ボタンで自分のラボのターミナルに入力できます。
レコードが無い名前は断られる
答えには status: REFUSED と ANSWER: 0 が出ます。サーバーにはまだ files.lab のレコードが無く、聞きに行ける別のサーバーもありません。
名前に答えるには、レコードを書く必要があります。それはラボの仕事です。
よくある間違い
注意
DHCPでもらったアドレスは、ずっと自分のものだと思いがちです。リースには期限があり、更新しなければほかの機器に貸されます。いつも同じアドレスが要る機器だけ、予約を使います。
さらに挑戦:プールが足りない日
プールは51個で、そこに60台がつなぎたいとします。9台はアドレスを借りられません。
リースを12時間から1時間に短くすると、何が変わるでしょうか。ラボが動いたら、sudo cat /run/dnslab/dnsmasq.leases を読み、一行の項目を課題の形と比べましょう。