Pandora Pocket

IT系と日常系の備忘録。三日坊主。

RaspberryPiにDHCPサーバーを構築する

一般家庭ならDHCP機能はルーターが受け持ってくれるので、DHCPサーバーなんて立てる必要がないです。

が、一般の家庭じゃない我が家としましては、DHCPサーバーもルーターとは別に管理したいな、と。
NURO光ルーター(F660A)だと、固定アドレス割り当てがやりにくくて・・・。

今回は以前SoftEtherをインストールしたRaspberryPiに構築することにしました。

DHCPサーバーのインストール

今回利用するDHCPサーバーは有名どころの isc-dhcp-server

コマンド: sudo apt install isc-dhcp-server

コマンド一発でインストールできるのはWindowsユーザーとしてはうらやましい。
インストールして起動したときにエラーメッセージが出るかもしれませんがとりあえず放置。

Configファイルの修正

コマンド: sudo nano /etc/dhcp/dhcpd.conf

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

上記はコメントアウト

#authoritative;

上記はコメント解除。

ここまではみな同じ。

subnet 192.168.0.0 netmask 255.255.255.0 {
range 192.168.0.100 192.168.0.254;
default-lease-time 600;
max-lease-time 7200;
option routers 192.168.0.1;
option domain-name "local";
option domain-name-servers 192.168.0.1, 8.8.8.8, 8.8.4.4;
option subnet-mask 255.255.255.0;
option broadcast-address 192.168.0.255;
}

これはお好みの設定で。
私の場合、192.168.0.2~192.168.0.99までは固定アドレス用としたかったので、レンジを192.168.0.100からとしました。

また、固定アドレスを設定する場合は下記のように記載。

host AmazonEchoDot{
hardware ethernet fc:65:de:36:b9:e8;
fixed-address 192.168.0.31;
}

ネットワークインターフェースの指定

コマンド:sudo nano /etc/default/isc-dhcp-server

INTERFACESv4=""
INTERFACESv6=""

IPv4なら INTERFACESv4IPv6ならINTERFACESv6にネットワークインターフェースを指定します。
通常は eth0 を指定しますが、私の場合SoftEtherによるVPNを構築した都合、br0を指定しました。
ここは ifconfigで要確認。

起動用ファイルの修正

IPアドレスが割り当たる前にDHCPサーバーが起動するとエラーになるとか。
というわけで起動ファイルにスリープを突っ込んで、起動タイミングをずらします。

コマンド: sudo nano /etc/init.d/isc-dhcp-server

start_daemon()関数のstart-stop-daemonが呼ばれる前、もしくはcase式の start)の次の行あたりに、
sleep 3
という形で3秒程度スリープを入れておきます。

ルーターDHCP機能無効化

同じネットワーク内に二つもDHCPサーバーが存在すると障害のもとになるのでさくっと無効化しておきましょう。

起動確認

コマンド:sudo systemctl restart isc-dhcp-server.service

設定に誤りがなければエラーメッセージが出ることなく再起動されるはず。
誤りがあった場合は journalctl -xe で詳細なメッセージを確認し、修正しましょう。

うまくDHCP機能が動いているかどうかは /var/lib/dhcp/dhcpd.leases のファイルを確認しましょう。

RaspberryPi起動時の自動起動

多分標準で設定されてると思うんですが念のため。

コマンド:sudo systemctl enable isc-dhcp-server.service

これを実行したらRaspberryPiをリブートし、正常に動いているか確認。

参考サイト