【DHCP】サーバー・クライアントの設定

この記事は約5分で読めます。

環境

  • OS
cat /etc/os-release | grep -i pretty
> PRETTY_NAME="Ubuntu 20.04.6 LTS"

※特別な記述がない限り、基本的にスーパーユーザー権限(root)での説明となります。

以下の環境はあくまで自分の環境です。各々の環境に合わせた設定をしてください!

デフォルトゲートウェイは(IP: 192.168.4.1)
2つのVM環境を使用します!
1つはサーバー(IP: 192.168.4.3)でIPアドレスを範囲でプールしクライアントに割り振る役割を担い、
1つはクライアント(IP: 192.168.4.4)でサーバーからIPアドレスを割り振られる側となります。

ケン
ケン

この記事は
デフォルトゲートウェイ・IPアドレス・サブネット

といった基本的なネットワークの知識が前提となります。

はじめに

ubuntu20.04 でDHCPサーバー・クライアントを構築する手順を解説します!
ものすごく簡単にできるので、理論だけでなく実際に手を動かして構築してみることをおすすめします。

実装手順

実装手順をサーバー側とクライアント側というセクションでそれぞれ解説します。

サーバー側(IP: 192.168.4.3)

  • インストール
apt install -y isc-dhcp-server
  • 設定ファイルを編集
vi /etc/dhcp/dhcpd.conf
  • 以下を記述
# ↓各々の環境にあわせてサブネットを設定してください!
subnet 192.168.4.0 netmask 255.255.255.0 {
    # ↓クライアントに割り振るIPアドレスの範囲を指定
    range 192.168.4.10 192.168.4.252;
    # デフォルトゲートウェイを設定
    option routers 192.168.4.1;
   # DNSサーバーのIPアドレスを指定
    option domain-name-servers 192.168.4.1;
}
ケン
ケン

クライアントに割り振るIPアドレスの範囲にはすでに固定で割り振られているIPアドレスは含めないようにしましょう!
自分の場合は、ホストマシンやVMで使っている内部IPの範囲が以下ですので、
192.168.4.1 ~ 192.168.4.5
余裕を持たせて、かつキリのいい 192.168.4.10 ~ としています。

  • サーバー側がクライアントに割り振ったIPアドレスなどの情報を記述するファイルを作成
touch /var/lib/dhcp/dhcpd.leases
  • 再起動
systemctl restart isc-dhcp-server
  • ステータス確認
systemctl status isc-dhcp-server
ケン
ケン

サーバー側の設定はこれで完了です!
非常に少ない手順でできますね!

  • 以下コマンドでDHCPサーバーがクライアントにIPアドレスを割り振るのをリアルタイムで見れるようにしましょう。(別にしなくても ok です!)
watch -n 1 "cat /var/lib/dhcp/dhcpd.leases"

クライアント側(IP: 192.168.4.4)

  • netplan を修正する前に backup をとっておきます。
cp -a /etc/netplan/xxxxx.yml /etc/netplan/xxxxx.yml.org
ケン
ケン

設定ファイルを編集するときは必ず上記のようにBUはとりましょう。
うまくいかなかったときの復元や調査に役立ちます。

  • netplan を修正
vi /etc/netplan/xxxxxx.yml
  • 以下を記述
network:
  ethernets:
    eth0:
        dhcp4: yes
  version: 2
  • 設定適応
netplan apply

設定を適応したら、DHCPクライアントとなってしまうため現在SSH接続しているコンソールはハングった状態になります。
それは、IPアドレスが変更されたことが原因ですので、サーバー側でクライアントに割り振られたIPアドレスを確認しましょう!

サーバー側での確認

  • 貸し出したIPアドレスを確認
cat /var/lib/dhcp/dhcpd.leases
# ↓割り振ったIPアドレス
lease 192.168.4.24 {
  starts 6 ${日付};
  ends 6 ${日付};
  cltt 6 ${日付};
  binding state active;
  next binding state free;
  rewind binding state free;
  hardware ethernet ${MACアドレス};
  uid ${UID};
  client-hostname ${クライアントのホスト名};
}
ケン
ケン

クライアントに割り振ったIPアドレスが 192.168.4.24 と判明したので、
そのIPを使って再度ハングったクライアントにSSH接続してコンソールログインできるかどうか確認してみてください!

ちょこっと理論パート

DHCPクライアント
ネットワークのブロードキャストアドレス(IP: 192.168.4.255) にUDPパケットを送信。

DHCPサーバーはそのUDPパケットを受け取ると、rangeで指定したIPアドレスの中から選択してクライアントに割り振る。

DHCPクライアントに割り振ったIPアドレスを別のクライアントに割り当てるIPアドレスと重複しないように、/var/lib/dhcp/dhcpd.leases にメモを残す。

さいごに

DHCPってよく耳にするけどどういう仕組みなんだろと思ったけど、思ったより単純でしたね!
自分たちがスマホからネットワークにアクセスするときはほとんどこのDHCPが使われているので、
これを機会にいろいろ調べてみるのも面白いかなと思います!

設定クリーン

以上で解説した手順をクリーンアップして、DHCPサーバー・クライアントの設定をなくしましょう!
もちろん、残しておきたい人はしなくて ok です。

サーバー側

apt remove -y --purge isc-dhcp-server

クライアント側

cp -a /etc/netplan/xxxx.yml.org /etc/netplan/xxxx.yml

コメント