2014-02-05

特定のMACアドレスに対してIPv6アドレスを設定するDHCPv6サーバを構築した(2)-DHCPv6サーバの設定(1)

(今のところ)isc-dhcp-serverはdaemonとしてハンドリングしづらい
いきなりブチ切れに近い感じで。

  • 今回DHCPv6サーバにするのはLinux(Debian GNU/Linux)
  • ざっと持ち合わせてる知識だとwide-dhcpv6-server[1]かisc-dhcp-server[2]が良さそうなのだけど、wideの方はupstreamを見ても最後の更新が2009年なので使うのに気が引けてしまう(今はdibblerなのかな?)
  • かと言ってisc-dhcp-serverがDHCPv6サーバとしてハンドリングしやすいかと言えばそんな事は全くなく、パッチをあてる[3]のが一番てっとり早そうという泥沼
という事で、普通のDHCP(v4)サーバみたくハンドリングできるようにソースパッケージにパッチをあててビルドしますorz。

isc-dhcp-serverをビルド、インストール
まず、当てたいパッチが4.2.4向けなので、現状4.2.4なtesting/jessieまたはsidをapt-get sourceできるように以下の行をapt-lineに追加します。

deb-src http://ftp.jp.debian.org/debian/ jessie main non-free contrib
# apt-get update
# apt-get build-dep isc-dhcp=4.2.4-7
# apt-get install devscripts

# exit
$ mkdir build_isc
$ cd build_isc/
$ apt-get source isc-dhcp=4.2.4-7
で、[3]のMessage142のisc-dhcp-server-ipv6.patchをダウンロードしてきます。ここでは~/Downloadsに保存したものとして、
$ patch -u -p0 < ~/Downloads/isc-dhcp-server-ipv6.patch
(patching file・・・がずらずらーっと出ればOK)

$ cd isc-dhcp-4.2.4/
$ debuild -uc -us
$ su
$ cd ..
# dpkg -i isc-dhcp-server_4.2.4-7_amd64.deb isc-dhcp-common_4.2.4-7_amd64.deb
でビルドしたパッケージのインストールは完了。

isc-dhcp-serverの設定項目
今回はDHCP(v4)サーバは設定せず、DHCPv6サーバだけ動かすので、そのように書き換えます。/etc/default/isc-dhcp-serverの以下の場所を書き換え。
  • V4_ENABLED="true"を"false"へ
  • V6_ENABLED="false"を"true"へ
  • INTERFACES_V6=の行を"wlan0"へ(今回はwlan0でDHCPv6dを動かすので)
# touch /var/lib/dhcp/dhcpd6.leases

/etc/dhcp/dhcpd6.confを必要に応じて書き換える。
default-lease-time 2592000;
preferred-lifetime 604800;
option dhcp-renewal-time 3600;
option dhcp-rebinding-time 7200;
allow leasequery;
option dhcp6.info-refresh-time 21600;
dhcpv6-lease-file-name "/var/lib/dhcp/dhcpd6.leases";
# RAとか範囲とか(うちの場合はRTX1100で配っているRA)
subnet6 fd00:dead:beef::/64 {
 # 1000からffffまでをDHCPで配る対象にする
 range6 fd00:dead:beef::1000 fd00:dead:beef::ffff;
 # 固定IPアドレス
 host kurobox-t4 {
  host-identifier option dhcp6.client-id 00:03:00:06:00:16:01:xx:yy:zz;
  # 固定で振るIPv6アドレス
  fixed-address6 fd00:dead:beef::100;
 }
}
ここで固定アドレスを振る対象の行の最後のパラメータですが(最後3オクテットをぼかしてますが)、これが弊ブログの別エントリで触れているDUIDになります。
この時点では生成をミスるとまずいと思ったので、wide_mkduid.plというスクリプトを使って生成しました。端的に書くと、MACアドレスの前に「00:03:00:06:」を付与したDUID-LL(hardware typeは6(IEEE 802 Networks))です。まぁ後々これでも不味かったことを思い知るわけですが。
なお、dhcpd6.confの書き方は[4]を参考にさせていただきました。

このエントリはここまで。


[1] http://packages.qa.debian.org/w/wide-dhcpv6.html
[2] http://packages.qa.debian.org/i/isc-dhcp.html
[3] http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=592539

0 件のコメント:

コメントを投稿