■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 |