UnixPower on Networking
  http://www.unix-power.net/

 
 Top - Linux - CentOS ISC-DHCP ( DHCPv6 )




■DHCPサーバによるIPv6アドレス管理

IPv6には元々RAを利用したアドレスの自動構成機能があります。IPv6のアドレス自動設定には2つのモードが存在します。ステートレスモードとステートフルモードです。

手法 割り当て内容  管理性 
RA  ・アドレスプレフィックス
・デフォルトゲートウェイ 
ステートレス 
DHCP  ・アドレスプレフィクス
・インターフェイスID
・DNSサーバ等の付加情報 
ステートフル 


ステートレスアドレスならIPv6同士がアドレスを割り当てることができるのでDHCPは不要です。ただ、DNSサーバ等のアドレスを割り当てたいとなると手動もしくは他の手法を考える必要があります。DNSサーバへの通信が一切不要ということであればステートレスでも問題ありませんがインターネットへ接続するとなるとDNSは必須となります。大半のノードにおいてはステートレスでは不十分ということになりDHCPサーバによるステートフルアドレスが必要ということになります。

■DHCPによるデフォルトゲートウェイの注意

DHCPv6ではDHCPサーバからDHCPクライアントに対してデフォルトゲートウェイを通知することができません。このため手動で設定するかRA等との連携が必要となります。IPv6のDHCPを構築する際の重要な注意ポイントです。

■DUID ( DHCP Unique Identifier )

DHCPサーバとDHCPクライアントの間にはDUIDという識別子があります。これを利用することにより特定のIPv6ノードに固有のIPを割り当てることができます。現在DUIDとして使用可能な識別子は以下の3種類です。どのDUIDを利用するかはそのノードに依存することになります。

項目 使用される値 
DUID  Macアドレス+時刻 
DUID-EN  IANAから割り当てられた企業No+企業独自のID 
DUID-LL  Macアドレス 


■RAパケットのMフラグとOフラグ

IPv6ノードがアドレスの自動構成を行うときはルータからRAを受信します。RAの中にはMフラグとOフラグと呼ばれるフラグがあります。その内容にしたがってIPv6ホストはDHCPからアドレスを取得するのかRAからアドレスを取得するのか判断します。

Mフラグ Oフラグ  モード アドレス取得先  ゲートウェイ  サーバ情報 
ON (1) ON (1)  ステートフルDHCPv6 DHCPv6 手動設定等  DHCPv6 
OFF (0) ON (1)  ステートレスDHCPv6 RA  RA  DHCPv6
ON (1)  OFF (0)  ステートフル DHCPv6  手動設定等  手動設定等
OFF (0) OFF (0)  ステートレス  RA  RA  手動設定等 


上記の中でも主流なのはステートレスDHCPv6となります。CiscoIOSではデフォルトはMフラグおよびOフラグの両者は0ですので最後の行が適用されています。これらを変更する場合、下記のように設定を行います。

interface FastEthernet0/0
 # Mフラグを1に設定する
 ipv6 nd managed-config-flag
 # Oフラグを1に設定する
 ipv6 nd other-config-flag


■DHCPv6の設定

ISC-DHCPを使ってDHCPv6を設定してみます。まずyumからインストールを行います。

# yum install dhcp
# rpm -qa | grep dhcp
dhcp-4.1.1-34.P1.el6.centos.i686
dhcp-common-4.1.1-34.P1.el6.centos.i686


/etc/dhcp/dhcpd6.confに設定を実施します。DHCPv6においても特定端末に固定IPをふることが可能です。IPv4においてはMacアドレスをもとに端末を識別し特定IPを割り振りますが、IPv6では上述のDUIDで端末を識別します。Windowsではipconfig /allで確認可能です。

# vi /etc/dhcp/dhcpd6.conf

# Syslog設定
log-facility local7;

# IPv6アドレスの厳密な有効時間を設定
default-lease-time 2592000;

# IPv6アドレスの奨励の有効時間を設定。default-lease-timeより短い必要がある
preferred-lifetime 604800;

# リース期間の更新を求める期間を指定
option dhcp-renewal-time 3600;

# リース期間の更新に失敗した場合、指定した期間経過後にIPアドレス再取得を要求
option dhcp-rebinding-time 7200;

# リースクエリ機能を許可する
allow leasequery;

# DNS関連の値を設定する
option dhcp6.name-servers 2001:db8::100,2001:db8::101;
option dhcp6.domain-search "unix-power.local";

