一般家庭ならDHCP機能はルーターが受け持ってくれるので、DHCPサーバーなんて立てる必要がないです。
が、一般の家庭じゃない我が家としましては、DHCPサーバーもルーターとは別に管理したいな、と。
NURO光のルーター(F660A)だと、固定アドレス割り当てがやりにくくて・・・。
今回は以前SoftEtherをインストールしたRaspberryPiに構築することにしました。
IPアドレスの固定
DHCPサーバーにする端末がDHCPでのIPアドレス取得だと卵が先か鶏が先かのごとくややこしいことになるので固定する。
これはSoftEtherを使うなどして既に設定している場合は不要。
コマンド: sudo nano /etc/dhcpcd.conf
最終行あたりに下記を追加。設定はお好みで。
interface eth0
static ip_address=192.168.0.xx/24
static routers=192.168.0.1
static domain_name_servers=192.168.0.1
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なら INTERFACESv4
、IPv6なら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をリブートし、正常に動いているか確認。