CGBeginner

映画好きの個人CGクリエイターが試行錯誤した記録

フォローボタン

Raspberry Pi をDHCPサーバーにする

2017/08/27

Raspberry PiでDHCPサーバーを構築します。

DHCPサーバとは、インターネットなどのネットワークに一時的に接続するコンピュータに、IPアドレスなど必要な情報を自動的に発行するサーバ。ネットワーク設定を手動で行わなくてもすぐに適切な設定で接続することができ、ネットワークの設定に詳しくないユーザでも簡単に接続できる。(IT用語辞典より)

今回はDHCPサーバーソフトとして、ISC DHCP Serverというものを使います。このソフトはかなり老舗で有名らしいです。

基本的に、Raspbianのインストールとセットアップは完了しているものとして話をすすめます。

以下、RaspberryPiへ、SSH接続しているものとして進めます。

スポンサードリンク

導入

とりあえず、ルートになります。

$ su -

サーバーソフトをインストールします。

# apt-get install isc-dhcp-server

パッケージリストを読み込んでいます... 完了
依存関係ツリーを作成しています
状態情報を読み取っています... 完了
提案パッケージ:
isc-dhcp-server-ldap
以下のパッケージが新たにインストールされます:
isc-dhcp-server
アップグレード: 0 個、新規インストール: 1 個、削除: 0 個、保留: 44 個。
350 kB のアーカイブを取得する必要があります。
この操作後に追加で 795 kB のディスク容量が消費されます。
取得:1 http://mirrordirector.raspbian.org/raspbian/ jessie/main isc-dhcp-server armhf 4.3.1-6+deb8u2 [350 kB]
350 kB を 1秒 で取得しました (322 kB/s)
パッケージを事前設定しています ...
以前に未選択のパッケージ isc-dhcp-server を選択しています。
(データベースを読み込んでいます ... 現在 114096 個のファイルとディレクトリがインストールされています。)
.../isc-dhcp-server_4.3.1-6+deb8u2_armhf.deb を展開する準備をしています ...
isc-dhcp-server (4.3.1-6+deb8u2) を展開しています...
man-db (2.7.0.2-5) のトリガを処理しています ...
systemd (215-17+deb8u6) のトリガを処理しています ...
isc-dhcp-server (4.3.1-6+deb8u2) を設定しています ...
Generating /etc/default/isc-dhcp-server...
Job for isc-dhcp-server.service failed. See 'systemctl status isc-dhcp-server.service' and 'journalctl -xn' for details.
invoke-rc.d: initscript isc-dhcp-server, action "start" failed.
systemd (215-17+deb8u6) のトリガを処理しています ...

無事に、インストールが終われば、/etc/dhcp/dhcpd.confを編集します。

# vi /etc/dhcp/dhcpd.conf

13行目の

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;

21行目、#authoritative;のコメントを外す。

#authoritative;

authoritative;

へ。

16.17行目

default-lease-time 600;
max-lease-time 7200;

は、それぞれ、IPをリースする標準時間600秒、リースする最大時間7200秒という設定になっています。お好みで変更します。

ここから、やっと基本設定です。一番下の行に、次のように書き加えます。ここで書く環境は、私が使っている環境に基いているので、お好みで変更してください。

subnet 192.168.0.0 netmask 255.255.255.0 {
range 192.168.0.10 192.168.0.99;
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;
}

次に、DHCPサーバーとして使うネットワークインターフェースの指定をします。

# ifconfig

で、ネットワークインターフェース一覧を表示します。殆どの人が、eth0につながっていると思います。私の場合、Raspberry Piが、SoftetherVPNサーバーも兼ねていますので、br0が今回使うインターフェイスです。

# vi /etc/default/isc-dhcp-server

で開いたこの部分を、実際に使うネットワークインターフェースの名前にします。

INTERFACES=""

INTERFACES="br0"

へ。(私の場合は、br0ですが、だいたいeth0です。)

次に、サービスの自動起動の設定をします。ここで、一つ問題があるようです。リブート後、サーバーのインターフェイスへのIPアドレス割り当てより先に、DHCPサーバーが起動してしまい、起動に失敗すると言うものです。

なので、この解決策として、サービスの起動を遅らせる方法があります。

# vi /etc/init.d/isc-dhcp-server

の、78行目、

case "$1" in
start)
test_config
log_daemon_msg "Starting $DESC" "$NAME"
start-stop-daemon --start --quiet --pidfile "$DHCPD_PID" \
--exec /usr/sbin/dhcpd -- \
-q $OPTIONS -cf "$DHCPD_CONF" -pf "$DHCPD_PID" $INTERFACES
sleep 2

if check_status -q; then
log_end_msg 0
else
log_failure_msg "check syslog for diagnostics."
log_end_msg 1
exit 1
fi
;;

の、

log_daemon_msg "Starting $DESC" "$NAME"

start-stop-daemon --start --quiet --pidfile "$DHCPD_PID" \

の間に、sleep 10をはさみます。つまり、以下のようになります。

case "$1" in
start)
test_config
log_daemon_msg "Starting $DESC" "$NAME"
sleep 10
start-stop-daemon --start --quiet --pidfile "$DHCPD_PID" \
--exec /usr/sbin/dhcpd -- \
-q $OPTIONS -cf "$DHCPD_CONF" -pf "$DHCPD_PID" $INTERFACES
sleep 2

if check_status -q; then
log_end_msg 0
else
log_failure_msg "check syslog for diagnostics."
log_end_msg 1
exit 1
fi
;;

保存します。

これで、ひとまず設定は終わりです。あとはサービスのスタートと、リブートしてのテストです。

この段階で、もし古いDHCPサーバ(ルータとか)の機能はオフにしておきましょう。

サービスをスタートします。

# service isc-dhcp-server restart

正常に起動しているか、以下のコマンドでチェックします。

# systemctl status -l isc-dhcp-server

システムログを見て、うまいこと行っているか確認

# tail -n 10 /var/log/messages

IPのリースログは、

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

で見ることができる。

最後に、リブートしてもうまく動くか確認。

# shutdown -r now

 

参考

http://raspi.ryo.sc/isc-dhcp/http://www.mugbot.com/2016/08/21/raspberry-pi%E3%81%ABisc-dhcp-server%E3%82%92%E8%A8%AD%E7%BD%AE%E3%80%81%E8%87%AA%E5%8B%95%E8%B5%B7%E5%8B%95%E3%81%95%E3%81%9B%E3%82%8B/http://ko-log.net/tech-log/archives/3986466.htmlhttp://ytooyama.hatenadiary.jp/entry/2016/04/02/193724http://m97087yh.seesaa.net/article/301813645.htmlhttp://www.homu.net/raspberry-pi%E3%81%A7iot%E3%81%AAit%EF%BC%9A%E8%B5%B7%E5%8B%95%E6%99%82dhcpcd%E3%81%AB%E3%82%88%E3%82%8B%E7%84%A1%E7%B7%9Alan%E3%82%A4%E3%83%B3%E3%82%BF%E3%83%BC%E3%83%95%E3%82%A7%E3%83%BC%E3%82%B9/

スポンサードリンク

-コンピュータ