# DHCPv6情報を更新するまでにクライアントが待機する時間の上限値
option dhcp6.info-refresh-time 21600;

# リースファイルを指定
dhcpv6-lease-file-name "/var/lib/dhcpd/dhcpd6.leases";

# IPv6のRangeの設定例
subnet6 2001:db8:0:0::/64 {
        range6 2001:db8:0:0::1000 2001:db8:0:0::1fff;
        # 固定IPアドレスを設定する場合の設定例
        host client {
                 host-identifier option dhcp6.client-id \
                 00:01:00:01:18:79:56:DF:FC:61:98:41:45:89;
                 fixed-address6 2001:db8::200;
        }
}


設定が完了すれば/etc/sysconfig/dhcp6でDHCPを受け付けるインターフェイスを指定します。

# vi /etc/sysconfig/dhcpd6

DHCPDARGS=eth0


そして以下のコマンドでdhcpd6を起動します。

# /etc/rc.d/init.d/dhcpd6 start
Starting dhcpd (DHCPv6):                                   [  OK  ]


Windows8からIPv6アドレスを自動取得に設定しDHCPからアドレスを取得してみました。リースファイルは確かに払いだされた記録が残っていますが、ログファイルにはリースログが全く記録されず原因不明です。ご存知のかた教えてください。




■DHCP-PD ( Prefix Delegation ) の設定

IPv6はアドレス空間が膨大なためIPアドレスを個別に割り当てるのではなく家庭用ルータなどには/64のネットワーク空間を割り当てることが可能となっています。そのようにすることにより家庭内IPv6ノードに全てのグローバルアドレスを設定することが可能になります。このようにIPv6ノードにプレフィックスを割り当てる方式をDHCP-PD方式と呼びます。以下、DHCP-PDの構成です。




DHCP-PDではIPの割り当てを必要とする1つ手前のノード ( 通常はルータ ) にDHCPv6サーバがアドレスプレフィックスを割り当てます。割り当てを受けたIPv6ノードはRAを利用して周辺のIPv6ノードとの間でアドレスの自動構成を行います。

DHCP-PDを実行するときの注意すべき点はプレフィックスを割り当てる場所です。DHCPサーバからルータに対して割り当てを行うときはLAN側インターフェイスに割り当てを行います。WAN側インターフェイスには通常管理者が手動設定するなどの手段を用いる必要があります。

ISC-DHCPでDHCP-PDを実施する際の設定例の抜粋が下記となります ( オプションなどは割愛 )。


subnet6 2001:db8::/64 {
        prefix6 2001:db8:1000:100:: 2001:db8:1000:200:: /64;
}


このときのDHCP-PDクライアント ( Ciscoルータ ) の設定は以下のようになります。


ipv6 unicast-routing
ipv6 cef

interface FastEthernet0
 ipv6 address FE80::1 link-local
 ipv6 address 2001:DB8::1/64
 # DHCP-PDクライアントとして設定する。PREFIXはFa1のPREFIXと紐づく
 ipv6 dhcp client pd PREFIX
!
interface FastEthernet1
 ipv6 address FE80::1 link-local
 # PREFIX部分をDHCPサーバから取得する
 ipv6 address PREFIX ::1/64
 # Oフラグを1にする
 ipv6 nd other-config-flag
 # DHCPのDiscoveryをリレーする
 ipv6 dhcp relay destination 2001:DB8::100 FastEthernet0


以下のコマンドでFa1にDHCPサーバからプレフィックスを取得で来てるのを確認します。

# show ipv6 int brief

FastEthernet0              [up/up]
    FE80::1
    2001:DB8::1
FastEthernet1              [up/up]
    FE80::1
    2001:DB8:1000:200::1


DHCPサーバ側には以下のログが記録されていました。下記はルータがDHCP-PDでプレフィックスを要求しDHCPから払い出されたときのログです。

dhcpd: Solicit message from 2001:db8::1 port 546, transaction ID 0x23D37000
dhcpd: Sending Advertise to 2001:db8::1 port 546
dhcpd: Request message from 2001:db8::1 port 546, transaction ID 0x2C3A7100
dhcpd: Sending Reply to 2001:db8::1 port 546
dhcpd: Relay-forward message from 2001:db8::1 port 547, link address 2001:db8:1000:200::1, \
peer address fe80::65dd:b676:3efa:adae




 関連記事
 ●DHCP Snoopingの設定
 Copyright(C) 2003-2015 UnixPower on Networking All rights reserved.