ビットコイン・ブロックチェーン技術ブログ|合同会社ジャノム

ビットコイン・ブロックチェーン専門企業からの目線で、最新技術を一般の方に分かりやすく解説します

【設定メモ】Raspberry Pi 互換機 + Ubuntu + ISC DHCP を使ってIPアドレスの固定割当をする

文京区の新オフィスにインターネット回線が 8月13日(土)に漸く*1 開通したので、 社内ネットワークに接続する機器の管理の一環として、IPアドレスDHCPで自動的に割り当てるように設定したので、その時のメモです。

前提等

ルータの機能を使わない理由

インターネットに接続するため (PPPoE) に使っているNEC製のルータにDHCP機能がありますのでこれを利用しても良かったのですが、以下のような理由から断念しました。

  • 固定割当が20台までしか登録できない
  • 固定割当未登録機器に対するリース範囲と、登録済み機器の割当範囲を分けれない

二番目については、例えば固定割当未登録機器のリース範囲を 192.168.0.1 - 192.168.0.100 とした場合、 IPアドレス 192.168.0.110 に固定割当することが出来ない、ということです。 そうすると、割当しようとしたIPアドレスが既に他の機器で使われていて「うわぁ、まじか。。。」となってしまう可能性があります。

Raspberry Pi 互換機

中華製でラズパイと比べて値段も機能もいい感じのシングルボードコンピュータ(SBC)が手元にありましたので、今回はそれを使いました。

Orange Pi - Orange Pi Plus

その名もオレンジ・パイです!(ラズベリーじゃなくてw)

お値段39ドルでラズパイと変わらないのですが、ギガビットイーサ対応・オンボードの8GBフラッシュメモリがあるためSDカード不要・WiFiつき(これは Raspberry Pi 3 にもありますが)と、優れものです。

以前輸入した際に Ubuntu をインストールし、基本的な設定は終わらせていますので初期セットアップ手順は省略します。(といっても、Raspberry Pi とほぼ一緒ですが)

なお、以下の手順は Raspberry Pi でも同じ……というか Debian/Ubuntu なマシンならほぼ一緒だと思いますので、デバイス固有の情報は適宜読み換えてもらえればどの環境でもいけるでしょう。

設定手順

DHCP サーバのインストール

DHCP サーバの実装にはいくつか種類があるようですが、今回は ISC DHCP という実装を利用します。 APT でインストールできます。

$ sudo apt install isc-dhcp-server

設定ファイル編集

設定ファイルはお約束通り /etc/dhcp/dhcpd.conf にありますので、これを編集していきます。 セキュリティの関係上、一部省略 and/or マスクしている部分がありますが、概ねこんな感じです。

@@ -13,15 +13,15 @@
 ddns-update-style none;
 
 # option definitions common to all supported networks...
-option domain-name "example.org";
-option domain-name-servers ns1.example.org, ns2.example.org;
+option domain-name "office.janom.co.jp";
+option domain-name-servers 192.168.0.1, 8.8.4.4, 8.8.8.8;  # DNSサーバのアドレス。普通はルータのアドレスと一緒
 
 default-lease-time 600;
 max-lease-time 7200;
 
 # If this DHCP server is the official DHCP server for the local
 # network, the authoritative directive should be uncommented.
-#authoritative;
+authoritative;
 
 # Use this to send dhcp log messages to a different log file (you also
 # have to hack syslog.conf to complete the redirection).
@@ -30,6 +30,60 @@
 # No service will be given on this subnet, but declaring it helps the 
 # DHCP server to understand the network topology.
 
+subnet 192.168.0.0 netmask 255.255.255.0 {  # ネットワーク範囲を指定する
+       range 192.168.0.100 192.168.0.199;  # 未登録デバイスが接続された場合に割り当てられるIPアドレスの範囲
+       option routers 192.168.0.1;  # デフォルト・ゲートウェイ
+}
+
+# Network Devices.
+host router1 {  # ホスト名「router1」の設定
+       hardware ethernet 12:34:56:78:90:ab;  # MACアドレスを指定する
+       fixed-address 192.168.0.1;  # 割り当てたいIPアドレス
+}

(以下、同様に host 設定を記入していく)

 #subnet 10.152.187.0 netmask 255.255.255.0 {
 #}

続いて ISC DHCP サーバが有効となるインタフェースを /etc/default/isc-dhcp-server から指定します。 ここでは eth0 を指定しています。

# On what interfaces should the DHCP server (dhcpd) serve DHCP requests?
#       Separate multiple interfaces with spaces, e.g. "eth0 eth1".
INTERFACES="eth0"

DHCPサーバの固定IPアドレス設定

DHCPサーバ自体に対してもDHCPを使って固定IPアドレスをアサインすることも出来なくないようですが、 DHCPサーバが(設定ミス等で)うまく立ち上がらなかった場合にネットワークが繋がらなくなってしまったりといろいろと不都合があるようなので、 設定ファイルをいじってDHCPサーバ本体に固定アドレスを割り当てます。

お約束通り /etc/network/interfaces を編集しましょう。

# interfaces(5) file used by ifup(8) and ifdown(8)
# Include files from /etc/network/interfaces.d:
source-directory /etc/network/interfaces.d

auto lo
iface lo inet loopback

auto eth0
iface eth0 inet static
        address 192.168.0.2
        netmask 255.255.255.0
        gateway 192.168.0.1
        dns-search office.janom.co.jp

ルータのDHCP機能の停止

ルータのDHCP機能が有効になっていると競合してしまいますので、こちらはOFFにしましょう。 ルータの説明書等を見ながら機能を停止してください。

再起動

最後にDHCPサーバのOSを再起動します。 OSごと再起動する必要はないのかもしれませんが、念の為OSごと再起動しておきます。

必要に応じてルータやネットワークに接続する機器も再起動してください。

動作確認

接続してみる

適当なデバイス(スマホ・PC)で接続してみて、設定ファイルに書かれた通りのIPアドレスが割り当てられれば成功です。 うまく行かない場合には、記入したMACアドレスが間違っていないか、DHCPサーバは正しく起動しているか、他のDHCPがネットワーク上で稼働していないかなどを確認してください。

サーバ動作ログ

サーバの動作ログは /var/log/syslog に吐き出されます。

$ sudo cat /var/log/syslog | grep dhcpd | less

などして確認できます。

リースログ

IPアドレスのリースログは /var/lib/dhcp/dhcpd.leases にあります。 含まれるのは自動割当により割り当てられたもののみで、固定割当をしたものは含まれないようです。

未登録の機器を接続した場合にはこのログに割り当てられたIPアドレスMACアドレスが書かれますので、これをみながら設定を編集しましょう。

終わりに

さて、これで固定IPアドレスの割当設定はできたわけですが、いちいちIPアドレスなんて覚えていられないので、いずれローカル向けのDNSサーバをBINDで構築しようと思います。

他にもゲスト用のWiFiとかも置きたいですね……。

*1:紆余曲折あり、物件の契約から1ヶ月半かかりました……。