raspbian
DHCP
isc-dhcp-server
Raspberrypi3

ラズパイ(RaspberryPi3)をDHCPサーバーにしてみた

RaspberryPi3をDHCPv4サーバーにしてみましたので、その手順を紹介したいと思います。

環境

本体 RaspberryPi3
OS Raspbian stretch lite 9.4
DHCP daemon isc-dhcp-server 4.3
配布アドレス 192.168.0.1~192.168.0.12
プレフィックス 28
ゲートウェイ 192.168.0.14
DNS 192.168.0.12-13

前提

静的アドレスは設定済みで、インターネットからパッケージのダウンロードができる状態であることやsudoを使用できることを想定し、ここではそれらには触れません。

構築しよう

デーモンのインストール

早速DHCPの構築に必要なデーモンのインストールをします。
今回使用するのは、isc-dhcp-serverです。

$ sudo apt-get -y install isc-dhcp-server

設定のコメントアウトとアンコメント

インストール直後のコンフィグファイルに例として書き込まれているもので、必要ないものをコメントアウトします。
コンフィグファイルは/etc/dhcp/dhcpd.confです。

option domain-name "example.org";
option domain-name-servers ns1.example.org, ns2.example.org;

 ⇩コメントアウト

#option domain-name "example.org";
#option domain-name-servers ns1.example.org, ns2.example.org;

次に必要な設定をアンコメントします。

# If this DHCP server is the official DHCP server for the local
# network, the authoritative directive should be uncommented.
#authoritative; // アンコメント

 ⇩アンコメント

# If this DHCP server is the official DHCP server for the local
# network, the authoritative directive should be uncommented.
authoritative;

配布アドレスの設定

それでは、配布するアドレスの設定をしていきましょう。
設定する際には、行末に必ずセミコロン;をつけるようにしましょう。つけ忘れ注意です。
完成形は以下のようになります。

subnet 192.168.0.0 netmask 255.255.255.240 {
 range 192.168.0.1 192.168.0.13;
 option routers 192.168.0.14;
 option domain-name-servers 192.168.0.12, 192.168.0.13;
 option broadcast-address 192.168.0.15;
 ignore declines;
}
パラメータ 説明
subnet ~ netmask 配布したいネットワークのネットワークアドレスの定義
range 配布するホストアドレスの範囲
option routers ゲートウェイのアドレス
option domain-name-servers DNSサーバのアドレス
option broadcast-address ブロードキャストアドレス
ignore declines DHCPDECLINEメッセージを無視する

この他にも、特定のホストのアドレスを固定したり、リース期間を変更したりするパラメータがあるので、いろいろ試してみてください。

インターフェースへ紐付け

/etc/default/isc-dhcp-serverファイルの最終行に配布を行うインターフェース名を書き込みます。
例として、インターフェース名はeth1とします。

INTERFACES = "eth1"

デーモンの起動

$ sudo systemctl start isc-dhcp-server.service
$ sudo systemctl enable isc-dhcp-server.serice

確認

実際にアドレスが配布されたかを確認するには、/var/lib/dhcp/dhcpd.leasesの中身を確認しましょう。

$ cat /var/lib/dhcp/dhcpd.leases

lease 192.168.0.1 {
(省略)
}

ホストに割当が成功していれば、配布したアドレス、リース期間の情報、ホスト名などが出力されます。

参考